2013-11-20 2 views
0

Я программирую консольную «игру», и мне нужно объявить «hp» символа в операторах IF, которые зависят от уровня этого символа.Объявить переменную в выражении if, а затем использовать ее позже в коде

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. Но объявление char_hp в операторах IF не изменяет значение от hp в целом, и когда следующий бой наступает после достижения 4-го уровня, hp персонажа все еще похож на конец предыдущего боя. Я новичок в программировании на C#, и я пробовал все, но я не могу его решить, если это возможно.

Та же проблема с «л.с.» противника, который случайно сгенерированных ... то мне нужно, чтобы использовать его в этой борьбе

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; 
     } 

EDIT: Я имел в виду «значения экономии на переменные» в IF , поэтому я могу использовать их позже в коде. Так начинается мой код, тогда есть «Console.WriteLine()» - s, принцип боя и показания, показанные выше.

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

'goto' в C#! Оно живет! – canon

+1

Что бы вы ни делали на C#, не используйте «goto». – nvoigt

+0

Вы не _declaring_ 'char_hp' в любом из кода, который вы нам показали. – canon

ответ

1

Вы полностью ошиблись. Вы должны делать что-то вроде:

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

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

Я не могу не заметить, что вы сравниваете с char_level для первой пары, если-заявление, но вы по сравнению с level для операторов, если последующее-

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

I подумайте, что вы, возможно, намеревались использовать char_level для всех условий.

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

Если это проблема, это будет соответствовать видам ошибок, которые вы видите.

Смежные вопросы