有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

游戏Java随机生成器与立方体,而如果做而

可爱的人们, 我被我的java程序卡住了。如果我运行我的程序,它就不能正常工作。如果computerSpeler抛出1或2x1,则应轮到Menspeler。我的程序有什么问题

import java.util.Random;

public class Spel {
    private EgbertComputerSpeler computerSpeler;
    private MensSpeler mensSpeler;
    private boolean mensSpelerBegint;
    public static final int HET_SPEL_IS_UIT_SCORE = 100;
    private int dobbelsteen1;
    private int dobbelsteen2;
    private Random generator = new Random();
    private int scoreComputer;
    private int scoreMens;
    private int worpen;
    private int beurt;

    public Spel() {
        computerSpeler = new EgbertComputerSpeler(HET_SPEL_IS_UIT_SCORE);
        mensSpeler = new MensSpeler(HET_SPEL_IS_UIT_SCORE);

        mensSpelerBegint = generator.nextBoolean();
    }

    public void dobbel() {
        dobbelsteen1 = generator.nextInt(6) + 1;
        dobbelsteen2 = generator.nextInt(6) + 1;

        worpen = worpen + 1;
        beurt = beurt + dobbelsteen1 + dobbelsteen2;
    }

    public void speelSpel() {
        while (scoreMens <100 || scoreComputer < 100) {
            if (mensSpelerBegint) {
                do {
                    dobbel();

                    if (dobbelsteen1 == 1 && dobbelsteen2 == 1) {
                        scoreMens = scoreMens + 25 ;
                        mensSpelerBegint = false;
                    }

                    else if (dobbelsteen1 == 1 || dobbelsteen2 == 1) {
                        scoreMens = scoreMens + 0 ;
                        mensSpelerBegint = false;}
                } while (mensSpeler.wilGooien(false, worpen,
                                              scoreMens, scoreComputer));

                scoreMens = beurt + scoreMens;
                worpen = 0;
                beurt = 0;
            }

            else {
                do {
                    dobbel();

                    if (dobbelsteen1 == 1 && dobbelsteen2 == 1) {
                        scoreComputer = scoreComputer + 25;
                        mensSpelerBegint = true;}

                    else if (dobbelsteen1 == 1 || dobbelsteen2 == 1) {
                        scoreComputer = scoreComputer + 0;
                        mensSpelerBegint = true;}
                } while (computerSpeler.wilGooien(false, worpen,
                                                  scoreMens, scoreComputer));

                scoreComputer = beurt + scoreComputer;
                worpen = 0;
                beurt = 0;
            }
        }
    }
}

谢谢


共 (1) 个答案

  1. # 1 楼答案

    您的问题是代码基本上是这样工作的(假设我正确理解代码)

    if turn == player:
        while player wants to continue:
            if bad stuff:
                turn = computer
    else
        ....
    endif
    

    是的,您正在将其设置为计算机的轮到,但它仍然卡在do-while循环中,直到wilGooien设置为false

    您需要做的是break;除了将其设置为计算机的轮次之外,还将其移出循环