我正在做一个基于滚动7或11(骰子)得分的骰子游戏。游戏记录下注和得分。如果满足条件,则当前分数应加到下注金额的3倍。但是,分数仅在第一个实例中更改条件,然后通过任何其他滚动尝试保持相同。我试图将我的getter和setter设置为静态,但这不起作用。我该怎么做才能使我的计数器正常工作?
程序:
public Game() {
final Dice throwDice = new Dice();
//Roll Dice
rollDice.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
throwDice.PairOfDice();
diceResult.setText("You rolled: " + throwDice.getDie1() +
" + " + throwDice.getDie2() +
" = " + throwDice.getTotal());
currentScore.setText("Score: $" + throwDice.getScore());
if(throwDice.getTotal() == 7 || throwDice.getTotal() == 11) {
throwDice.setScore(Integer.parseInt(input.getText()) * 3);
currentScore.setText("Score: $" + throwDice.getScore());
}
}
});
答案 0 :(得分:1)
骰子宣言:
Dice throwDice = new Dice();
在actionPerformed()
中,这意味着每次调用该函数时都会创建它。
将声明移至Game
,即。使它成为游戏的属性,你应该没事。
您可以安全地Dice::score
,Dice::getScore()
和Dice:setScore(int)
非静态。
更新:鉴于仍有问题,或许可以尝试更换:
throwDice.setScore(Integer.parseInt(input.getText()) * 3);
使用:
throwDice.setScore(throwDice.getScore() + (3 + throwDice.getBet()));
答案 1 :(得分:0)
你需要移动
Dice throwdice = new Dice`
启动代码,以便每次进入actionperformed
时都不会调用它答案 2 :(得分:0)
在你的问题中你说:
当前分数应加到下注金额的3倍
您没有添加到当前分数。您每次只将得分设置为下注金额的3倍。因此,价值不会改变(当然,除非您更改下注金额)。
throwDice.setScore(Integer.parseInt(input.getText()) * 3)
相反,您需要将其添加到当前分数中:
throwDice.setScore(throwDice.getScore() + Integer.parseInt(input.getText()) * 3)