PyGame ist eine beliebte Bibliothek zum Erstellen von Projekten mit Python und bietet eine Reihe leistungsstarker Tools für die Spieleentwicklung. In diesem Artikel erfahren Sie, wie Sie mit PyGame ein Startmenü und einen Game-Over-Bildschirm für ein einfaches Spiel erstellen.
Erstellen eines einfachen Spiels
Bevor Sie das Startmenü und den Game Over-Bildschirm erstellen, erstellen wir zunächst ein einfaches Spiel. In diesem Spiel steuern Sie einen Charakter mit den Pfeiltasten und versuchen, Hindernissen auszuweichen. Versuchen Sie der Einfachheit halber, keine Bilder zu verwenden.
Zu Beginn müssen Sie die erforderlichen Module importieren. Sie werden die verwenden Pygame Modul, um auf die Funktionen von PyGame zuzugreifen. Um das Modul zu installieren, können Sie Verwenden Sie den Pip-Paketmanager:
Pip Installieren Pygame
Nachdem unser Modul nun einsatzbereit ist, erstellen wir ein einfaches Spiel mit einem Spieler, der sich mit den Pfeiltasten und einem Hindernis nach links oder rechts bewegen kann. Wenn Sie mit dem Hindernis kollidieren, endet das Spiel. Hier ist der Code für dasselbe:
importieren Pygame
Pygame.drin()Bildschirmbreite = 750
Bildschirmhöhe = 450
screen = pygame.display.set_mode((screen_width, screen_height))Hindernis_x = 400
hindernis_y = 400
hindernis_breite = 40
hindernis_höhe = 40
Spieler_x = 200
Spieler_y = 400
Spielerbreite = 20
Spielerhöhe = 20währendWAHR:
fürFallInPygame.Fall.erhalten():
if event.type == Pygame. AUFHÖREN:
Pygame.aufhören()
aufhören()
Tasten = pygame.key.get_pressed()
WennSchlüssel[pygame. K_LINKS]:
Spieler_x -= 5
WennSchlüssel[pygame. K_RECHTS]:
Spieler_x += 5
wenn Spieler_x + Spieler_Breite > Hindernis_x und Spieler_x < Hindernis_x + hindernis_breiteUndSpieler_y + Spielerhöhe > hindernis_y und spieler_y < hindernis_y + Hindernis_Höhe:
game_over = WAHR
Bildschirm.füllen((0, 0, 0))
Pygame.ziehen.recht(Bildschirm, (255, 0, 0), (Hindernis_x, hindernis_y, hindernis_breite, hindernis_höhe))
Pygame.ziehen.recht(Bildschirm, (0, 255, 0), (Spieler_x, Spieler_y, Spielerbreite, Spielerhöhe))
Pygame.Anzeige.aktualisieren()
Im obigen Code haben Sie das Spielfenster eingerichtet und die Spielvariablen deklariert. Sie haben auch Benutzereingaben bearbeitet und die Elemente auf den Bildschirm gezeichnet.
Erstellen des Startmenüs
Nachdem Sie nun ein einfaches Spiel haben, erstellen wir ein Startmenü. Dazu müssen Sie eine globale Variable für den Spielstatus deklarieren. Diese Variable verfolgt den aktuellen Status des Spiels, z. B. ob das Startmenü aktiv ist oder das Spiel läuft. Sie müssen diese Variable am Anfang Ihres Spielcodes hinzufügen:
game_state = "Startmenü"
Als Nächstes fügen Sie eine Funktion hinzu, um das Startmenü auf dem Bildschirm zu zeichnen. Sie können PyGame-Funktionen verwenden, um Text, Schaltflächen und andere Elemente auf dem Bildschirm zu zeichnen.
defdraw_start_menu():
Bildschirm.füllen((0, 0, 0))
font = pygame.font. SysFont('arial', 40)
Titel = Schrift.render('Mein Spiel', WAHR, (255, 255, 255))
start_button = font.render('Start', WAHR, (255, 255, 255))
screen.blit (Titel, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
Pygame.Anzeige.aktualisieren()
Anschließend können Sie die hinzufügen draw_start_menu() Funktion zur Hauptspielschleife.
währendWAHR:
fürFallInPygame.Fall.erhalten():
if event.type == Pygame. AUFHÖREN:
Pygame.aufhören()
aufhören()
Wenn game_state == "Startmenü":
draw_start_menu()
Wenn game_state == "Spiel":
Tasten = pygame.key.get_pressed()
# Rest des Codes
Nun wird das Startmenü auf den Bildschirm gezeichnet. Der letzte Schritt besteht darin, die Benutzereingaben zu verarbeiten. Du kannst eine if-Anweisung hinzufügen zur Hauptspielschleife, um zu überprüfen, ob der Benutzer die Starttaste gedrückt hat.
Wenn game_state == "Startmenü":
Tasten = pygame.key.get_pressed()
WennSchlüssel[pygame. K_SPACE]:
Spieler_x = 200
Spieler_y = 400
game_state = "Spiel"
game_over = FALSCH
Mit diesem Code startet das Spiel, wenn der Benutzer die Starttaste drückt.
Implementieren des Game-Over-Bildschirms
Nachdem Sie nun das Startmenü haben, erstellen wir den Game Over-Bildschirm. Diese Funktion sollte das Endergebnis und eine Game-Over-Nachricht anzeigen.
defdraw_game_over_screen():
Bildschirm.füllen((0, 0, 0))
font = pygame.font. SysFont('arial', 40)
Titel = Schrift.render('Spiel ist aus', WAHR, (255, 255, 255))
restart_button = font.render('R - Neustart', WAHR, (255, 255, 255))
quit_button = font.render('Q - Beenden', WAHR, (255, 255, 255))
screen.blit (Titel, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/3))
screen.blit (restart_button, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
Pygame.Anzeige.aktualisieren()
Sie können diese Funktion dann der Hauptspielschleife hinzufügen.
Wenn game_state == "Startmenü":
draw_start_menu()
Wenn game_state == "Spiel ist aus":
draw_game_over_screen()
Wenn game_state == "Spiel":
Tasten = pygame.key.get_pressed()
WennSchlüssel[pygame. K_LINKS]:
Spieler_x -= 5
WennSchlüssel[pygame. K_RECHTS]:
Spieler_x += 5
wenn Spieler_x + Spieler_Breite > Hindernis_x und Spieler_x < Hindernis_x + hindernis_breiteUndSpieler_y + Spielerhöhe > hindernis_y und spieler_y < hindernis_y + Hindernis_Höhe:
game_over = WAHR
game_state = "Spiel ist aus"
Schließlich müssen Sie Benutzereingaben verarbeiten, um die Auswahl des Benutzers zu verarbeiten. Sie können der Hauptspielschleife eine if-Anweisung hinzufügen, um zu überprüfen, ob der Benutzer die Neustart- oder Beenden-Schaltfläche gedrückt hat.
Wenn game_state == "Startmenü":
Tasten = pygame.key.get_pressed()
WennSchlüssel[pygame. K_SPACE]:
game_state = "Spiel"
Spieler_x = 200
Spieler_y = 400
game_state = "Spiel"
game_over = FALSCH
Wenn game_state == "Spiel ist aus":
Tasten = pygame.key.get_pressed()
WennSchlüssel[pygame. K_r]:
game_state = "Startmenü"
WennSchlüssel[pygame. K_q]:
Pygame.aufhören()
aufhören()
Mit diesem Code wird das Spiel neu gestartet, wenn der Benutzer die Taste „R“ drückt, und beendet, wenn der Benutzer die Taste „Q“ auf der Tastatur drückt.
Unten ist der vollständige Code:
importieren Pygame
Pygame.drin()
Bildschirmbreite = 750
Bildschirmhöhe = 450
screen = pygame.display.set_mode((screen_width, screen_height))
Hindernis_x = 400
hindernis_y = 400
hindernis_breite = 40
hindernis_höhe = 40
Spieler_x = 200
Spieler_y = 400
Spielerbreite = 20
Spielerhöhe = 20
game_state = "Startmenü"defdraw_start_menu():
Bildschirm.füllen((0, 0, 0))
font = pygame.font. SysFont('arial', 40)
Titel = Schrift.render('Mein Spiel', WAHR, (255, 255, 255))
start_button = font.render('Start', WAHR, (255, 255, 255))
screen.blit (Titel, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/2))
screen.blit (start_button, (screen_width/2 - start_button.get_width()/2, screen_height/2 + start_button.get_height()/2))
Pygame.Anzeige.aktualisieren()defdraw_game_over_screen():
Bildschirm.füllen((0, 0, 0))
font = pygame.font. SysFont('arial', 40)
Titel = Schrift.render('Spiel ist aus', WAHR, (255, 255, 255))
restart_button = font.render('R - Neustart', WAHR, (255, 255, 255))
quit_button = font.render('Q - Beenden', WAHR, (255, 255, 255))
screen.blit (Titel, (screen_width/2 - title.get_width()/2, screen_height/2 - title.get_height()/3))
screen.blit (restart_button, (screen_width/2 - restart_button.get_width()/2, screen_height/1.9 + restart_button.get_height()))
screen.blit (quit_button, (screen_width/2 - quit_button.get_width()/2, screen_height/2 + quit_button.get_height()/2))
Pygame.Anzeige.aktualisieren()
währendWAHR:
fürFallInPygame.Fall.erhalten():
if event.type == Pygame. AUFHÖREN:
Pygame.aufhören()
aufhören()
Wenn game_state == "Startmenü":
draw_start_menu()
Tasten = pygame.key.get_pressed()
WennSchlüssel[pygame. K_SPACE]:
Spieler_x = 200
Spieler_y = 400
game_state = "Spiel"
game_over = FALSCH
elf game_state == "Spiel ist aus":
draw_game_over_screen()
Tasten = pygame.key.get_pressed()
WennSchlüssel[pygame. K_r]:
game_state = "Startmenü"
WennSchlüssel[pygame. K_q]:
Pygame.aufhören()
aufhören()
elf game_state == "Spiel":
Tasten = pygame.key.get_pressed()
WennSchlüssel[pygame. K_LINKS]:
Spieler_x -= 5
WennSchlüssel[pygame. K_RECHTS]:
Spieler_x += 5
wenn Spieler_x + Spieler_Breite > Hindernis_x und Spieler_x < Hindernis_x + hindernis_breiteUndSpieler_y + Spielerhöhe > hindernis_y und spieler_y < hindernis_y + Hindernis_Höhe:
game_over = WAHR
game_state = "Spiel ist aus"
Bildschirm.füllen((0, 0, 0))
Pygame.ziehen.recht(Bildschirm, (255, 0, 0), (Hindernis_x, hindernis_y, hindernis_breite, hindernis_höhe))
Pygame.ziehen.recht(Bildschirm, (0, 255, 0), (Spieler_x, Spieler_y, Spielerbreite, Spielerhöhe))
Pygame.Anzeige.aktualisieren()
elf Spiel ist aus:
game_state = "Spiel ist aus"
game_over = FALSCH
Der Code beginnt mit dem Importieren der Pygame Modul und initialisieren es. Es erstellt dann ein Spielfenster und deklariert die erforderlichen Spielvariablen, einschließlich der Position des Spielers und des Hindernisses, der Dimension und des Spielstatus.
Der Code definiert zwei Funktionen, draw_start_menu() Und draw_game_over_screen(), um das Startmenü und den Game Over-Bildschirm zu zeichnen. Diese Funktionen verwenden die PyGame-Funktionen, um Text und Schaltflächen auf den Bildschirm zu zeichnen.
Die Hauptspielschleife beginnt mit der Behandlung von Ereignissen und der Überprüfung des Spielstatus. Wenn der Spielstand ist Startmenü, wird das Startmenü auf den Bildschirm gezeichnet. Wenn der Spielstand ist Spiel ist aus, wird der Game-Over-Bildschirm auf den Bildschirm gezeichnet. Wenn der Spielstatus etwas anderes ist, wird das Spiel aktualisiert und zieht den Spieler und das Hindernis auf den Bildschirm.
Das Spiel wird aktualisiert, indem Tastendrücke gehandhabt und auf eine Kollision zwischen dem Spieler und dem Hindernis geprüft wird. Kommt es zu einer Kollision, setzt das Spiel die Spiel ist aus Flagge zu WAHR und setzt den Spielstatus auf Spiel ist aus.
Nachdem das Spiel aktualisiert wurde, werden der Spieler und das Hindernis auf den Bildschirm gezeichnet. Schließlich prüft der Code, ob die Spiel ist aus Flag gesetzt ist, und wenn dies der Fall ist, wird das Flag zurückgesetzt und der Spielstatus auf gesetzt Spiel ist aus.
Dieser Vorgang wird kontinuierlich wiederholt, bis das Spielfenster geschlossen wird.
Erhöhen Sie das Benutzerengagement mit einer optisch ansprechenden Benutzeroberfläche
Die Verwendung einer gut gestalteten Benutzeroberfläche (UI) kann die Benutzerinteraktion in einem PyGame-Spiel erheblich steigern. Eine klare und leicht lesbare Schriftart, optisch ansprechende Grafiken, einfache Navigation und Benutzerfeedback sind alles wichtige Elemente, die bei der Gestaltung der Benutzeroberfläche berücksichtigt werden müssen. Indem Sie diese Elemente implementieren, können Sie eine Benutzeroberfläche erstellen, die dazu beiträgt, dass der Spieler interessiert bleibt und in das Spiel eintaucht.
Denken Sie daran, Ihre Benutzeroberfläche zu testen und Feedback von Spielern einzuholen, um sicherzustellen, dass sie das Engagement steigert. Insgesamt kann die Zeit, die Sie sich nehmen, um eine starke Benutzeroberfläche zu erstellen, die Erfahrung und den Spaß des Spielers an Ihrem Spiel erheblich verbessern.