我正在研究一个简单的GUI项目,以获取Java Swing的基础。我创建了一个Rock Paper Scissors游戏,您可以在针对我的GUI的计算机上玩游戏]
My text based GUI Form for Rock, Paper,Scissors
我的问题是,一旦我的分数或计算机分数达到3的值,我都希望框架上的文本发生变化。我尝试实现代码以检查按钮函数中变量每次增加的时间,但仍然无法正常工作,主要功能的实现也不起作用,一旦得分达到3,游戏就不会更改任何文本或停止播放。
chooseRock.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String cc = getCompChoice(); if (cc.equalsIgnoreCase("Paper")) { compcount++; if(compcount == 3){ winner.setText("Computer Wins"); } compChoice.setText("Computers Choice: " + cc);
此代码显示了GUI对象和用于选择“ Rock”的侦听器,对于纸质和剪刀来说,代码都是相同的。 compchoice和playchoice都在顶部声明了其他属性。
gameScreen(String title){ super(title); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setContentPane(gameBoard); this.pack(); chooseRock.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String cc = getCompChoice(); if (cc.equalsIgnoreCase("Paper")) { compcount++; compChoice.setText("Computers Choice: " + cc); compScore.setText("Computer Score: " + compcount); } else if (cc.equalsIgnoreCase("Scissors")) { playcount++; compChoice.setText("Computers Choice: " + cc); playerScore.setText("Your Score: " + playcount); } else { compChoice.setText("Computers Choice: " + cc + " Its a DRAW!"); } } });
这是我编写的用于检查分数并显示获胜者的功能,“获胜者”文本显示在面板顶部并带有占位符。
public void checkScore(){ if(playcount == 3 ){ winner.setText("GAME OVER - PLAYER WINS"); chooseRock.setEnabled(false); chooseScissors.setEnabled(false); choosePaper.setEnabled(false); }else if(compcount == 3 ){ winner.setText("GAME OVER - COMPUTER WINS! BETTER LUCK NEXT TIME"); chooseRock.setEnabled(false); chooseScissors.setEnabled(false); choosePaper.setEnabled(false); } }
有没有办法接受写在侦听器内部的变量,并使用它来更改文本字段,或者是否应该采用类似的方式来实现这种条件?
我正在研究一个简单的GUI项目,以获取Java Swing的基础。我创建了一个Rock Paper Scissors游戏,您在计算机上玩该游戏,该计算机为基于我的文本的GUI窗体实现了GUI ...
您应该在ActionListeners actionPerformed方法中调用checkScore()
,以便在每次按下按钮时就计算分数并采取行动。