c# - 掷骰子游戏陷入循环
问题描述
我正在尝试为猪游戏制作一个程序,其中用户输入一个总分来玩,然后轮流与计算机玩家一起玩,直到一个玩家达到总分。对于人类回合,玩家滚动,如果他们滚动 2-6,那么他们可以使用 r 再次滚动或使用 h 保持。when hold is selected it adds up the total points and goes to the next turn. 如果掷出 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;
}
解决方案
while 语句应为:
while (gameSelect == "r" && pigDiceRoll != 1)
这意味着在用户想要再次滚动并且他们没有滚动 1 时继续循环。
或者,您可以使用:
while (!(gameSelect != "r" || pigDiceRoll == 1))
两者在逻辑上是相同的,但第一个可能更容易阅读。
推荐阅读
- agora.io - 来自 Agora Rtc 的 AudioManagerAndroid 泄漏上下文
- powershell - 解析 ipconfig /all 输出以仅获取以太网记录
- javascript - 打字稿:稍后推断对象属性的类型
- javascript - 如何使用带有样式组件的逻辑类
- .net-core - dotnet ef 迁移脚本在 CI 中失败,但在本地工作正常
- reactjs - Docker 容器在本地构建,但不在 GitLab 上
- configuration - Spring Batch 获取作业定义中的作业参数
- javascript - 尝试导入模块时出现错误。我能做些什么?
- python - 分组 Pandas DataFrame 重复行,保留最后一个索引
- python - 在 utils.py 中获取当前登录的用户 request.user