vb.net - small pokemon battle - enemy attacks three times in one turn -


(this vb express on console application btw) i'm novice @ programming, bear me - tried make small pokemon battle (cheesy, know) , worked okay except fact enemy attacked 3 times in 1 turn sort of complication. here's code - how can fix this?

module module1      sub main()         dim num integer         dim num1 integer         dim num2 integer         dim num3 integer          num = 0         console.writeline("select wild zigzagoon's health.")         num3 = console.readline         console.writeline("select charmander's health.")         num2 = console.readline         console.writeline("a wild zigzagoon appeared! go, charmander!")          while num3 > 0 , num2 > 0             console.writeline("what charmander do? use tackle(1), burn(2), smack(3) or ember(4)?")             num1 = console.readline             if num1 > 0 , num1 < 2                 num3 = num3 - 15                 console.writeline("charmander used tackle! zigzagoon took 15 damage! zigzagoon on " & num3)                 num = num + 1             elseif num = 1                 num2 = num2 - 10                 console.writeline("zigzagoon used tackle! charmander took 10 damage! charmander on " & num2)             elseif num = 2                 num2 = num2 - 20                 console.writeline("zigzagoon used quick attack! charmander took 15 damage! charmander on" & num2)             elseif num = 3                 num2 = num2 - 25                 console.writeline("zigzagoon used headbutt! charmander took 25 damage! charmander on" & num2)             elseif num = 4                 num2 = num2 - 40                 console.writeline("zigzagoon used take down! charmander took 40 damage! charmander on " & num2)             end if              if num1 > 1 , num1 < 3                 num3 = num3 - 20                 console.writeline("charmander used burn! zigzagoon took 20 damage! zigzagoon on " & num3)                 num = num + 1             elseif num = 1                 num2 = num2 - 10                 console.writeline("zigzagoon used tackle! charmander took 10 damage! charmander on " & num2)             elseif num = 2                 num2 = num2 - 20                 console.writeline("zigzagoon used quick attack! charmander took 15 damage! charmander on" & num2)             elseif num = 3                 num2 = num2 - 25                 console.writeline("zigzagoon used headbutt! charmander took 25 damage! charmander on" & num2)             elseif num = 4                 num2 = num2 - 40                 console.writeline("zigzagoon used take down! charmander took 40 damage! charmander on " & num2)                 num = num - 4             end if              if num1 > 2 , num1 < 4                 num3 = num3 - 30                 console.writeline("charmander used smack! zigzagoon took 30 damage! zigzagoon on " & num3)                 num = num + 1             elseif num = 1                 num2 = num2 - 10                 console.writeline("zigzagoon used tackle! charmander took 10 damage! charmander on " & num2)             elseif num = 2                 num2 = num2 - 20                 console.writeline("zigzagoon used quick attack! charmander took 15 damage! charmander on" & num2)             elseif num = 3                 num2 = num2 - 25                 console.writeline("zigzagoon used headbutt! charmander took 25 damage! charmander on" & num2)             elseif num = 4                 num2 = num2 - 40                 console.writeline("zigzagoon used take down! charmander took 40 damage! charmander on " & num2)                 num = num - 4             end if              if num1 > 3 , num1 < 5                 num3 = num3 - 40                 console.writeline("charmander used ember! zigzagoon took 30 damage! zigzagoon on " & num3)             elseif num = 1                 num2 = num2 - 10                 console.writeline("zigzagoon used tackle! charmander took 10 damage! charmander on " & num2)             elseif num = 2                 num2 = num2 - 20                 console.writeline("zigzagoon used quick attack! charmander took 15 damage! charmander on" & num2)             elseif num = 3                 num2 = num2 - 25                 console.writeline("zigzagoon used headbutt! charmander took 25 damage! charmander on" & num2)             elseif num = 4                 num2 = num2 - 40                 console.writeline("zigzagoon used take down! charmander took 40 damage! charmander on " & num2)                 num = num - 4             end if           end while          if num3 <= 0             console.writeline("the wild zigzagoon fainted! charmander gained 30 xp!. charmander leveled level 6!")         end if       end sub  end module 

the reason why enemy attacks 3 times because there 4 if/end if blocks.

when num set in first if/end if block (num=num+1), gets executed 3 times in subsequent if/end if blocks.

it looks num if statements should nested inside first if statement. there lot of code duplication (which should converted functions) makes harder understand.

i took liberty of rewriting code:

sub main()     dim charmanderattack integer     dim charmanderhealth integer     dim zigzagonattack integer     dim zigzagoonhealth integer      console.writeline("select wild zigzagoon's health.")     zigzagoonhealth = console.readline     console.writeline("select charmander's health.")     charmanderhealth = console.readline     console.writeline("a wild zigzagoon appeared! go, charmander!")      zigzagonattack = 0     while zigzagoonhealth > 0 , charmanderhealth > 0         console.writeline("what charmander do? use tackle(1), burn(2), smack(3) or ember(4)?")         charmanderattack = console.readline         charmanderattacks(charmanderattack, zigzagoonhealth)          zigzagonattack += 1         zigzagonattacks(zigzagonattack, charmanderhealth)     end while      if zigzagoonhealth <= 0         console.writeline("the wild zigzagoon fainted! charmander gained 30 xp!. charmander leveled level 6!")     end if end sub  sub charmanderattacks(byref charmanderattack integer, byref zigzagoonhealth integer)     select case charmanderattack         case 1             zigzagoonhealth -= 15             console.writeline("charmander used tackle! zigzagoon took 15 damage! zigzagoon on " & zigzagoonhealth)         case 2             zigzagoonhealth -= 20             console.writeline("charmander used burn! zigzagoon took 20 damage! zigzagoon on " & zigzagoonhealth)         case 3             zigzagoonhealth -= 30             console.writeline("charmander used smack! zigzagoon took 30 damage! zigzagoon on " & zigzagoonhealth)         case 4             zigzagoonhealth -= 40             console.writeline("charmander used ember! zigzagoon took 40 damage! zigzagoon on " & zigzagoonhealth)     end select end sub  sub zigzagonattacks(byref zigzagonattack integer, byref charmanderhealth integer)     select case zigzagonattack         case 1             charmanderhealth -= 10             console.writeline("zigzagoon used tackle! charmander took 10 damage! charmander on " & charmanderhealth)         case 2             charmanderhealth -= 20             console.writeline("zigzagoon used quick attack! charmander took 20 damage! charmander on " & charmanderhealth)         case 3             charmanderhealth -= 25             console.writeline("zigzagoon used headbutt! charmander took 25 damage! charmander on " & charmanderhealth)         case 4             charmanderhealth -= 40             console.writeline("zigzagoon used take down! charmander took 40 damage! charmander on " & charmanderhealth)             zigzagonattack -= 4     end select end sub 

Comments