我为什么基本上成为BreakOut游戏制作了课程,但我不断收到错误消息。其本质似乎总是包含两件事;阶级进口和臭名昭着的超级"方法。通常以语法错误的形式
我过去曾有过一些问题,所以我会尽可能地保持清醒。
游戏的主要代码就是这样......
import pygame
from Game import *
from Game.Scenes import *
from Game.Shared import *
class BreakOut:
def __init__(self):
self.__lives = 5
self.__score = 0
self.__level = Level(self)
self.__level.load(0)
self.__pad = Pad((0,0), 0)
self.__balls = [Ball((0,0), 0, self)]
pygame.init()
pygame.mixer.init()
pygame.display.set_caption("This is the Title of the Game")
self.__clock= pygame.time.Clock()
self.screen = pygame.display.set_mode(GameConstants.SCREEN_SIZE, pygame.DOUBLEBUF, 32)
pygame.mouse.set_visible(0)
self.__scenes = (
PlayingGameScene(self),
GameOver(self),
HighScoreScene(self),
MenuScene(self)
)
self.__currentScene = 0
self.__sounds = ()
def start(self):
while 1:
self.__clock.tick(100)
self.screen.fill((0,0,0))
currentScene = self.__scenes[self.__currentScene]
currentScene.handleEvents(pygame.event.get())
currentScene.render()
pygame.display.update()
def changeScene(self, scene):
pass
def getLevel(self):
pass
def getScore(self):
pass
def increaseScore(self, score):
pass
def getLives(self):
pass
def getBalls(self):
pass
def getPad(self):
pass
def playSound(self, soundClip):
pass
def reduceLives(self):
pass
def increaseLives(self):
pass
def reset (self):
pass
BreakOut().start()
在这个阶段,它只应该返回一个黑屏,但它不断给我一个带有这个追溯的错误信息:
Traceback (most recent call last):
File "/Users/Ryan/PycharmProjects/Demo 1/Game/BreakOut.py", line 3, in <module>
from Game import *
File "/Users/Ryan/PycharmProjects/Demo 1/Game/__init__.py", line 9, in <module>
from Game.BreakOut import BreakOut
File "/Users/Ryan/PycharmProjects/Demo 1/Game/BreakOut.py", line 4, in <module>
from Game.Scenes import *
File "/Users/Ryan/PycharmProjects/Demo 1/Game/Scenes/__init__.py", line 3, in <module>
from Game.Scenes.HighScoreScene import HighScoreScene
File "/Users/Ryan/PycharmProjects/Demo 1/Game/Scenes/HighScoreScene.py", line 7
SyntaxError: invalid syntax
底部连接到另一类看起来像这样的代码:
from Game.Scenes.Scene import Scene
class HighScoreScene(Scene):
def __init__(self, game):
super(HighScoreScene, self.__init__(game)
PyCharm似乎突出了#34; super&#34;并且告诉我&#34;旧式类包含对超级方法的调用&#34;我不知道这是否重要,但我在整个代码中始终注意到这一点。
我很确定这是一个简单的错误。可能是一个错字,但我不能指出它为我的生活。请帮忙!
答案 0 :(得分:1)
super(HighScoreScene, self.__init__(game) # <- missing paren
应为super(HighScoreScene, self).__init__(game)
如果您想使用object
,请使用class BreakOut(object)
super
。
答案 1 :(得分:0)
您的class Breakout
行与您的程序的其余部分不一致(前面一个空格)。如果你将该行退一行,一切都应该没问题(包括@Padraic Cunningham的回答)。