So erstellen Sie mit PyGame ein Startmenü und einen Game Over-Bildschirm

So erstellen Sie mit PyGame ein Startmenü und einen Game Over-Bildschirm

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 verwenden das Pygame -Modul, um auf die Funktionen von PyGame zuzugreifen. Um das Modul zu installieren, können Sie den Pip-Paketmanager verwenden:

pip install 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:

import pygame
pygame.init()

screen_width = 750
screen_height = 450
screen = pygame.display.set_mode((screen_width, screen_height))

obstacle_x = 400
obstacle_y = 400
obstacle_width = 40
obstacle_height = 40
player_x = 200
player_y = 400
player_width = 20
player_height = 20

while True:

    for event in pygame.event.get():

        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        player_x -= 5
    if keys[pygame.K_RIGHT]:
        player_x += 5

    if player_x + player_width > obstacle_x and player_x < obstacle_x + obstacle_width and player_y + player_height > obstacle_y and player_y < obstacle_y + obstacle_height:
        game_over = True

    screen.fill((0, 0, 0))
    pygame.draw.rect(screen, (255, 0, 0), (obstacle_x, obstacle_y, obstacle_width, obstacle_height))
    pygame.draw.rect(screen, (0, 255, 0), (player_x, player_y, player_width, player_height))
    pygame.display.update()

Im obigen Code haben Sie das Spielfenster eingerichtet und die Spielvariablen deklariert. Sie haben auch Benutzereingaben bearbeitet und die Elemente auf den Bildschirm gezeichnet.

einfaches Spiel mit Pygame

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 = "start_menu"

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.

def draw_start_menu():
    screen.fill((0, 0, 0))
    font = pygame.font.SysFont('arial', 40)
    title = font.render('My Game', True, (255, 255, 255))
    start_button = font.render('Start', True, (255, 255, 255))
    screen.blit(title, (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.display.update()

Sie können dann die Funktion draw_start_menu() zur Hauptspielschleife hinzufügen.

while True:

   for event in pygame.event.get():
       if event.type == pygame.QUIT:
           pygame.quit()
           quit()

   if game_state == "start_menu":
       draw_start_menu()

   if game_state == "game":
       keys = pygame.key.get_pressed()
       # rest of the code

Nun wird das Startmenü auf den Bildschirm gezeichnet. Der letzte Schritt besteht darin, die Benutzereingaben zu verarbeiten. Sie können der Hauptspielschleife eine if-Anweisung hinzufügen, um zu überprüfen, ob der Benutzer die Starttaste gedrückt hat.

if game_state == "start_menu":
    keys = pygame.key.get_pressed()
    if keys[pygame.K_SPACE]:
        player_x = 200
        player_y = 400
        game_state = "game"
        game_over = False

Mit diesem Code startet das Spiel, wenn der Benutzer die Starttaste drückt.

Pygame einfaches Spiel mit Startbildschirm

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.

def draw_game_over_screen():
   screen.fill((0, 0, 0))
   font = pygame.font.SysFont('arial', 40)
   title = font.render('Game Over', True, (255, 255, 255))
   restart_button = font.render('R - Restart', True, (255, 255, 255))
   quit_button = font.render('Q - Quit', True, (255, 255, 255))
   screen.blit(title, (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.display.update()

Sie können diese Funktion dann der Hauptspielschleife hinzufügen.

if game_state == "start_menu":
    draw_start_menu()
if game_state == "game_over":
    draw_game_over_screen()

if game_state == "game":
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        player_x -= 5
    if keys[pygame.K_RIGHT]:
        player_x += 5

if player_x + player_width > obstacle_x and player_x < obstacle_x + obstacle_width and player_y + player_height > obstacle_y and player_y < obstacle_y + obstacle_height:
    game_over = True
    game_state = "game_over"

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.

if game_state == "start_menu":
    keys = pygame.key.get_pressed()
    if keys[pygame.K_SPACE]:
        game_state = "game"
       player_x = 200
       player_y = 400
       game_state = "game"
       game_over = False

if game_state == "game_over":
    keys = pygame.key.get_pressed()
    if keys[pygame.K_r]:
        game_state = "start_menu"
    if keys[pygame.K_q]:
        pygame.quit()
        quit()

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.

Pygame einfaches Spiel mit Gameover-Bildschirm

Unten ist der vollständige Code:

import pygame

pygame.init()
screen_width = 750
screen_height = 450
screen = pygame.display.set_mode((screen_width, screen_height))
obstacle_x = 400
obstacle_y = 400
obstacle_width = 40
obstacle_height = 40
player_x = 200
player_y = 400
player_width = 20
player_height = 20
game_state = "start_menu"

def draw_start_menu():
   screen.fill((0, 0, 0))
   font = pygame.font.SysFont('arial', 40)
   title = font.render('My Game', True, (255, 255, 255))
   start_button = font.render('Start', True, (255, 255, 255))
   screen.blit(title, (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.display.update()

def draw_game_over_screen():
   screen.fill((0, 0, 0))
   font = pygame.font.SysFont('arial', 40)
   title = font.render('Game Over', True, (255, 255, 255))
   restart_button = font.render('R - Restart', True, (255, 255, 255))
   quit_button = font.render('Q - Quit', True, (255, 255, 255))
   screen.blit(title, (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.display.update()

while True:
   for event in pygame.event.get():
       if event.type == pygame.QUIT:
           pygame.quit()
           quit()
   if game_state == "start_menu":
       draw_start_menu()
       keys = pygame.key.get_pressed()
       if keys[pygame.K_SPACE]:
           player_x = 200
           player_y = 400
           game_state = "game"
           game_over = False
   elif game_state == "game_over":
       draw_game_over_screen()
       keys = pygame.key.get_pressed()
       if keys[pygame.K_r]:
           game_state = "start_menu"
       if keys[pygame.K_q]:
           pygame.quit()
           quit()

   elif game_state == "game":
       keys = pygame.key.get_pressed()
       if keys[pygame.K_LEFT]:
           player_x -= 5
       if keys[pygame.K_RIGHT]:
           player_x += 5

       if player_x + player_width > obstacle_x and player_x < obstacle_x + obstacle_width and player_y + player_height > obstacle_y and player_y < obstacle_y + obstacle_height:
           game_over = True
           game_state = "game_over"

       screen.fill((0, 0, 0))
       pygame.draw.rect(screen, (255, 0, 0), (obstacle_x, obstacle_y, obstacle_width, obstacle_height))
       pygame.draw.rect(screen, (0, 255, 0), (player_x, player_y, player_width, player_height))
       pygame.display.update()

   elif game_over:
       game_state = "game_over"
       game_over = False

Der Code beginnt mit dem Importieren des Pygame -Moduls und dessen Initialisierung. 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 Spielstatus start_menu ist , wird das Startmenü auf den Bildschirm gezeichnet. Wenn der Spielzustand game_over ist , 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. Wenn es zu einer Kollision kommt, setzt das Spiel das game_over- Flag auf True und den Spielstatus auf game_over .

Nachdem das Spiel aktualisiert wurde, werden der Spieler und das Hindernis auf den Bildschirm gezeichnet. Schließlich prüft der Code, ob das game_over- Flag gesetzt ist, und wenn dies der Fall ist, setzt er das Flag zurück und setzt den Spielstatus auf game_over .

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert