如何使计数器在Java中保持不变?

时间:2015-11-12 03:31:26

标签: java jframe counter jlabel dice

我正在做一个基于滚动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());
                    } 
                }
            });

3 个答案:

答案 0 :(得分:1)

骰子宣言:

Dice throwDice = new Dice();

actionPerformed()中,这意味着每次调用该函数时都会创建它。

将声明移至Game,即。使它成为游戏的属性,你应该没事。

您可以安全地Dice::scoreDice::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)