[英]pygame - error object not callable
我遇到問題的代碼如下。 有人可以幫我弄清楚如何解決此錯誤嗎? 我想做的是,這樣當我單擊開始游戲時,它將在if語句下的main()中調用該行。
錯誤:
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/untitled/Game.py", line 122, in <module>
main()
File "C:/Users/Administrator/PycharmProjects/untitled/Game.py", line 75, in main
controller = Manager(screen)
File "C:/Users/Administrator/PycharmProjects/untitled/Game.py", line 23, in __init__
self.go_to(TitleMenu(screen))
File "C:/Users/Administrator/PycharmProjects/untitled/Game.py", line 47, in __init__
self.main_loop()
File "C:/Users/Administrator/PycharmProjects/untitled/Game.py", line 54, in main_loop
self.menu.update(events)
File "C:\Users\Administrator\PycharmProjects\untitled\menumaker.py", line 46, in update
self.options[self.option][1]()
File "C:/Users/Administrator/PycharmProjects/untitled/Game.py", line 38, in <lambda>
self.menu = makeMenu(["START GAME", lambda: run()], ["CONTROLS", lambda: Help(screen)], ["QUIT GAME", sys.exit])
TypeError: 'bool' object is not callable
碼:
class Manager(object):
def __init__(self, screen):
self.go_to(TitleMenu(screen))
def go_to(self, scene):
self.scene = scene
self.scene.manager = self
#////////////////End Manager//////////////#
def run():
global run
run = True
pass
#////////////////Title Menu and End Menu//////////////#
class TitleMenu(object):
def __init__(self, screen):
self.screen = screen
self.menu = makeMenu(["START GAME", lambda: run()], ["CONTROLS", lambda: Help(screen)], ["QUIT GAME", sys.exit])
self.menu.set_highlight_color((255, 0, 0))
self.menu.set_normal_color((255, 255, 255))
self.menu.center_at(300, 400)
self.titleBackground = pygame.image.load("titleBackground.png")
self.clock = pygame.time.Clock()
events = pygame.event.get()
self.menu.update(events)
self.menu.draw(self.screen)
self.main_loop()
self.run = False
def main_loop(self):
while 1:
self.clock.tick(60)
events = pygame.event.get()
self.menu.update(events)
for e in events:
if e.type == QUIT:
pygame.quit()
return
self.menu.draw(self.screen)
pygame.display.flip()
def go_(self):
self.manager.go_to(GameLevel(0))
class EndMenu(object):
pass
#////////////////End Title Menu and End Menu//////////#
def main():
globals()
pygame.init()
screen = pygame.display.set_mode(DISPLAY, FLAGS, DEPTH)
pygame.display.set_caption("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
controller = Manager(screen)
timer = pygame.time.Clock()
running = True
while running:
timer.tick(60)
if pygame.event.get(QUIT):
running = False
return
controller.scene.handle_events(pygame.event.get())
controller.scene.update()
controller.scene.render(screen)
pygame.display.flip()
if run:
controller.scene.go_()
return Rect(left, bottom, width, height)
if __name__ == "__main__":
main()
問題是您的全局變量run
正與run
功能混淆:
def run():
global run
run = True
pass
這意味着當您嘗試調用run()
:
self.menu = makeMenu(["START GAME", lambda: run()], ["CONTROLS", lambda: Help(screen)], ["QUIT GAME", sys.exit])
它嘗試調用布爾變量。 要解決此問題,請重命名全局變量is_running
或重命名函數start_running
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.