python - Variable assignment in function -


i'm writing basic fighting game , trying make each attack subtracts amount of attack enemy's health , prints enemy's current health. however, health resets original amount after run script once , loop it. how can resign enemies health current health?

here script:

import random  while true:     health = 20     enemy_health = 20      def punch():         mylist = (xrange(0,3))         x = random.choice(mylist)         if x == 3:             print"your hit effective enemy lost 3 hp"             print("enemy health is" enemy_health - x)         if x == 2:             print "your punch effective enemy lost 2 hp"             print("enemy health is" enemy_health - x)         if x == 1:             print "enemy lost 1 point"             print("enemy health is" enemy_health - x)      def kick():         mylist = (xrange(0,5))         x = random.choice(mylist)         if x > 3:             "%d" % x             print"your kick effective enemy lost %d hp"             print("enemy health is", enemy_health - x)         if x > 1 < 3:             "%d" % x             print "your kick effective enemy lost %d hp"             print("enemy health is" enemy_health - x)         if x == 1:             print "enemy lost 1 point"             print("enemy health is" enemy_health - x)      def attackchoice(c):         if c == "punch":             punch()         if c == "kick":             kick()      c = raw_input("choice attack\nkick or punch: ")     attackchoice(c) 

i want print:

choose attack kick or punch:kick enemy lost 3 hp enemy's heath 17 choose attack kick or punch:punch enemy lost 1 hp enemy's health 16 

  • as blender pointed out not changing value of enemy_health subtracting x , printing without assigning value back.
  • move initial assignment out of while loops.
  • you have string thing in kick code
  • use randint instead of building list , picking one

maybe like:

import random health = 20 enemy_health = 20  def punch():     global enemy_health     x = random.randint(1,3)     enemy_health -= x     if x == 3:         print"your hit effective enemy lost 3 hp"     if x == 2:         print "your punch effective enemy lost 2 hp"     if x == 1:         print "enemy lost 1 point"     print "enemy health is", enemy_health  def kick():     global enemy_health     x = random.randint(1,5)     enemy_health -= x     if x > 3:         print "your kick effective enemy lost %d hp" % x     if x > 1 < 3:         print "your kick effective enemy lost %d hp" % x     if x == 1:         print "enemy lost 1 point"     print "enemy health is", enemy_health  def attackchoice(c):     if c == "punch":         punch()     if c == "kick":         kick()  while true:     c = raw_input("choice attack\nkick or punch: ")     attackchoice(c) 

Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -