[Tutor] Combat Error

Dave Angel davea at davea.name
Mon Jul 8 01:03:33 CEST 2013


On 07/07/2013 06:40 PM, Jack Little wrote:
> When the player of my game fire his/her cannon, it is supposed to get rid of some of the enemy's health. It does not. I have no clue what the error is, so I need help. Here is the Python Shell output:
>
>>> fire cannon 1
> Fired!
> Enemy health= 75
> They fired at you!
> Your health is now 55
>>> fire cannon 2
> Fired!
> Enemy health= 75
> They fired at you!
> Your health is now 55
>>> fire cannon 1
> Fired!
> Enemy health= 75
> They fired at you!
> Your health is now 55
>>>
>
>
>
>
> Here is the code:
>
> def lvl4combat():
>      print "The barracks are constructed of wood and cobblestone."
>      print "A large, single cannon sits on the top, searching the sky for enemy airships."
>      print "The cannon is manned by a single team of three men."
>      print "The cannon is large and industrial."
>      print "Remember your training."
>      cannonhealth=75
>      cannondamage=random.choice([10,17,13])
>      currhealth=health
>      while cannonhealth > 0:
>          print "They fired at you!"
>          currhealth-cannonhealth
>          print "Your health is now",currhealth
>          combat=raw_input(">>")
>          if combat.lower()=="fire cannon 1":
>              print "Fired!"
>              cannonhealth-attack

This expression has no useful effect.  You probably wanted

               cannonhealth -= attack

>              print "Enemy health=",cannonhealth
>          elif combat.lower()=="fire cannon 2":
>              print "Fired!"
>              cannonhealth-attack

ditto

>              print "Enemy health=",cannonhealth
>          if currhealth <= 0:
>              break
>              defeat1()
>          if cannonhealth <= 0:
>              break
>              victory1()
>              if kboost==True:
>                  karma+25*.25

ditto

>              elif kboost==False:
>                  karma+25

ditto


You also have code following break statements that will never execute. 
In particular, you'll never call defeat1() or victory1()



-- 
DaveA



More information about the Tutor mailing list