我正在尝试制作一个猪游戏程序,在该程序中,用户输入要玩的总积分,然后与计算机玩家轮流玩,直到一个玩家达到总积分。对于人类来说,玩家掷骰子,如果掷骰子为2-6,则他们可以使用r再次掷骰或使用h保持。选择保持时,它将合计总点并转到下一轮。如果掷出1,则他们在该回合中获得0分,然后转到计算机回合。由于某些原因,当我选择按住h时,它会一直继续下去,而当它结束时,点数不会累加。不确定如何解决此问题 任何帮助都会被
static int pigRoll()
{
Random random = new Random();
int die1 = 0;
die1 = random.Next(1, 6);
Console.WriteLine($"You rolled {die1}");
return die1;
}
static double humanTurn()
{
double pointTotal = 0;
string gameSelect = null;
var pigDiceRoll = 0;
Console.WriteLine("It's your turn");
do
{
pigDiceRoll = pigRoll();
if (pigDiceRoll != 1)
{
Console.WriteLine("r to roll or h to hold (r/h)");
gameSelect = Console.ReadLine();
pointTotal = pointTotal + pigDiceRoll;
}
else if(pigDiceRoll ==1)
{
pointTotal = 0;
}
} while (gameSelect != "r" || pigDiceRoll != 1);
Console.WriteLine($"Your turn point total is {pointTotal}");
return pointTotal;
}
答案 0 :(得分:0)
while语句应为:
while (gameSelect == "r" && pigDiceRoll != 1)
这可以在用户想要再次滚动而他们没有滚动1时保持循环播放。
或者,您可以使用:
while (!(gameSelect != "r" || pigDiceRoll == 1))
两者在逻辑上是相同的,但第一个可能更易于阅读。