Python类语法错误

时间:2018-02-24 06:27:27

标签: python class pygame

我一直在关注制作游戏的指南。但是,当我尝试运行程序时,我得到了Class Circle的语法错误,不知道为什么?我无法弄清楚原因,我确信在Class Circle之后还有更多的问题,但无法修复它。

import pygame
from pygame.locals import *
from uagame import Window
import time
import random


def main():

    window = Window('Pong', 500, 400)
    window.set_auto_update(False)
    game = Game(window)
    game.play()
    window.close()


class Rect:

    def __init__(self, center, radius, color, window):
        self.center = center
        self.radius = radius
        self.color = color
        self.window = window

    def draw(self):
        pygame.draw.rect(self.window.get_surface(), self.color, Rect((100, 200), (20, 30))

class Circle: # Syntax Error: class Circle:: <string>, line 28, pos 5

    def __init__(self, center, radius, color, window):

        self.center = center
        self.radius = radius
        self.color = color
        self.window = window

    def draw(self):
        pygame.draw.circle(self.window.get_surface(), self.color, self.center,self.radius)

    def get_color(self):
        return self.color

    def move(self):

        window_size = (self.window.get_width() , self.window.get_height())
        for index in range(0,2):
            self.center[index] = (self.center[index] + 1) % window_size[index]

    def enlarge(self,increment):
        self.radius = self.radius + increment


class Game:

    def __init__(self, window):

        self.window = window
        self.bg_color = pygame.Color('black')
        self.fg_color = 'green'
        self.rect_color = 'green'
        self.pause_time = 0.02
        self.close_clicked = False
        self.continue_game = True
        self.circle = Ball([200,200], 20, pygame.Color(self.fg_color),window)
        self.rect = Rect([100,200], 50 , pygame.Color(self.fg_color),window)
        self.radius_increment = 5

    def play(self):

        while not self.close_clicked:
            self.handle_event()
            self.draw()
            if self.continue_game:
                self.update()
                self.decide_continue()
            time.sleep(self.pause_time)

    def handle_event(self):
        event = pygame.event.poll()
        if event.type == QUIT:
            self.close_clicked = True
        elif event.type == MOUSEBUTTONUP and self.continue_game:
            self.handle_mouse_up()

    def handle_mouse_up(self):

        self.circle.enlarge(self.radius_increment)


    def draw(self):

        self.window.clear()
        self.circle.draw()
        self.rect.draw()
        if not self.continue_game:
            self.window.set_bg_color(self.fg_color)
            self.window.clear()
        self.window.update()

    def update(self):

        self.circle.move()

    def decide_continue(self):
        pass

main()

1 个答案:

答案 0 :(得分:2)

您的错误实际上在于上面一行。看到你的代码缺少一个括号来关闭rect()函数。永远记得在这样的长函数上计算括号。

def draw(self):
    pygame.draw.rect(self.window.get_surface(), self.color, Rect((100, 200), (20, 30))) #<-