有条件的挑战

时间:2016-12-12 22:54:32

标签: java user-interface netbeans dice

您好我是Java新手,这就是我要做的事情: 我必须制作一个点游戏,我不会发布整个事情,因为它是无关紧要的。有两个diсes,一个有6个边,另一个有9个边。这就是我遇到的问题:

如果您在一轮中至少掷5次双6,则会发生以下情况:

  • 骰子随机滚动次数(10至30次)

  • 所有这些骰子卷的累积产品都会添加到银行

我真的不明白这里的措辞,除了这部分我完成了整个程序。这就是我所做的:

if (ninedice == 6 && sixdice == 6 >= 5){
    ninedice = (int) Math.ceil(Math.random () * (30-10)+ 10);
    sixdice = (int) Math.ceil(Math.random () * (30-10)+10);
    accountpoints = ninedice+sixdice;
}

这显然是不正确的,我没有得到理想的结果,因为它不会随机滚动模具,也不会在帐户中添加点数。任何帮助都非常感谢,并感谢您的到来!

3 个答案:

答案 0 :(得分:1)

你想要更像这样的东西:

rollDice();

if (nineDice == 6 && sixDice == 6)
{
  myDiceCondition++;
}

if (myDiceCondition >= 5)
{
  // get random number between 10 and 30
  // loop for that amount
    // roll both dice
    // add to account balance?
}

答案 1 :(得分:1)

您的if语句评估为:(true / false&& true / false> = 5)。你需要将5与int进行比较。你是否记录了双6的滚动次数?这样的事情应该有效:

public static void diceExample(){

    int ninedice, sixdice, accountpoints, rolledDoubleSix;

    if (ninedice == 6 && sixdice == 6) {
        rolledDoubleSix++;
    }

    if (rolledDoubleSix == 5){
        ninedice=(int)Math.ceil(Math.random () * (30-10)+ 10);
        sixdice=(int)Math.ceil(Math.random () * (30-10)+10);
        accountpoints = ninedice+sixdice;

    }
}

答案 2 :(得分:1)

所以你在正确的轨道上,但还没到那里。 if语句条件应该只是if (ninedice == 6 && sixdice == 6)。不需要>= 5部分。此if语句表示是否指示每个die的第一个roll在6中重新发送。但是,if语句主体有一些逻辑问题。 这段代码,

ninedice = (int) Math.ceil(Math.random () * (30-10)+ 10);
sixdice = (int) Math.ceil(Math.random () * (30-10)+10);

生成两个骰子再次滚动的次数。但是,ninedicesixdice代表第一个卷,因此不要覆盖它们。替换为,

int ninedicerolls = (int) Math.ceil(Math.random () * (30-10)+ 10);
int sixdicerolls = (int) Math.ceil(Math.random () * (30-10)+10);

现在保留一个产品变量来跟踪每个模具的每个卷筒,

int ninediceproduct = ninedice;
int sixdiceproduct = sixdice;
while(ninediceproduct > 0){
    ninediceproduct *= (int) Math.ceil(Math.random () * (9-1)+ 1);
    ninediceproduct--;
}
while(sixdiceproduct > 0){
    sixdiceproduct *= (int) Math.ceil(Math.random () * (6-1)+ 1);
    sixdiceproduct--;
}

然后,将产品相乘,

int cumulative = sixdiceproduct * ninediceproduct;