语法错误; Python游戏吐出超级方法和导入

时间:2014-12-19 18:11:34

标签: python import pygame syntax-error super

我为什么基本上成为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;我不知道这是否重要,但我在整个代码中始终注意到这一点。

我很确定这是一个简单的错误。可能是一个错字,但我不能指出它为我的生活。请帮忙!

2 个答案:

答案 0 :(得分:1)

 super(HighScoreScene, self.__init__(game) # <- missing  paren

应为super(HighScoreScene, self).__init__(game)

如果您想使用object,请使用class BreakOut(object) super

New-style and classic classes

答案 1 :(得分:0)

您的class Breakout行与您的程序的其余部分不一致(前面一个空格)。如果你将该行退一行,一切都应该没问题(包括@Padraic Cunningham的回答)。