【问题标题】:Declare variable in if statement and then using it later in code在 if 语句中声明变量,然后在代码中使用它
【发布时间】:2013-11-20 17:02:51
【问题描述】:

我正在编写一个控制台“游戏”,我需要在 IF 语句中声明一个字符“hp”,这取决于该字符的级别。

if ((char_level > 0) && (char_level < 4))
        {
            char_hp = 100;
        }
if ((level > 4) && (level < 6))
        {
            char_hp = 120;
        }
if ((level > 6) && (level < 8))
        {
            char_hp = 150;
        }
if ((level > 8) && (level < 10))
        {
            char_hp = 180;
        }

然后我需要稍后在战斗中的代码中使用它。战斗成功的角色获得新的等级后,程序会返回检查这些 IF 语句,如果等级大于 4,则角色的 hp 将增加到 120。但是在 IF 语句中声明 char_hp 不会改变值血量一般,达到4级后下一场战斗时,人物的血量仍然和上一场战斗结束时一样。我是 C# 编程的新手,我已经尝试了所有方法,但如果可能的话,我无法解决它。

同样的问题是随机生成的敌人的“hp”......然后我需要在那场战斗中使用它

if((level>0) && (level<4))
        {
            random_enemy_hp = RND.Next(89, 111);
            goto enemy;
        }
if((level>4) && (level<6))
        {
            random_enemy_hp = RND.Next(109, 141);
            goto enemy;
        }
if ((level > 6) && (level < 8))
        {
            random_enemy_hp = RND.Next(149, 184);
            goto enemy;
        }
if ((level > 8) && (level < 10))
        {
            random_enemy_hp = RND.Next(189, 221);
            goto enemy;
        }

编辑:我的意思是在 IF 语句中“将值保存到变量”,所以我可以稍后在代码中使用它们。我的代码是这样开始的,然后是“Console.WriteLine()”-s,战斗原理和上面显示的语句。

string name;
int char_hp = 100;
int level = 1;
int random_enemy_hp;
Random RND = new Random();

【问题讨论】:

  • goto 在 C# 中!它活着!
  • 无论你想在 C# 中做什么,都不要使用“goto”。
  • 您没有在您向我们展示的任何代码中声明 char_hp
  • 告诉我们您声明 char_hp 的位置
  • 我记得当我第一次开始在 TI83 图形计算器上编程时。我根本没有使用任何函数或循环。只去

标签: c# if-statement declaration statements


【解决方案1】:

你完全走错了路。你应该这样做:

int[] charLevelHp = { 100, 100, 100, 100,
                      120, 120, 120,
                      150, 150,
                      180, 180 };

int charLevel = 1;
int charHp = charLevelHp[charLevel];

【讨论】:

    【解决方案2】:

    我不禁注意到,您在第一个 if 语句中与 char_level 进行比较,但您在后续 if 语句中与 level 进行比较

    if ((char_level > 0) && (char_level < 4))
        {
            char_hp = 100;
        }
    if ((level > 4) && (level < 6))
        {
            char_hp = 120;
        }
    

    我认为您可能打算将char_level 用于所有条件。

    if ((char_level > 0) && (char_level < 4))
        {
            char_hp = 100;
        }
    if ((char_level > 4) && (char_level< 6))
        {
            char_hp = 120;
        }
    

    如果这是问题所在,那将与您看到的错误类型一致。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 2014-08-26
      • 1970-01-01
      • 2021-03-04
      相关资源
      最近更新 更多