【问题标题】:C# board game showing number of hearts显示红心数量的 C# 棋盘游戏
【发布时间】:2017-03-08 15:10:24
【问题描述】:
MessageBox.Show("You are wrong");
noOfhearts = noOfhearts - 1;
if (noOfhearts == 0) 
{
    MessageBox.Show("Game Over! You score " + score);
    Hide();
}
else 
{
    for (int i = 0; i <= noOfhearts; i++) 
    {
        heart[i].Visible = true;
        //I have 3 heart pcitureboxes "heart1" "heart2" "heart3"
    }
}

我希望游戏能够显示用户拥有的爱心数量,并且当他们答错问题时应该失去一颗爱心。如果用户的心为 0,则游戏将结束。我在这个游戏中有 3 个难度,3 颗心容易开始,2 中等难度,1 颗难度开始。这很尴尬,因为根据难度,用户会有不同数量的心。这就是为什么我尝试使用 for 循环,但显然接下来的内容很愚蠢,我认为值得一试。

【问题讨论】:

  • 不知道你在这里问什么。请澄清。
  • 那么你的问题到底是什么?
  • 您可以将初始红心数设置为难度(因此,如果一开始很难将其设置为 1),然后像现在这样继续
  • 这里的问题是什么?您的代码没有给出预期的输出吗?预期输出什么?您是否收到任何错误或异常?你能解释一下你的代码吗?
  • 来自on-topic guide:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身中重现它所需的最短代码。 没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建Minimal, Complete, and Verifiable example

标签: c# visual-studio for-loop


【解决方案1】:

如果不详细说明您用于制作这款游戏​​的内容,很难回答。 Visual Studio ......你在使用 Unity 吗?无论哪种方式,在您的 else{} 中,我注意到您没有设置红心 > 可见心数到不可见心数。如果您希望它们不显示,则需要添加它。

for (int i = 0; i <= totalHeartNumber; i++) 
            {
                if(i <= noOfHearts) {
                   heart[i].Visible = true;
                   //I have 3 heart pcitureboxes "heart1" "heart2" "heart3"
                 } else {
                   heart[i].Visible = false;
                 }
       }

您需要将 totalHeartNumber = 设置为该难度的红心数。这只是您设置游戏难度时使用的另一个 if 语句。

此外,如果您不根据难度级别动态实例化这些,您将需要始终有 MAX 颗心(无论您在任何难度下可以拥有的最大红心数是多少),然后拥有它们如果不需要,则不可见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    相关资源
    最近更新 更多