Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python RPG游戏,unbundLocalError_Python_Python 2.7 - Fatal编程技术网

Python RPG游戏,unbundLocalError

Python RPG游戏,unbundLocalError,python,python-2.7,Python,Python 2.7,不知何故,当我执行此代码(如下所列)时,我得到: 回溯(最近一次调用last):文件“Test.py”,第207行,在 Commandsc文件“Test.py”,第116行,移动中 如果kamers[currentKamer]中的naartoe[1]:UnboundLocalError:赋值前引用的局部变量“currentKamer” 首先我想我可以添加“global”,但后来我得到了一个语法错误。 你能解释一下我做错了什么而不是仅仅编辑代码吗 import os import time fr

不知何故,当我执行此代码(如下所列)时,我得到:

回溯(最近一次调用last):文件“Test.py”,第207行,在 Commandsc文件“Test.py”,第116行,移动中 如果kamers[currentKamer]中的naartoe[1]:UnboundLocalError:赋值前引用的局部变量“currentKamer”

首先我想我可以添加“global”,但后来我得到了一个语法错误。 你能解释一下我做错了什么而不是仅仅编辑代码吗

import os
import time

from random import randint 
currentKamer = 1
class Character: 
  #data
  def __init__(self): 
    self.naam = "" 
    self.levens = 1 
    self.levens_max = 1 

  #het vecht systeem voor speler en tegenstander is hetzelfde (ik ben lui en dit is makkelijker)
  def do_schade(self, tegenstander): 
    schade = min( 
        max(randint(0, self.levens) - randint(0, tegenstander.levens), 0), 
        tegenstander.levens) 
    tegenstander.levens = tegenstander.levens - schade 
    if schade == 0: print "%s ontwijkt %s's aanval." % (tegenstander.naam, self.naam) 
    else: print "%s beschadigd %s!" % (self.naam, tegenstander.naam) 
    return tegenstander.levens <= 0 

#tegenstander functies 
class Tegenstander(Character): 
  def __init__(self, speler): 
    Character.__init__(self) 
    self.naam = 'een aziaat' 
    self.levens = randint(1, speler.levens) 

#speler functies 
class Speler(Character): 
  def __init__(self): 
    Character.__init__(self) 
    self.state = 'normal' 
    self.levens = 10 
    self.levens_max = 10 

  #stoppen
  def quit(self): 
    print "%s kan niet meer uit de school ontsnappen en gaat dood.\nR.I.P." % self.naam 
    self.levens = 0 

  #help commando
  def help(self): print Commands.keys() 

  #laat levens zien
  def status(self): print "%s's levens: %d/%d" % (self.naam, self.levens, self.levens_max) 

  #als je te lang loopt
  def moe(self): 
    print "%s voelt zich moe." % self.naam 
    self.levens = max(1, self.levens - 1) 

  #slapen/rusten
  def rest(self): 
    if self.state != 'normal': print "%s kan nu niet rusten!" % self.naam; self.tegenstander_attacks() 
    else: 
      print "%s rust." % self.naam 
      if randint(0, 1): 
        self.tegenstander = Tegenstander(self) 
        print "%s is abrupt wakker gemaakt door %s!" % (self.naam, self.tegenstander.naam) 
        self.state = 'fight' 
        self.tegenstander_attacks() 
      else: 
        if self.levens < self.levens_max: 
          self.levens = self.levens + 1 
        else: print "%s heeft te veel gerust." % self.naam; self.levens = self.levens - 1 

  #rond lopen
  def verken(self): 
    if self.state != 'normal': 
      print "%s is te druk bezig!" % self.naam 
      self.tegenstander_attacks() 
    else: 
      print "%s verkent een grot." % self.naam 
      if randint(0, 3): 
        self.tegenstander = Tegenstander(self) 
        print "%s treft %s!" % (self.naam, self.tegenstander.naam) 
        self.state = 'fight' 
      else: 
        if randint(0, 1): self.moe() 

  #vluchten
  def flee(self): 
    if self.state != 'fight': print "%s rent in angst weg." % self.naam; self.moe() 
    else: 
      if randint(1, self.levens + 5) > randint(1, self.tegenstander.levens): 
        print "%s vlucht van %s." % (self.naam, self.tegenstander.naam) 
        self.tegenstander = None 
        self.state = 'normal' 
      else: print "%s kon niet ontsnappen van %s!" % (self.naam, self.tegenstander.naam); self.tegenstander_attacks() 

  #aanvallen
  def attack(self): 
    if self.state != 'fight': print "%s zwaait in de lucht, maar hij geeft op." % self.naam; self.moe() 
    else: 
      if self.do_schade(self.tegenstander): 
        print "%s vermoord %s!" % (self.naam, self.tegenstander.naam) 
        self.tegenstander = None 
        self.state = 'normal' 
        if randint(0, self.levens) < 10: 
          self.levens = self.levens + 1 
          self.levens_max = self.levens_max + 1 
          print "%s voelt zich sterker!" % self.naam 
      else: self.tegenstander_attacks() 

  #als tegenstander je dood
  def tegenstander_attacks(self): 
    if self.tegenstander.do_schade(self): print "%s was vermoord bij de gemene meneer %s!!!\nR.I.P." %(self.naam, self.tegenstander.naam) 

  def move(self):
    while True:
      naartoe = raw_input("> ").lower().split()
      if naartoe[0] == "go":
          #vertelt waar je gaat
          if naartoe[1] in kamers[currentKamer]:
              #veranderd kamer naar niewe kamer
              currentKamer = kamers[currentKamer][naartoe[1]]
          #wanneer dat niet werkt
          else:
              print("You can't go that way!")

  def plaats(self):
    print("---------------------------")
    print("Je bent in de " + kamers[currentKamer]["naam"])
    print("---------------------------")

#commando's 
Commands = { 
  'quit': Speler.quit, 
  'help': Speler.help, 
  'status': Speler.status, 
  'rest': Speler.rest, 
  'verken': Speler.verken, 
  'flee': Speler.flee, 
  'attack': Speler.attack,
  'move' : Speler.move,
  'plaats' : Speler.plaats,
  } 

#dict voor layout
kamers = {

            1 : {  "naam"  : "Lobby" ,
                   "trap"  : 2,
                   "gangrechtdoor" : 3 }  ,

            2 : {  "naam"  : "Trap" ,
                   "lobby"  : 1,
                   "item"  : "Sword" }  ,            

            3 : {  "naam"  : "Gang rechtdoor" ,
                   "lobby" : 1,
                   "gymzaal" : 4, 
                   "concergie"  : 5,
                   "gangaula"  : 6 } ,

            4 : {  "naam"  : "Gymzaal" ,
                   "gangrechtdoor" : 3 } ,

            5 : {  "naam"  : "Concierge" ,
                   "hokjewim" : 9,
                   "gangrechtdoor" : 3 } ,

            6 : {  "naam"  : "Gang rii aula" ,
                   "gangrechtdoor" : 3,
                   "juul" : 7 } ,

            7 : {  "naam"  : "Hok van Juul" ,
                   "gangaula" : 6,
                   "kantine" : 8 } ,

            8 : {  "naam"  : "Aula kantine" ,
                   "juul" : 7,
                   "hokjewim" : 9 } ,

            9 : {  "naam"  : "Aula wim's spiek hokje" ,
                   "kantine" : 8,
                   "concierge" : 5 }
         }

#introductie
p = Speler() 
p.naam = raw_input("Wat is de naam ? ")
os.system('clear')
print ("--------------------")
print "(type help voor een lijst van acties)" 
print "%s betreedt het schoolgebouw, zoekend naar Henk van Ommen." % p.naam 
print "Steen van de verkener groet %s, hij vertelt jou dat je in de lobby bent." % p.naam
print ("--------------------")
time.sleep(1)
os.system('clear')
print("Hoe moet je lopen?")
print("'go [waar je naartoe wilt]'")
print("Je bent momenteel in de " + kamers[currentKamer]["naam"])
time.sleep(1)
os.system('clear')
print("Steen van de verkener wenst je succes en zegt: vergeet niet dat help alle commando's toont")

while(p.levens > 0): 
  line = raw_input("> ") 
  args = line.split() 
  if len(args) > 0: 
    commandFound = False 
    for c in Commands.keys(): 
      if args[0] == c[:len(args[0])]: 
        Commands[c](p) 
        commandFound = True 
        break 
    if not commandFound: 
      print "%s dat is een 1 op de toets.(typ iets van help ofzo)" % p.naam
导入操作系统
导入时间
从随机导入randint
电流Kamer=1
类别字符:
#资料
定义初始化(自):
self.naam=“”
self.levens=1
self.levens_max=1
#这是一个由斯佩勒和斯佩勒组成的系统(本·吕和斯佩勒是马克莱克)
def do_schade(自我,特根斯坦):
schade=min(
max(randint(0,self.levens)-randint(0,tegenstander.levens),0),
tegenstander.levens)
tegenstander.levens=tegenstander.levens-schade
如果schade==0:打印“%s ontwijkt%s的aanval.”%(tegenstander.naam,self.naam)
其他:打印“%s beschadigd%s!”%(self.naam,tegenstander.naam)
返回tegenstander.levens randint(1,self.tegenstander.levens):
打印“%s vlucht van%s.”%(self.naam,self.tegenstander.naam)
self.tegenstander=无
self.state='normal'
其他:打印“%s kon niet ontsnapen van%s!”%(self.naam,self.tegenstander.naam);self.tegenstander_攻击()
#安瓦伦
def攻击(自我):
如果self.state!='战斗:打印“%s zwaait in de lucht,maar hij geeft op.%self.naam;self.moe()
其他:
如果self.do_schade(self.tegenstander):
打印“%s vermoord%s!”%(self.naam,self.tegenstander.naam)
self.tegenstander=无
self.state='normal'
如果randint(0,self.levens)<10:
self.levens=self.levens+1
self.levens\u max=self.levens\u max+1
打印“%s voelt zich sterker!”%self.naam
else:self.tegenstander_攻击()
#艾尔斯泰格斯坦德杰杜德酒店
def tegenstander_攻击(自我):
如果self.tegenstander.do_schade(self):打印“%s是vermoord bij de gemene meneer%s!!!\n r.I.P.”%(self.naam,self.tegenstander.naam)
def移动(自我):
尽管如此:
naartoe=原始输入(“>”).lower().split()
如果naartoe[0]=“go”:
#韦特尔特瓦尔杰·加特酒店
如果naartoe[1]在kamers[currentKamer]中:
#韦兰德·卡默纳尔·尼韦·卡默尔酒店
currentKamer=kamers[currentKamer][naartoe[1]]
#温尼尔·尼特·韦克特酒店
其他:
打印(“你不能走那条路!”)
def plaats(自身):
打印(“-------------------------------”)
印刷体(“我弯在地上”+kamers[currentKamer][naam])
打印(“-------------------------------”)
#突击队
命令={
“退出”:Speler.quit,
“帮助”:Speler.help,
“状态”:Speler.status,
“rest”:Speler.rest,
“verken”:Speler.verken,
逃离:斯佩勒,逃离,
“攻击”:Speler.attack,
“移动”:Speler.move,
“plaats”:Speler.plaats,
} 
#dict voor布局
卡默斯={
1:{“纳姆”:“大厅”,
"陷阱":二,,
“gangrechtdoor”:3},
2:{“纳姆”:“陷阱”,
“大厅”:1,
“物品”:“剑”},
3:{“乃阿姆”:“帮派进门”,
“大厅”:1,
“gymzaal”:4,
“共谋”:5,
“甘古拉”:6},
4:{“naam”:“Gymzaal”,
“gangrechtdoor”:3},
5:{“naam”:“礼宾部”,
“hokjewim”:9,
“gangrechtdoor”:3},
6:{“naam”:“Gang rii aula”,
“gangrechtdoor”:3,
“juul”:7},
7:{“naam”:“Hok van Juul”,
“甘高拉”:6,
“kantine”:8},
8:{“naam”:“Aula kantine”,
“尤尔”:7,
“hokjewim”:9},
9:{“纳姆”:“奥拉·维姆的斯皮克·霍克杰”,
“康德”:8,
“礼宾部”:5}
}
#导言
p=Speler()
p、 naam=原始输入(“naam是什么?”)
操作系统(“清除”)
打印(“--------------”)
“打印”(键入帮助voor een lijst van acties)
打印“%s betreedt het schoolgebouw,zoekend naar Henk van Ommen”。%p.naam
打印“Steen van de verkener groet%s,hij vertelt jou dat je in de Lobble bent.”%p.naam
打印(“--------------”)
时间。睡眠(1)
操作系统(“清除”)
打印(“Hoe moet je lopen?”)
打印(“'go[waar je naartoe wilt]”)
印刷体(“以德文书写的弯曲力矩表+kamers[currentKamer][naam]”)
时间。睡眠(1)
操作系统(“清除”)
印刷品(“Steen van de verkener wenst je success en zegt:vergeet niet dat help alle commando's toont”)
而(p.levens>0):
行=原始输入(“>”)
args=line.split()
如果len(args)>0:
commandFound=False
对于命令.keys()中的c:
如果args[0]==c[:len(args[0]):
命令[c](p)
commandFound=True
打破
如果未找到命令:
打印“%s dat仅为1 op de toets(典型的ZO帮助)”%p.naam

结束

global currentKamer
放在函数
move
@yedpodtrzitko的开始位置,这非常有效!我还为循环添加了一个中断,因为它丢失了!