C# 如果其他用户输入处理问题



我正在构建一个简单的基于控制台的怪物战斗游戏,用于训练目的。

我创建了一个 while 循环,它几乎是我需要它的地方,但是当用户输入错误的选择时,最终的"不正确输入"类型的消息只会在屏幕上无限循环。

有人可以建议修复吗?

或者,我应该使用 try,代替捕获异常处理程序(我还不是很擅长这些(。

谢谢

代码如下:

P.S 变量布尔 acceptInput 在类的顶部初始化,该类不包含在此代码段中。

while (!acceptInput)
{
if (playerChoice == "a" || playerChoice == "h")
{
if (playerChoice == "a")
{
player.PlayerAttack();
if (random.NextDouble() > .9)
{
Console.WriteLine("You missed!");
Console.WriteLine("Press ENTER to continue");
Console.ReadLine();
}
else
{
Console.WriteLine("It's a hit!");
monster.MonsterDecreaseHealth(player.AttackPower);
Console.WriteLine("Press ENTER to continue");
Console.ReadLine();
}
acceptInput = true;
}
else if (playerChoice == "h")
{
player.PlayerHeal();
acceptInput = true;
}
}
else
{
Console.WriteLine("That is not a valid choice, please enter either A or H");
}
}

与 Pintang 上面所说的类似,这是因为用户没有机会重置 playerChoice 变量的值。在 while 循环开始时,您需要允许将 playerChoice 变量重置为新输入。目前没有方法供用户更新 playerChoice 的值,因此如果条件的第一个实例被评估为 false,将出现无限循环。我会做这样的事情

while (!acceptInput)
{
playerChoice = GetUserInput(); // GetUserInput() return user input string
if (playerChoice.Equals("a"))
{
player.PlayerAttack();
if (Random.NextDouble() > 0.9)
{
Console.WriteLine("You Missed!");
Console.WriteLine("Press 'Enter' to Continue...");
Console.ReadLine();
}
else
{
Console.WriteLine("It's a hit!");
monster.MonsterDecreaseHealth(player.AttackPower);
Console.WriteLine("Press 'Enter' to Continue...");
Console.ReadLine();
}
acceptInput = true;
}
else if (playerChoice.Equals("h"))
{
player.PlayerHeal();
acceptInput = true;
}
else
{
Console.WriteLine("That is not a valid choice, please enter either A or H");
}
}

相关内容

  • 没有找到相关文章

最新更新