编辑(4/3/2017):对不起,当时我是一个noob。Java:基于回合的战斗系统(与gui)
我正在尝试做一个基于回合的战斗系统,玩家点击轮到他的按钮。但我似乎无法找到如何编码它。以下是我所做的代码。
这里应该发生的事情是,当我点击攻击按钮时(例如),下一回合将是怪兽轮回,但是当我点击按钮时,playerTurn变量不会改变。 playerTurn总是如此。你能帮我解决这个问题吗?这是一个回合制战斗系统。
public class BattleFrame extends JFrame implements ActionListener, Runnable {
private JButton atkButton = new JButton("Attack");
private JButton runButton = new JButton("Run");
private JButton itemButton = new JButton("Item");
private JButton magicButton = new JButton("Magic");
private JPanel panelButtons = new JPanel();
private Random rand = new Random();
private Boolean playerTurn;
private Thread t;
public BattleFrame() {
setSize(480, 390);
setLayout(null);
// I have not included the code with the setting of the JButtons
initPanel(); // initialize the panel with buttons
setResizable(false);
setVisible(true);
playerTurn = true;
t = new Thread(this);
t.start();
}
// I'm not so familiar with 'synchronized' but I tried it here but it doesn't change anything
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if(src.equals(atkButton) && playerTurn) {
System.out.println("Attack!");
playerTurn = false;
}
else if(src.equals(runButton) && playerTurn) {
System.out.println("Run!");
playerTurn = false;
}
else if(src.equals(itemButton) && playerTurn) {
System.out.println("Item");
playerTurn = false;
}
else if(src.equals(magicButton) && playerTurn) {
System.out.println("Magic");
playerTurn = false;
}
}
public void run() {
while(true) {
if(playerTurn == false) {
System.out.println("Monster's turn!"); // just printing whose turn it is
playerTurn = true;
}
else System.out.println("player's turn!");
}
}
public static void main(String[] args) {
new BattleFrame();
}
}
你的问题是如此之广。尝试更多,并尝试提出点问题的详细问题 – kommradHomer 2012-04-06 12:45:34
你怎么知道变量不会改变?也许你因为输出的速度而无法看到变化? – maialithar 2012-04-06 12:46:46
因为当你点击按钮变量应该改变,但从来没有我已经得到它,我宣布一个布尔值不布尔,并且我正在使用a == b而不是a.equals(b),所以我改变布尔值为布尔值 – Zik 2012-04-06 13:51:46