Как заставить кости продолжать перебрасывать и печатать до тех пор, пока они не наберут «7» или «точку» - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь построить игру в крэпс, в которой компьютер автоматически бросает пару костей, и если выпадение 7 или 11, выигрывает пользователь.Однако, если пользователь бросает 2, 3 или 12, они автоматически проигрывают.

Кроме того, если пользователь выбрасывает любое другое число (4, 5, 6, 8, 9, 10), которое является его «точкой», и он должен попытаться повторить эту точку снова.(если они не выбрасывают 7, то они проигрывают.) Я пытаюсь заставить свой цикл while продолжать катиться, если компьютер катит число, отличное от 7 или «точку»

К сожалению, мой цикл не работает ион не продолжает перекатываться.

Заранее спасибо, и это мой код:

это то, что у меня сейчас:

public class CrapsPractice{
    public static void main(String[]args){   

        int d1 = (int) (6 * Math.random() + 1);
        int d2 = (int) (6 * Math.random() + 1);
        int roll = (d1 + d2);
        int point = roll; 

        if (roll == 7 || roll == 11) 
        {
            System.out.println("You rolled a" + roll); 
            System.out.println("Congrats! You've immediately won!");
            return; //terminate the main function
        }

        else if (roll == 2 || roll == 3 || roll == 12)
        {
            System.out.println("you rolled a " + roll);
            System.out.println("You lose!");
            return; //terminate the main function
        }

        //do-while loop: execute and then check for condition
        //and then if condition holds, execute a second time and so on
        do {
            int d3 = (int) (6 * Math.random() + 1);
            int d4 = (int) (6 * Math.random() + 1);
            roll = d3 + d4;

            System.out.println("your point is" + point);

        } while(roll != 7 && roll != point );
    }
}

1 Ответ

0 голосов
/ 24 сентября 2019

Ваш код работает для меня, но попробуйте эти распечатки, чтобы лучше понять, что происходит:

//do-while loop: execute and then check for condition
//and then if condition holds, execute a second time and so on
do {
    int d3 = (int) (6 * Math.random() + 1);
    int d4 = (int) (6 * Math.random() + 1);
    roll = d3 + d4;

    System.out.println("your roll is " + roll + " and point is " + point);

} while(roll != 7 && roll != point );

if (roll == 7) 
    System.out.println("you lose");
else
    System.out.println("you win");

Вывод:

your roll is 6 and point is 9
your roll is 4 and point is 9
your roll is 3 and point is 9
your roll is 8 and point is 9
your roll is 8 and point is 9
your roll is 6 and point is 9
your roll is 9 and point is 9
you win
BUILD SUCCESSFUL (total time: 0 seconds)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...