无法找出做出此决定的正确方法

时间:2018-11-05 20:49:09

标签: java dice

我正在尝试编写骰子游戏,不知道下一步该怎么做。这是我的代码

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 :(得分:0)

do / while循环具有延续条件。目前,您的循环将继续进行,直到达到total,此时用户将获胜:

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

要处理硬编码的13,请将&& roll != 13添加到延续条件:

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

但是,现在您需要弄清楚循环结束的原因-是赢还是输。您可以在循环外将roll13进行比较,以做出决定:

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

答案 1 :(得分:0)

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

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