Я пытаюсь сделать текстовую RPG и задать вопрос о том, как продолжить диалог истории (я все еще довольно новичок в Java).Как продолжить диалог игры, нажав кнопку?
Я хочу изменить содержимое текстовой области, нажав кнопку, чтобы диалог продолжался каждый раз, когда вы нажимаете кнопку.
Например, если есть диалоговое окно, как это,
Здравствуйте. Я никогда не видел твоего лица раньше.
Вы похожи на авантюриста.
Итак, вы также пришли, чтобы убить этого волшебника?
Я хочу отображать эти тексты один за другим, а не сразу.
Вот мой код:
package test;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
import java.awt.Container;
import javax.swing.*;
public class Dialogue extends JFrame implements ActionListener
{
//Window
JFrame window;
Container con;
//Font
Font basicfont;
Font bigfont;
Font timesnewroman;
//Main game screen
JPanel storyP;
JPanel inputP;
JPanel enterP;
//Main game screen Panel 3
JTextArea storyT;
//Main game screen Panel 5
JLabel inputA;
JTextField input;
JButton enterB;
public static void main(String[]args)
{
Dialogue game = new Dialogue();
game.setup();
}
public void setup()
{
window = new JFrame();
window.setBounds(0,0,1200,950);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.getContentPane().setBackground(Color.black);
window.setLayout(null); //Disabling the default layout.
window.setVisible(true);
basicfont = new Font("MS Gothic", Font.PLAIN, 24);
bigfont = new Font("MS Gothic", Font.BOLD, 28);
con = window.getContentPane();
// Panel Setup
storyP = new JPanel(); //This is where story text is displayed.
storyP.setBounds(50, 500, 800, 320);
storyP.setBackground(Color.white);
storyP.setLayout(new GridLayout());
inputP = new JPanel();
inputP.setBounds(50, 830, 500, 50);
inputP.setBackground(Color.black);
inputP.setLayout(new BorderLayout());
//p5.setLayout(new GridLayout());
enterP = new JPanel();
enterP.setBounds(600, 830, 120, 50);
enterP.setBackground(Color.black);
//STORY TEXT SETUP
storyT = new JTextArea();
storyT.setFont(basicfont);
storyT.setBackground(Color.black);
storyT.setForeground(Color.white);
storyT.setEditable(false);
//INPUT BOX SETUP
inputA = new JLabel(">");
inputA.setBackground(Color.black);
inputA.setForeground(Color.white);
inputA.setFont(bigfont);
input = new JTextField(15);
input.setBackground(Color.black);
input.setForeground(Color.white);
input.setBorder(null);
input.setFont(bigfont);
input.addActionListener(this);
enterB = new JButton("ENTER");
enterB.setFont(timesnewroman);
enterB.addActionListener(this);
//ADDING
storyP.add(storyT);
inputP.add("West",inputA);
inputP.add(input);
enterP.add(enterB);
//VISIBILITY
con.add(storyP);
con.add(inputP);
con.add(enterP);
Opening();
}
public void Opening()
{
storyT.setText("Hello. I have never seen your face before.");
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==enterB)
{
storyT.setText("You look like an adventurer.");
}
}
}
Я мог бы изменить текст из «Здравствуйте, я никогда не видел ваше лицо, прежде чем» на «Ты выглядишь как авантюрист», нажав кнопку, которую я создал ENTER.
Но я не знаю, как идти дальше (чтобы отобразить «Так вы также пришли, чтобы убить этого волшебника?») С этого момента, так как действие моего элемента ENTER назначено для отображения определенного текста («Вы похожи на авантюрист ").
Я даже не знаю, где написать третью строку, чтобы она еще не была написана в этом коде.
Вы можете использовать массив строк, который содержит весь разговор. Чем просто прокручивается, когда пользователь нажимает кнопку ввода. Вы можете использовать счетчик, чтобы переключиться на следующий бит в разговоре или какой-нибудь другой умный метод. – CSCH
Да, это один из способов сделать это. Спасибо за информацию :-) – Ryi