[Tutor] UnboundLocalError and Break
bob gailer
bgailer at gmail.com
Thu Oct 1 04:13:52 CEST 2009
Corey Richardson wrote:
> Here is my code that is being used/affected by the block that is
> erroring. The rest is superfluous, and does not affect it:
Something is screwy.
def monsAttk (damage, attack,playHp): # function expects 3 arguments
monsAttk(4, 15) # passes 2 arguments
That should raise TypeError: monsAttk() takes exactly 3 argument (2 given)
So something else is awry.
BTW the fact that you assigned playHp = 20 has no effect in the
function. You redefined playHp as a local variable in the def statement.
>
> intel = 10 #Define the abilities.
> strn = 10
> con = 10
> dex = 10
> wis = 10
> exp = 0
> cha = 10
> playHp = 20
> melWep = 1 # A sword
> rngWep = 1 #A bow
> attack = dex+strn/2 #If they hit!
> melDmg = strn+1+melWep/2 #Melee damage
> deff = (con/3)+(dex/2)+6 #Defense
> rngDmg = dex+1+rngWep/2 #Ranged damage
> print "You are hiking through the woods one day, and you are jumped
> by a goblin!" #The beginning of the adventure
> print "Do you want to 1. Attack w/sword, 2. Attack w/bow, 3. Flee,
> or 4. Nothing"
> gob1Hp = 10 #First monsters hitpoints
> def monsAttk (damage, attack,playHp): #A monsters attack if
> attack > deff: #Monster hit playHp -= damage #Player
> takes damage (I think...I will have
> to work that out)
> print "You have sustained", damage, "damage, with",
> damage-playHp, "remaining" #Inform player of their status
> def gmAttack(monHp, monDef, monAgil) : #A player attack
> op1 = raw_input("Your choice?")
> while op1 != "5": #Just a loop that you can break out of
> (possibly...working that out) if op1 == '1': #Option 1
> if attack + 10 > monDef : #If the player hits
> monHp-= melDmg #Monster takes damage
> print "you did", melDmg, "damage! It now has",
> monHp, "health left!" #Inform player how much health it has.
> monsAttk(4, 15) #Monster attacks elif
> op1 == '2': #Option 2 if attack + 10 >monDef: #If you
> hit the monster
> monHp -= rngDmg #Monster takes damage
> print "you did", rngDmg, "damage! It now has",
> monHp, "health left!" #Inform player how much health it has
> monsAttk(4, 15) #Monster attacks
> elif op1 == '3' : #Option 3
> if attack + dex > monAgil : #If they can escape
> print "Thou hast fled!" #They have fled!
> break #Stop the loop (I think. Can someone please inform
> me as of how this works? I have looked online...it makes no sense
> to me)
> elif op1 == '4' : #Option 4...the dumb one
> monsAttk(4, 15) #Monster attacks
> monsAttk(4,15) #Monster attacks again, cause they are dumb
> print "You should attack..." #Inform them of their
> stupidity
> else : #Well, what the hell did they pick?
> print "Unknown option, try again!" #Inform them they
> didn't pick a valid option
> while gob1Hp >= 0: #Well it is still alive
> gmAttack(gob1Hp,13,15) #player attacks
> if gob1Hp <= 0.5 : #if it dies
> print "Gratz! You have gotten 5 exp! You only have", 100-exp,
> "exp left till lv 1!" #print their experience
> exp += 5 #Give them exp
>
>
> If you catch an error besides what is wrong, please don't point it
> out, as I would like to work it out myself, unless marked in the
> comments. But this one is evading me...I have playHp defined at the
> beginning, and I am getting this error :
>
> Traceback (most recent call last):
> File "C:\Users\Quick-Start\Documents\Python Doc's\Game_File.py",
> line 183, in <module>
> gmAttack(gob1Hp,13,15)
> File "C:\Users\Quick-Start\Documents\Python Doc's\Game_File.py",
> line 167, in gmAttack
> monsAttk(4, 15)
> File "C:\Users\Quick-Start\Documents\Python Doc's\Game_File.py",
> line 157, in monsAttk
> playHp -= damage
> UnboundLocalError: local variable 'playHp' referenced before
> assignment
>
> If you could please help me, that would be great. I'm just trying to
> get the game engine working, as of now, it is 30% done, with
> Inventory, Equipment, and a more sophisticated and simpler code to
> come. It's a bit of a mess now...
>
>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>
--
Bob Gailer
Chapel Hill NC
919-636-4239
More information about the Tutor
mailing list