掷骰子游戏陷入循环

时间:2019-11-08 01:18:29

标签: c#

我正在尝试制作一个猪游戏程序,在该程序中,用户输入要玩的总积分,然后与计算机玩家轮流玩,直到一个玩家达到总积分。对于人类来说,玩家掷骰子,如果掷骰子为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;
}

1 个答案:

答案 0 :(得分:0)

while语句应为:

while (gameSelect == "r" && pigDiceRoll != 1)  

这可以在用户想要再次滚动而他们没有滚动1时保持循环播放。

或者,您可以使用:

while (!(gameSelect != "r" || pigDiceRoll == 1))

两者在逻辑上是相同的,但第一个可能更易于阅读。