ich lese gerade ein Python-Buch (bin ein Anfänger), in dem man ein Spiel nach "Space Invaders" programmieren kann. Ein Raumschiff wird vom Benutzer horizontal bewegt. Dort ist eine Tastatursteuerung vorgesehen. Die hat mir aber nicht gefallen und ich habe es hinbekommen, dass man das Raumschiff mit der Maus horizontal bewegen kann.
Als Editor verwende ich Visual Studio 2019 Community. Das Spiel soll mit pygame laufen.
Meine eigentliche Frage ist:
Wie beendet man so ein Spiel sauber? Habe hier im Forum gelesen, dass man "sys.exit()" vergessen soll (so war es im Buch gelöst)...
Ich poste nur den (aus meiner Sicht) relevanten Code, der für das Schließen des Spiels nötig ist.
#Alien_Invasion.py
Code: Alles auswählen
import pygame
from settings import Settings
from ship import Ship
import game_functions as gf
def run_game():
ende = False
# initialisiert das Spiel und erstellt ein screen-Objekt.
pygame.init()
ai_settings = Settings()
screen = pygame.display.set_mode((ai_settings.screen_width, ai_settings.screen_height))
pygame.display.set_caption("Alien Invasion")
# Erstellt ein Schiff
ship = Ship(screen)
spielaktiv=True
#Startet die Hauptschleife des Spiels.
while spielaktiv:
gf.check_events(ship)
gf.update_screen(ai_settings, screen, ship)
# Zeichnet den Bildschirm bei jedem Schleifendurchlauf neu.
screen.fill(ai_settings.bg_color)
ship.blitme()
run_game()
Code: Alles auswählen
import sys
import pygame
import pygame.locals as pyl
def check_events(ship):
# Lauscht auf Tastatur- und Mausereignisse.
for event in pygame.event.get():
if event.type == pygame.QUIT:
spielaktiv = False
elif event.type == pyl.MOUSEMOTION:
x=event.rel[0]
if x > 0:
ship.rect.centerx +=1
elif x<0:
ship.rect.centerx -=1
def update_screen(ai_settings, screen, ship):
#Zeichnet den Bildschirm bei jedem Schleifendurchlauf neu.
screen.fill(ai_settings.bg_color)
ship.blitme()
#Macht den zuletzt gezeichneten Bildschirm sichtbar.
pygame.display.flip()
Viele Grüße,
kwon