Pygame Development - Part 2

Im zweiten Teil wird die Schleife aus dem ersten Teil als Klasse implementiert.

Im folgenden wurden die Anweisungen aus dem ersten Teil einfach in eine Klasse Game eingeschlossen. Die einzelnen Teile der Schleife:

  • Handle Events
  • Update
  • Draw

werden hierbei als einzelne Methoden implementiert. Dieser Grundgedanke macht die weitere Entwicklung einfacher.

#!/usr/bin/env python3


# IMPORTS
import pygame
pygame.init()


# Constants
SIZE = (800, 600)
BLACK = (0, 0, 0)
FPS = 60


class Game:
    """ Main Game class 

    :ivar pygame.Surface screen: The main window
    :ivar pygame.clock.Clock clock: The main clock
    :ivar bool running: Running Flag
    """

    def __init__(self):
        """ Initialize framework for a game """
        # Init screen
        self.screen = pygame.display.set_mode(SIZE)
        pygame.display.set_caption("Hello Pygame")

        # Init clock
        self.clock = pygame.time.Clock()

        # Set running flag
        self.running = False

    def run(self):
        """ Run the main game loop """
        self.running = True
        while self.running:
            # Handle events
            self.handle_events()

            # Update game logic
            self.update()

            # Draw everything
            self.draw()

            # Run smoothly with 60 FPS
            self.clock.tick(FPS)

    def handle_events(self):
        """ Handle user input """
        for event in pygame.event.get():

            # Check for QUIT event
            if event.type == pygame.QUIT:
                self.running = False

            # Check for KEYDOWN events
            if event.type == pygame.KEYDOWN:

                # Specifically check for ESC
                if event.key == pygame.K_ESCAPE:
                    self.running = False

    def update(self):
        """ Update game logic """
        pass

    def draw(self):
        """ Draw everything to the screen """
        self.screen.fill(BLACK)
        pygame.display.flip()


if __name__ == "__main__":
    Game().run()
    pygame.quit()
April 20, 2021