我对整个编程世界都很陌生。事实上,我现在正在上我的第一个编程课程。我们正在学习Java。当我试图解释我想要做什么时,请耐心等待。
在我们最近的任务中,我们被要求编写一个Craps游戏。规格如下:
射手掷两个骰子得到第一笔钱。 如果第一笔总和是2,3或12,则射手会失去 否则,如果第一笔总和为7或11,则射手获胜。 否则,第一笔金额就成了这一点。
现在一次又一次地滚动。 射手掷两个骰子以获得新的总和。 如果新的总和等于该点,则射手获胜。 否则,如果新的金额等于7,射手会失败。 否则射手会再次滚动。
我们对此作业的教训是使用if / else语句,do / while语句和编程随机函数。
我按程序编程:
//Declare
Random randomizer;
//Instantiate
randomizer = new Random();
//Generate dice number
int number = randomizer.nextInt(10) + 2;
//Loop
if ((number) == 2 || (number) == 3 || (number) == 12) {
System.out.println("Sorry, you rolled a " + number + ". You lose.");
number = randomizer.nextInt(10) + 2;
} else {
if ((number) == 7 || (number) == 11) {
System.out.println("Congratulations! You rolled a " + number + ". You win!");
} else {
if ((number) != 2 || (number) != 3 || (number) != 7 || (number) != 11 || (number) != 12) {
System.out.println("The number you rolled is a " + number + ". This is your point.")}
}//Ending bracket of loop
}//Ending bracket of method main
根据说明书,程序需要保留稍后参考点的值。我希望这种情况发生的方式是在最后一次之后编程" if"该输出的部分(无论是4,5,6,8,9或10)变为变量,以便我能够在第二个if / then循环中引用该程序的第二部分。所以,基本上我需要程序来识别第二部分的输出是否等于射手获胜的第一部分输出的变量。
我还需要知道如何对其进行编程,以便在没有满足这些条件的情况下射手继续滚动。
我知道要求很多,我希望我能够很好地解释它。非常感谢提前!
答案 0 :(得分:0)
嗯,首先要做的事情。关于你的代码的一个突出的问题是:
((number) == 2 || (number) == 3 || (number) == 12)
虽然不是错误,但是你用括号括起你的参数的方式是完全没必要的。您自己将变量number
分组,这不会做任何事情。你实际上是在说,"将number
与自己组合在一起"。相反,试试这个:
((number == 2) || (number == 3) || (number == 12))
虽然这里的括号也不是必须的(操作顺序将确保它正常工作),但它仍然是良好的形式。在上面的情况下,您会说:"在评估或者"之前将number
与这些数字进行比较,这就是您想要的。
接下来,正如@JB Nizet上面所说,你想要滚动两个六面模具,然后将它们加在一起。可能性不同。
根据您的要求,您需要做的是保存最后的结果并将其与下一卷进行比较,对吗?所以你想要做的是保存第一次滚动的价值,评估它,然后保存它。简单。这里有一些应该有用的伪代码:
finalSum = -1;
while( we are not done) {
roll1
roll2
tempSum = roll1 + roll2
do all the ifs
check to see if finalSum is -1, modify if's to account for that
finalSum = tempSum
determine if we're done looping, make sure loop breaks
}
将finalSum设置为循环中的(next)最后一个语句,然后根据新的roll进行检查。如果它是-1,你知道这是你的第一次滚动,你可以忽略它。
希望这有帮助!