我希望游戏继续循环,直到GameOver
为假。
我曾经用if做过但游戏并没有真正循环,所以我使用了while语句。但是在我尝试编译之后,JFrame
根本就不会出现!事实上没有出现。
关于如何解决此问题的任何可能的解决方案?
public void game() {
while (GameOver != true) {
ATT1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (b.Death == false) {
a.Att1(b, Fireball);
} else {
a.Att1(c, Fireball);
}
}
});
ATT2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (b.Death == false) {
a.Att2(b, Fireball);
} else {
a.Att2(c, Fireball);
}
}
});
}
}
答案 0 :(得分:2)
最有可能的是,如果你检查一下系统统计信息,CPU使用率图表会直接飞向天空吗?
这是因为您正在启动一个长时间运行的循环,其中没有耗时的操作,导致在短时间内执行多次(因此CPU负载)。我打赌你从另一个动作监听器中调用game()
对吗? (也许在按下“开始游戏”按钮后)
我认为由于缺乏基于Swing的应用程序如何工作的知识,您的GUI代码方法是错误的。由于引入了并发性,它与结构编程有很大的不同和复杂性。您正在阻止EDT(假设GUI线程)导致帧未正确绘制。
首先阅读Oracle指南,了解如何构建可在此处找到的Swing应用程序:https://docs.oracle.com/javase/tutorial/uiswing/