Ich lerne Python „auf die harte Weise lernt Python“ verwendet und zur Zeit machte ein einfaches Spiellokale Variable vor der Zuweisung referenziert (nicht wollen, global verwenden)
die Richtlinien des Buchs Nach jedem „Raum“ ist es seine eigene Funktion und hierin liegt mein Problem, ich habe einige Variablen, auf die alle Funktionen zugreifen müssen. z.B. Current_health, Rüstung, Stärke stat.
Ich habe mir die vorherigen Fragen hier angesehen (die ich tatsächlich verstanden habe) und die einzige Lösung scheint zu sein, es als eine globale Variable innerhalb der Funktion zu deklarieren, aber wie ich 20+ Räume (Funktionen) Es scheint ein wenig albern, sie alle jedes Mal zu deklarieren
Die andere Möglichkeit besteht darin, die Variable beim Aufruf der Funktion übergeben, aber wie ich 8 Variablen jedes Mal durchsetzen muss, scheint das auch unpraktisch. Jede Hilfe würde sehr geschätzt werden. Ich werde den Code unten einfügen, falls es hilft (das Spiel ist noch lange nicht fertig, so dass einige keinen Sinn ergeben)
Im Moment funktioniert der Start() wegen meiner globalen Variablen, aber ich werde in den Fehler als laufen sobald er versucht shadow_figure() wegen der wep_dam Referenz
from sys import exit
str = 0
wep_dam = 0
dam = str + wep_dam
cha = 0
sne = 0
arm = 0
max_life = 10
points_remaining = 0
def shadow_figure():
print "\n\nYou approach the figure, who remains silent."
print "As you get closer you realise he has bag at his feet."
print "Mysterious figure: \"You may choose only one.\""
print "You look into the bag, and see a shiny sword on top of a large steel shield."
ans = raw_input("Do you: \n1. Take the sword \n2. Take the shield \n3. Take the whole bag and run \n4. Walk away without taking anything\n> ")
if ans == "1":
print "The sword gives you an extra 3 damage"
wep_dam += 3
exit_beach()
elif ans == "2":
print "The shield gives you 3 armor, but it's so heavy it reduces your sneak by 1"
arm += 3
sne -= 1
def beach():
print "\n\nYou wake up on a beach with no idea how you got there. \nYou see a shadowy figure close to the water."
ans = raw_input("Do you: \n1. Approach him \n2. Go the other way\n> ")
if ans == "1":
shadow_figure()
elif ans == "2":
exit_beach()
else:
print "Please enter either 1 or 2"
def reset_stats():
str = 0
wep_dam = 0
dam = str + wep_dam
cha = 0
sne = 0
arm = 0
max_life = 10
points_remaining = 10
print "\n\n\n\nGame Reset\n\n\n\n"
def start():
global str
global wep_dam
global dam
global cha
global sne
global arm
str = 0
wep_dam = 0
dam = str + wep_dam
cha = 0
sne = 0
arm = 0
max_life = 10
points_remaining = 0
print "You are an adventurer, your stats are currently:"
print "Strength: %d \nCharisma: %d \n Sneak: %d" % (str, cha, sne)
print "Strength determines your damage, charisma determines your chance of pursuasion, \nand sneak determines whether or not you can go get past enemies without being detected"
print "you have 10 points available to spend, to spend a point, simply type the number which corresponds\nwith the skill and hit enter"
print "\n\n1. Strength \t2. Charisma \t3. Sneak\n"
points_remaining = 10
while points_remaining > 0:
ans = raw_input("Choose a skill: ")
if ans == "1":
str += 1
points_remaining -= 1
print "Strength is now %d" % (str)
print "%d points remaining\n" % (points_remaining)
elif ans == "2":
cha += 1
points_remaining -= 1
print "Charisma is now %d" % (cha)
print "%d points remaining\n" % (points_remaining)
elif ans == "3":
sne += 1
points_remaining -= 1
print "Sneak is now %d" % (sne)
print "%d points remaining\n" % (points_remaining)
else:
print "Error, please enter a number from 1 to 3\n"
print "Your stats are now: "
print "Strength: %d \nCharisma: %d \n Sneak: %d\n\n" % (str, cha, sne)
print "Is this OK? Or would you like to restart?\n"
ans = raw_input("1. Continue \n2. Restart\n> ")
if ans == "1":
print "Game will now begin...."
beach()
elif ans == "2":
ans = raw_input("Are you sure? Yes/No\n> ")
ans = ans.lower()
if ans == "yes":
reset_stats()
start()
else:
beach()
else:
print "Error, please enter 1 or 2"
start()
Genau das, was ich brauchte, danke! Jetzt arbeite ich an diesem Einzugfehler, den ich bekomme, nachdem ich diese Änderung vorgenommen habe ... – craigread7