Einführung
Dieses Projekt wird Ihnen den Prozess des Erstellens eines Snake-Spiels mit Python und der Pygame-Bibliothek beibringen. Das Spiel wird ein Spielfenster, eine Schlange, einen Power-Up und einen Score haben. Die Schlange wird sich im Spielfenster bewegen und den Power-Up aufessen. Wenn die Schlange den Power-Up aufisst, wird die Länge der Schlange um eins erhöht. Der Score wird auf dem Bildschirm angezeigt.
👀 Vorschau

🎯 Aufgaben
In diesem Projekt lernen Sie:
- Wie man ein Spielfenster mit Pygame erstellt
- Wie man Benutzereingaben verarbeitet, um die Bewegung der Schlange zu steuern
- Wie man die Position der Schlange erstellt und aktualisiert
- Wie man die Schlange und den Power-Up auf dem Bildschirm zeichnet
- Wie man Kollisionen zwischen der Schlange und dem Power-Up erkennt
- Wie man den Score verfolgt
- Wie man den Score auf dem Bildschirm anzeigt
🏆 Errungenschaften
Nach Abschluss dieses Projekts werden Sie in der Lage sein:
- Mit Pygame ein grafisches Spielfenster zu erstellen
- Benutzereingaben zu verarbeiten, um das Spiel zu steuern
- Spieleobjekte zu erstellen und zu aktualisieren
- Kollisionen in einem Spiel zu erkennen
- Den Spielscore anzuzeigen und zu aktualisieren
Erstelle die Projekt-Dateien
Erstellen Sie eine neue Datei mit dem Namen snake_game.py und öffnen Sie sie in einem Code-Editor.
cd ~/project
touch snake_game.py
sudo pip install pygame
Importiere notwendige Module
In der Datei snake_game.py importieren Sie die Module pygame und random:
import pygame
import random
Initialisiere Pygame
Nachdem die Module importiert wurden, initialisieren Sie Pygame:
pygame.init()
Stelle das Spielfenster ein
Definieren Sie die Breite, Höhe und die Bilder pro Sekunde (Frames per Second, FPS) des Spielfensters:
WIDTH = 800
HEIGHT = 600
FPS = 10
Definiere Farben
Definieren Sie die Farben, die im Spiel verwendet werden:
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)
BACKGROUND_COLOR = (50, 50, 50)
Richte das Spielfenster ein
Richten Sie das Spielfenster mit der definierten Breite und Höhe ein:
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Snake Game")
clock = pygame.time.Clock()
In dem obigen Code wird pygame.display.set_mode() verwendet, um die Anzeige mit der angegebenen Breite und Höhe zu initialisieren. pygame.display.set_caption() wird verwendet, um den Titel des Spielfensters festzulegen. pygame.time.Clock() wird verwendet, um die Zeit im Spiel zu verfolgen.
Stelle die Schlange ein
Definieren Sie die Blöckeinheit und die Geschwindigkeit der Schlange:
snake_block_size = 20
snake_speed = 5
Wir setzen die Blöckeinheit auf 20 und die Geschwindigkeit auf 5. Dies bedeutet, dass sich die Schlange jeweils um 5 Pixel bewegt.
Stelle die Spielvariablen ein
Definieren Sie die Schriftarten und Schriftgrößen für die Anzeige des Scores:
font_style = pygame.font.SysFont(None, 50)
score_font = pygame.font.SysFont(None, 35)
Stelle die Power-Up Funktion ein
Definieren Sie die Blöckeinheit der Power-Ups:
powerup_block_size = 20
Definiere Funktionen
Definieren Sie die folgenden Funktionen:
draw_snake(snake_block_size, snake_list)
Diese Funktion zeichnet die Schlange auf dem Bildschirm:
def draw_snake(snake_block_size, snake_list):
for x in snake_list:
pygame.draw.rect(
screen, GREEN, [x[0], x[1], snake_block_size, snake_block_size]
)
In dem obigen Code wird pygame.draw.rect() verwendet, um ein Rechteck auf dem Bildschirm zu zeichnen. Der erste Parameter ist der Bildschirm, der zweite Parameter ist die Farbe und der dritte Parameter ist die Position und Größe des Rechtecks.
draw_powerup(powerup_x, powerup_y)
Diese Funktion zeichnet das Power-Up auf dem Bildschirm:
def draw_powerup(powerup_x, powerup_y):
pygame.draw.rect(
screen, RED, [powerup_x, powerup_y, powerup_block_size, powerup_block_size]
)
In dem obigen Code wird pygame.draw.rect() verwendet, um ein Rechteck auf dem Bildschirm zu zeichnen. Der erste Parameter ist der Bildschirm, der zweite Parameter ist die Farbe und der dritte Parameter ist die Position und Größe des Rechtecks.
display_score(score)
Diese Funktion zeigt den Score auf dem Bildschirm an:
def display_score(score):
value = score_font.render("Score: " + str(score), True, WHITE)
screen.blit(value, [10, 10])
In dem obigen Code wird score_font.render() verwendet, um den Score auf dem Bildschirm zu rendern. Der erste Parameter ist der Text, der angezeigt werden soll, der zweite Parameter ist die Antialiasing-Einstellung und der dritte Parameter ist die Farbe des Texts. screen.blit() wird verwendet, um den Text auf dem Bildschirm zu zeichnen. Der erste Parameter ist der Text, der angezeigt werden soll, und der zweite Parameter ist die Position des Texts.
game_loop()
Diese Funktion enthält die Hauptspielschleife:
def game_loop():
## Game loop code goes here
Vervollständige den Code der Spielschleife
Vervollständigen Sie die game_loop()-Funktion, indem Sie die Spiellogik innerhalb der while-Schleife hinzufügen.
def game_loop():
game_over = False
game_close = False
## Legen Sie die Startposition der Schlange fest
x1 = WIDTH / 2
y1 = HEIGHT / 2
x1_change = 0
y1_change = 0
## Legen Sie den Körper der Schlange fest
snake_list = []
snake_length = 1
## Legen Sie das Power-Up fest
powerup_x = round(random.randrange(0, WIDTH - powerup_block_size) / 20) * 20
powerup_y = round(random.randrange(0, HEIGHT - powerup_block_size) / 20) * 20
## Legen Sie die Spielschleife fest
while not game_over:
while game_close:
screen.fill(BACKGROUND_COLOR)
message = font_style.render("Press SPACE to play again", True, YELLOW)
screen.blit(message, [WIDTH / 2 - 200, HEIGHT / 2 - 50])
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
game_close = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
game_loop()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x1_change = -snake_block_size
y1_change = 0
elif event.key == pygame.K_RIGHT:
x1_change = snake_block_size
y1_change = 0
elif event.key == pygame.K_UP:
y1_change = -snake_block_size
x1_change = 0
elif event.key == pygame.K_DOWN:
y1_change = snake_block_size
x1_change = 0
if x1 >= WIDTH or x1 < 0 or y1 >= HEIGHT or y1 < 0:
game_close = True
x1 += x1_change
y1 += y1_change
screen.fill(BACKGROUND_COLOR)
pygame.draw.rect(
screen, BLUE, [powerup_x, powerup_y, powerup_block_size, powerup_block_size]
)
snake_head = []
snake_head.append(x1)
snake_head.append(y1)
snake_list.append(snake_head)
if len(snake_list) > snake_length:
del snake_list[0]
for x in snake_list[:-1]:
if x == snake_head:
game_close = True
draw_snake(snake_block_size, snake_list)
display_score(snake_length - 1)
pygame.display.flip()
if x1 == powerup_x and y1 == powerup_y:
powerup_x = round(random.randrange(0, WIDTH - powerup_block_size) / 20) * 20
powerup_y = (
round(random.randrange(0, HEIGHT - powerup_block_size) / 20) * 20
)
snake_length += 1
clock.tick(snake_speed)
pygame.quit()
In dem obigen Code wird pygame.QUIT verwendet, um das Spiel zu beenden. pygame.KEYDOWN wird verwendet, um zu überprüfen, ob eine Taste gedrückt wird. pygame.K_LEFT, pygame.K_RIGHT, pygame.K_UP und pygame.K_DOWN werden verwendet, um zu überprüfen, ob die Pfeiltasten nach links, rechts, oben und unten gedrückt werden, respectively. pygame.draw.rect() wird verwendet, um ein Rechteck auf dem Bildschirm zu zeichnen. Der erste Parameter ist der Bildschirm, der zweite Parameter ist die Farbe und der dritte Parameter ist die Position und Größe des Rechtecks. pygame.display.flip() wird verwendet, um den Bildschirm zu aktualisieren. pygame.time.Clock() wird verwendet, um die Zeit im Spiel zu verfolgen. pygame.time.Clock.tick() wird verwendet, um die FPS des Spiels festzulegen.
Starte das Spiel
Fügen Sie am Ende der Datei Folgendes hinzu, um das Spiel zu starten:
game_loop()
pygame.quit()
Schließlich wechseln Sie zum Desktop und starten Sie das Projekt mit dem folgenden Befehl:
python snake_game.py

Zusammenfassung
Herzlichen Glückwunsch! Sie haben erfolgreich ein Snake-Spiel mit Python und der Pygame-Bibliothek erstellt. In diesem Projekt haben Sie gelernt, wie Sie das Spielfenster einrichten, Farben definieren, die Schlange und das Power-Up zeichnen, den Score anzeigen und die Spiel-Logik implementieren. Sie können jetzt das Spiel starten und es genießen.



