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