在if语句中声明变量,然后在代码中使用它

时间:2013-11-20 17:02:52

标签: c# if-statement declaration statements

我正在编写一个控制台“游戏”,我需要在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级后,角色的hp仍然像前一场战斗结束时那样。我是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();

2 个答案:

答案 0 :(得分:1)

你完全走错了路。你应该做的事情如下:

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

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

答案 1 :(得分:0)

我不禁注意到,您与第一对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;
    }

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