Beispiel #1
0
class Game:
    def __init__(self):
        self._running = True
        self._clock = pg.time.Clock()
        self.FPS = 10

        self.ghostPos = []
        self.score = 0

    def on_init(self):

        # Initialize level. Level class contains walls, points and superpoints
        self.level = level.Map()
        self.level.make_level_variables()

        # Initialize Draw class
        self.draw = Draw()

        # Get player and ghost variables from level class
        self.playerPos = self.level.playerPos
        self.ghostPos = self.level.ghosts

        self._running = True

        # Initialize player class
        self.player = Player(self.playerPos, self.level.walls)

        # Initialize Ghost class
        self.ghost1 = Ghost(self.ghostPos[0], self.level.walls)

        # Initialize Collision class
        self.collision = Collision()

    def on_event(self, event):
        if event.type == QUIT or \
           (event.type == KEYUP and event.key == K_ESCAPE):
            self._running = False

        self.player.user_input(event)  # Make moveVert etc.

    def on_loop(self, events):
        # TODO: on loop events. Takes in pygame events.

        self.playerPos = self.player.movePlayer()

        self.ghostPos[0] = self.ghost1.moveGhost(self.playerPos,
                                                 self.ghostPos[0])

        # Update collision class
        self.collision.update(self.level.points, self.playerPos,
                              self.level.superpoints, self.ghostPos)

        # Get variables
        self.score = self.collision.score
        self.level.points = self.collision.points
        self.level.superpoints = self.collision.superPoints

    def on_render(self):
        # Draw() class renders everything.
        self.draw.update(pg)
        self.draw.draw_walls(self.level.walls)
        self.draw.draw_points(self.level.points)
        self.draw.draw_super_points(self.level.superpoints)
        self.draw.draw_player(self.playerPos)
        self.draw.draw_ghosts(self.ghostPos)

        pg.display.flip()

    def on_terminate(self):
        pg.quit()
        sys.exit()

    def run(self):
        if self.on_init() is False:
            self._running = False

        while self._running:
            self._clock.tick(self.FPS)

            filtered_events = []
            for event in pg.event.get():
                self.on_event(event)
                if self._running:
                    filtered_events.append(event)
            self.on_loop(filtered_events)
            self.on_render()
        self.on_terminate()