我和朋友正在为大学项目制作基于GUI的数学游戏。我们陷入了一个特定的境界。我们在屏幕上显示两个等式,用户可以选择第一个等式是小于,大于还是等于第二个等式。我们希望这发生10次。因此,每当用户选择3个选项中的一个时,必须显示接下来的两个方程式。在第一次迭代中,两个方程式显示,您可以选择答案。完成此操作后,方程式保持不变,您可以无限制地单击3个按钮中的任何一个而不更改方程式或按下10个按钮后循环结束。有三种不同的游戏可供选择,在第一种语句中选择。这两个语句在主GUI方法中运行(声明和创建所有按钮):
calcEquations();
gameCount++;
这些发生在按钮处理程序和计算两个方程的额外方法中。
private class ButtonHandler extends JFrame implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
if(event.getSource() == backButton)
{
gameScreenFrame.dispose();
GameSelectGUI gameSelectGUI = new GameSelectGUI();
gameSelectGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gameSelectGUI.setSize(gameScreenFrame.getSize());
gameSelectGUI.setLocation(gameScreenFrame.getLocation());
gameSelectGUI.setVisible(true);
}
while(gameCount < 10)
{
if(event.getSource() == smallButton)
{
// gameScreenFrame.dispose();
// ResultsGUI resultsGUI = new ResultsGUI();
// resultsGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// resultsGUI.setSize(gameScreenFrame.getSize());
// resultsGUI.setLocation(gameScreenFrame.getLocation());
// resultsGUI.setVisible(true);
calcEquations();
gameCount++;
if(eq1 < eq2)
{
System.out.println("Smaller Correct");
}
}
if(event.getSource() == equalButton)
{
// gameScreenFrame.dispose();
// ResultsGUI resultsGUI = new ResultsGUI();
// resultsGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// resultsGUI.setSize(gameScreenFrame.getSize());
// resultsGUI.setLocation(gameScreenFrame.getLocation());
// resultsGUI.setVisible(true);
calcEquations();
gameCount++;
if(eq1 == eq2)
{
System.out.println("Equal Correct");
}
}
if(event.getSource() == largeButton)
{
// gameScreenFrame.dispose();
// ResultsGUI resultsGUI = new ResultsGUI();
// resultsGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// resultsGUI.setSize(gameScreenFrame.getSize());
// resultsGUI.setLocation(gameScreenFrame.getLocation());
// resultsGUI.setVisible(true);
calcEquations();
gameCount++;
if(eq1 > eq2)
{
System.out.println("Larger Correct");
}
}
}
}
}
public void calcEquations()
{
if(game == 'A')
{
AccuracyGame objGame = new AccuracyGame(gameLvl, gameType);
eq1 = objGame.Equation();
eq1Str = objGame.toString();
eq2 = objGame.Equation();
eq2Str = objGame.toString();
eqOneLabel.setText(eq1Str);
eqTwoLabel.setText(eq2Str);
}
}
它允许你回答一次,然后它显示一组新的方程式,但此时3个按钮都不起作用。我们在按钮中添加了一个输出,以便在控制台中显示发生的情况,并显示按下按钮一次回答所有10个问题。有没有办法阻止程序一次运行所有10个,并允许我们点击一次来回答每组方程?
答案 0 :(得分:0)
目前,您的calcEquations
方法是从while循环调用的,直到gameCount
为10.删除while循环以调用仅运行一次。例如:
...
if(gameCount < 10)
{
if(event.getSource() == smallButton)
...