не могу понять правильный способ принять это решение - PullRequest
0 голосов
/ 05 ноября 2018

Я работаю над кодированием игры в кости и не знаю, куда идти дальше. Это код, который у меня есть

total = roll();

if(total == 9 || total == 11 || total == 18 || total == 24)
{   
    System.out.println("You win");
}else if(total == 6 || total == 12 || total == 13 || total == 17 || total == 19 || total == 23 )
{
    System.out.println("You lose");
}else
{
    int gn = total;
    System.out.println("You goal number is now " + gn);

    do{
        roll = roll();

    }while(roll != gn);

    System.out.println("You win");

}

public static int roll()
{
    Random rand = new Random();

    int die1 = rand.nextInt(6) + 1;
    int die2 = rand.nextInt(6) + 1;
    int die3 = rand.nextInt(6) + 1;
    int die4 = rand.nextInt(6) + 1;
    int total = die1 + die2 + die3 + die4;

    System.out.println("You rolled " + total);

    return total;
}

Если пользователь не выбрасывает выигрышное число (9, 11, 18 или 24) или проигрышное число (6, 12, 13, 17, 19 или 23), то это число становится вашей целью, и вы должны бросить пока вы не получите этот номер снова или пока вы не бросите 13 и проиграете.

У меня это работает, пока не будет достигнут номер цели, но я не знаю, как остановить его, если бросается 13.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018
do {
    roll = roll();
} while(roll != gn && roll != 13);

System.out.println("You " + (roll == 13)?"lose":"win");
0 голосов
/ 05 ноября 2018
Петли

do / while имеют условие продолжения. В настоящее время ваш цикл будет продолжаться до тех пор, пока не будет достигнут total, после чего пользователь выигрывает:

do {
    roll = roll();
} while(roll != gn);

Чтобы иметь дело с жестко закодированным 13, добавьте && roll != 13 к условию продолжения:

do {
    roll = roll();
} while(roll != gn && roll != 13);

Однако теперь вам нужно выяснить, почему цикл закончился - из-за победы или из-за проигрыша. Вы можете сравнить roll с 13 вне цикла в условии, чтобы принять это решение:

System.out.println("You " + (roll != 13 ? "win" : "lose"));
...