gpt4 book ai didi

c# - "No"选项在我的 Do While 循环中无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-03 12:14:48 25 4
gpt4 key购买 nike

所以我目前正在玩一个类似 RPG 的游戏,使用文本,经过一次攻击和反击后,会出现一个对话框,问你是否要离开,但问题是,"is"和No”两者都会导致它离开循环,通过点击“No”,如果你的 HP 和敌人的 HP 高于 0,它应该留在循环中。我认为它工作正常,直到我稍后在程序中添加代码但我可能是错误的:

DialogResult dialogResult;

do
{
count++;
if (enemyHP > 0)
{
Random rand = new Random();
int chance = rand.Next(1, 101);

MessageBox.Show("You see another enemy...);
MessageBox.Show("Its HP is 10...2/5");
MessageBox.Show("His current HP is " + enemyHP + ");
if (chance <= 5)
{
MessageBox.Show("Miss");
}
else
{
MessageBox.Show("You dealt 5 damage to it.);
enemyHP -= 5;
}

if (enemyHP > 0)
MessageBox.Show("He also dealt 5 damage to you.);
playerHP -= 5;
}

if (enemyHP <= 0)
{
MessageBox.Show("Enemy has been defeated!");
dialogResult = (0);
}
else
if (playerHP > 0)
{
dialogResult = MessageBox.Show("Do you want to leave?", "Message box", MessageBoxButtons.YesNo);
}
} while (DialogResult == DialogResult.No && enemyHP > 0);

最佳答案

问题出在这几行:

  1. DialogResult dialogResult;
  2. if (playerHP > 0)
    {
    dialogResult = MessageBox.Show("Do you want to leave?", "Message box", MessageBoxButtons.YesNo);
    }
  3. } while (DialogResult == DialogResult.No && enemyHP > 0); 

正如@JayV 提到的,第三行有一个错字,应该是:

} while (dialogResult == DialogResult.No && enemyHP > 0); 

但是,可能会发生 dialogResult 在满足条件时尚未初始化的情况,因为分配发生在 if 分支内。
因此,修改第一行以提供默认值,这将是有意义的 DialogResult.No:

DialogResult dialogResult = DialogResult.No;

你这里也有一个小问题:

if (enemyHP > 0)
MessageBox.Show("He also dealt 5 damage to you.);
playerHP -= 5;

MessageBox.Show 行在 if 分支内运行,但由于您没有添加方括号,您可能没有意识到以下行 总是运行。
这就是为什么:

始终使用括号!

if (enemyHP > 0)
{
MessageBox.Show("He also dealt 5 damage to you.);
playerHP -= 5;
}

关于c# - "No"选项在我的 Do While 循环中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50311424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com