循环冻结

时间:2016-10-24 15:26:54

标签: java while-loop freeze

我目前正在制作纸质摇滚剪刀游戏,与电脑对战。控制谁达到最高分的我的循环一直在冻结。我希望下面的方法不易阅读并且有足够的信息。基本上当我玩游戏并尝试移动时,程序就会冻结。我没有使用while循环尝试了该程序,它运行正常。我做到了所以每一步都是一个数字。 0表示岩石,1表示剪刀,2表示纸张。方法computerPlayer.newChoice();是来自另一个类的随机生成的数字。

public void newChoice() {
    while (humanS < 3 && computerS < 3) {
        computerPlayer.newChoice();

        if (playerChoice == 0) {
            viewer.jLblHumanM.setText("Sten");
            if (computerPlayer.choice == 0) {
                viewer.jLblComputerM.setText("Sten");

            } else if (computerPlayer.choice == 1) {
                HScore += 1;
                viewer.jLblComputerM.setText("Sax");
                viewer.jLblHumanS.setText("" + HScore);
            } else if (computerPlayer.choice == 2) {
                CScore += 1;
                viewer.jLblComputerM.setText("Påse");
                viewer.jLblComputerS.setText("" + CScore);
            }
        } else if (playerChoice == 1) {
            viewer.jLblHumanM.setText("Sax");
            if (computerPlayer.choice == 0) {
                HScore += 1;
                viewer.jLblComputerM.setText("Sten");
                viewer.jLblHumanS.setText("" + HScore);

            } else if (computerPlayer.choice == 1) {
                viewer.jLblComputerM.setText("Sax");

            } else if (computerPlayer.choice == 2) {
                HScore += 1;
                viewer.jLblComputerM.setText("Påse");
                viewer.jLblHumanS.setText("" + HScore);
            }
        } else if (playerChoice == 2) {
            viewer.jLblHumanM.setText("Påse");
            if (computerPlayer.choice == 0) {
                viewer.jLblComputerM.setText("Sten");
                HScore += 1;
                viewer.jLblHumanS.setText("" + HScore);
            } else if (computerPlayer.choice == 1) {
                viewer.jLblComputerM.setText("Sax");
                CScore += 1;
                viewer.jLblComputerS.setText("" + CScore);
            } else if (computerPlayer.choice == 2) {
                viewer.jLblComputerM.setText("Påse");
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你有太多的变数。 humanS和HScore以及compterS和CScore似乎是重复的,也是你问题的根源。

while(humanS < 3 && computerS < 3){

这应该是

while(HScore < 3 && CScore < 3){