logo

So entwickeln Sie ein Spiel in Python

Die anpassungsfähigste Sprache ist Python, die in nahezu allen Branchen verwendet wird, darunter Spieleentwicklung, Webentwicklung, maschinelles Lernen, künstliche Intelligenz und GUI-Anwendungen.

Das Spiel wird mit dem Pygame-Paket entwickelt, einem integrierten Feature von Python. Mit einem rudimentären Verständnis der Python-Programmierung können wir mithilfe des Pygame-Moduls visuell ansprechende Spiele mit geeigneten Animationen, Soundeffekten und Musik erstellen.

Zur Erstellung von Videospielen wird eine plattformübergreifende Bibliothek namens Pygame verwendet. Es verfügt über Soundbibliotheken und Computervisualisierungen, um dem Spieler ein typisches Spielerlebnis zu bieten.

Pete Shinners entwickelt es als Ersatz für PySDL.

Voraussetzungen für Pygame

Um Pygame zu lernen, müssen wir die Programmiersprache Python verstehen.

Datum zum String

Pygame installieren

Um Pygame zu installieren, öffnen Sie ein Befehlszeilenterminal und geben Sie den folgenden Befehl ein.

 pip install pygame 

Wir können es auch über die IDE installieren. Weitere Installationsanleitungen finden Sie in unserem vollständigen Pygame-Tutorial (https://www.javatpoint.com/pygame). Hier finden Sie alle wesentlichen Pygame-Erklärungen.

xor cpp

Einfaches Pygame-Beispiel

Hier ist das folgende Beispiel für die Erstellung eines einfachen Pygame-Fensters.

 import pygame pygame.init() screen = pygame.display.set_mode((400,500)) done = False while not done: for event in pygame.event.get(): if event.type == pygame.QUIT: done = True pygame.display.flip() 

Ausgabe:

So entwickeln Sie ein Spiel in Python

Erläuterung:

Der bereitgestellte Code öffnet ein 400 x 500 Pixel großes Pygame-Fenster und startet eine Schleife, die ständig nach Ereignissen Ausschau hält. Die Schleife ändert die Variable „done“ in „True“, wodurch die Schleife und das Programm beendet werden, wenn ein QUIT-Ereignis erkannt wird (normalerweise, wenn der Benutzer das Fenster verlässt). Aktualisiert die Anzeige und stellt dank der Methode „pygame.display.flip()“ sicher, dass alle Änderungen auf dem Bildschirm angezeigt werden. Kurz gesagt: Der Code generiert ein kleines Pygame-Fenster, das aktiv bleibt, bis der Benutzer es schließt, und eine grundlegende ereignisgesteuerte Programmstruktur aufweist.

Alle Grafiken werden im Pygame-Fenster gezeichnet.

Lassen Sie uns die grundlegende Syntax des obigen Programms verstehen.

    Pygame importieren:Es ist das Modul, das uns Zugriff auf alle Funktionen von Pygame gibt.Hitze():Es wird verwendet, um jedes der notwendigen Module des Pygames zu initialisieren.display.set_mode((width, height)):Es wird verwendet, um die Größe des Fensters anzupassen. Es gibt den Gegenstand an der Oberfläche zurück. Die grafischen Aktionen werden über das Oberflächenobjekt ausgeführt.event.get():Das Ergebnis ist eine leere Ereigniswarteschlange. Wenn wir es nicht aufrufen, erkennt das Betriebssystem, dass das Spiel nicht reagiert, und die Fenstermeldungen häufen sich.AUFHÖREN:Wenn wir auf die Kreuzschaltfläche in der Ecke des Fensters klicken, wird das Ereignis verworfen.display.flip():Alle Aktualisierungen des Spiels werden darin berücksichtigt. Wir müssen die Anzeige kontaktieren, wann immer wir Änderungen vornehmen.flip() ist eine Funktion.

Auf der Pygame-Oberfläche kann jede beliebige Form gezeichnet werden, einschließlich wunderschöner Schriftarten und Bilder. Zahlreiche in Pygame integrierte Methoden ermöglichen es Ihnen, geometrische Formen auf dem Bildschirm zu zeichnen. Diese Formen stellen die ersten Schritte bei der Erstellung eines Spiels dar.

Periodenschlüssel

Sehen wir uns die folgende Abbildung eines Formulars an, das auf einem Bildschirm gezeichnet wird.

Beispiel -

 import pygame from math import pi pygame.init() # size variable is using for set screen size size = [400, 300] screen = pygame.display.set_mode(size) pygame.display.set_caption('Example program to draw geometry') # done variable is using as flag done = False clock = pygame.time.Clock() while not done: # clock.tick() limits the while loop to a max of 10 times per second. clock.tick(10) for event in pygame.event.get(): # User did something if event.type == pygame.QUIT: # If user clicked on close symbol done = True # done variable that we are complete, so we exit this loop # All drawing code occurs after the for loop and but # inside the main while done==False loop. # Clear the default screen background and set the white screen background screen.fill((0, 0, 0)) # Draw on the screen a green line which is 5 pixels wide. pygame.draw.line(screen, (0, 255, 0), [0, 0], [50, 30], 5) # Draw on the screen a green line which is 5 pixels wide. pygame.draw.lines(screen, (0, 0, 0), False, [[0, 80], [50, 90], [200, 80], [220, 30]], 5) # Draw a rectangle outline pygame.draw.rect(screen, (0, 0, 0), [75, 10, 50, 20], 2) # Draw a solid rectangle pygame.draw.rect(screen, (0, 0, 0), [150, 10, 50, 20]) # This draw an ellipse outline, using a rectangle as the outside boundaries pygame.draw.ellipse(screen, (255, 0, 0), [225, 10, 50, 20], 2) # This draw a solid ellipse, using a rectangle as the outside boundaries pygame.draw.ellipse(screen, (255, 0, 0), [300, 10, 50, 20]) # Draw a triangle using the polygon function pygame.draw.polygon(screen, (0, 0, 0), [[100, 100], [0, 200], [200, 200]], 5) # This draw a circle pygame.draw.circle(screen, (0, 0, 255), [60, 250], 40) # This draw an arc pygame.draw.arc(screen, (0, 0, 0), [210, 75, 150, 125], 0, pi / 2, 2) # This function must write after all the other drawing commands. pygame.display.flip() # Quite the execution when clicking on close pygame.quit() 

Ausgabe:

So entwickeln Sie ein Spiel in Python

Erläuterung:

Algebra der Mengen

Das angegebene Python-Programm erstellt mithilfe des Pygame-Pakets ein grafisches Fenster mit verschiedenen darin gezeichneten geometrischen Formen. Das Programm erstellt ein 400 x 300 Pixel großes Pygame-Fenster und startet dann eine Schleife, die ständig nach Ereignissen Ausschau hält und sicherstellt, dass das Fenster geöffnet bleibt, bis der Benutzer es verlässt. Es löscht den Bildschirm zu Beginn dieser Schleife und verwendet dann die Zeichenroutinen von Pygame, um verschiedene Formen mit unterschiedlichen Farben und Linienbreiten zu erstellen. Zu diesen Formen gehören Linien, Polygone, Ellipsen, Kreise und Bögen. Für jedes Formular sind die richtigen Koordinaten und Eigenschaften definiert. Abschließend wird „pygame.display.flip()“ verwendet, um die Anzeige zu aktualisieren. Das Programm beendet Pygame beim Schließen des Fensters.

Die Anwendung dient als Beispiel für die Anpassungsfähigkeit und Vielfalt der Zeichenfunktionen von Pygame und bietet einen Rahmen für die Entwicklung interaktiver grafischer Anwendungen. Entwickler können innerhalb der grafischen Umgebung von Pygame eine Vielzahl visueller Komponenten erstellen, indem sie Parameter wie Koordinaten, Farben und Linienbreiten anpassen. Dies ermöglicht die Erstellung interaktiver Multimedia-Anwendungen, Spiele und Simulationen.

Beispiel – Entwicklung eines Schlangenspiels mit Pygame

Programm -

 # Snake Tutorial Using Pygame import math import random import pygame import tkinter as tk from tkinter import messagebox class cube(object): rows = 20 w = 500 def __init__(self, start, dirnx=1, dirny=0, color=(255, 0, 0)): self.pos = start self.dirnx = 1 self.dirny = 0 self.color = color def move(self, dirnx, dirny): self.dirnx = dirnx self.dirny = dirny self.pos = (self.pos[0] + self.dirnx, self.pos[1] + self.dirny) def draw(self, surface, eyes=False): dis = self.w // self.rows i = self.pos[0] j = self.pos[1] pygame.draw.rect(surface, self.color, (i * dis + 1, j * dis + 1, dis - 2, dis - 2)) if eyes: centre = dis // 2 radius = 3 circleMiddle = (i * dis + centre - radius, j * dis + 8) circleMiddle2 = (i * dis + dis - radius * 2, j * dis + 8) pygame.draw.circle(surface, (0, 0, 0), circleMiddle, radius) pygame.draw.circle(surface, (0, 0, 0), circleMiddle2, radius) # This class is defined for snake design and its movement class snake(object): body = [] turns = {} def __init__(self, color, pos): self.color = color self.head = cube(pos) self.body.append(self.head) self.dirnx = 0 self.dirny = 1 def move(self): for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() keys = pygame.key.get_pressed() # It will manage the keys movement for the snake for key in keys: if keys[pygame.K_LEFT]: self.dirnx = -1 self.dirny = 0 self.turns[self.head.pos[:]] = [self.dirnx, self.dirny] elif keys[pygame.K_RIGHT]: self.dirnx = 1 self.dirny = 0 self.turns[self.head.pos[:]] = [self.dirnx, self.dirny] elif keys[pygame.K_UP]: self.dirnx = 0 self.dirny = -1 self.turns[self.head.pos[:]] = [self.dirnx, self.dirny] elif keys[pygame.K_DOWN]: self.dirnx = 0 self.dirny = 1 self.turns[self.head.pos[:]] = [self.dirnx, self.dirny] # Snake when hit the boundary wall for i, c in enumerate(self.body): p = c.pos[:] if p in self.turns: turn = self.turns[p] c.move(turn[0], turn[1]) if i == len(self.body) - 1: self.turns.pop(p) else: if c.dirnx == -1 and c.pos[0] = c.rows - 1: c.pos = (0, c.pos[1]) elif c.dirny == 1 and c.pos[1] &gt;= c.rows - 1: c.pos = (c.pos[0], 0) elif c.dirny == -1 and c.pos[1] <= 0 1 0: c.pos="(c.pos[0]," c.rows - 1) else: c.move(c.dirnx, c.dirny) def reset(self, pos): self.head="cube(pos)" self.body="[]" self.body.append(self.head) self.turns="{}" self.dirnx="0" self.dirny="1" # it will add the new cube in snake tail after every successful score addcube(self): dx, dy="tail.dirnx," tail.dirny if dx="=" and self.body.append(cube((tail.pos[0] 1, tail.pos[1]))) elif -1 + 1: self.body.append(cube((tail.pos[0], tail.pos[1] 1))) -1: self.body[-1].dirnx="dx" self.body[-1].dirny="dy" draw(self, surface): for i, c enumerate(self.body): i="=" c.draw(surface, true) c.draw(surface) drawgrid(w, rows, sizebtwn="w" rows x="0" y="0" l range(rows): draw grid line pygame.draw.line(surface, (255, 255, 255), (x, 0), w)) (0, y), (w, y)) this class define game surface redrawwindow(surface): global width, s, snack is used to surface.fill((0, 0, 0)) s.draw(surface) snack.draw(surface) drawgrid(width, surface) pygame.display.update() randomsnack(rows, item): positions="item.body" while true: len(list(filter(lambda z: z.pos="=" positions)))> 0: continue else: break return (x, y) # Using Tkinter function to display message def message_box(subject, content): root = tk.Tk() root.attributes(&apos;-topmost&apos;, True) root.withdraw() messagebox.showinfo(subject, content) try: root.destroy() except: pass # main() function def main(): global width, rows, s, snack width = 500 rows = 20 win = pygame.display.set_mode((width, width)) s = snake((255, 0, 0), (10, 10)) snack = cube(randomSnack(rows, s), color=(0, 255, 0)) flag = True clock = pygame.time.Clock() while flag: pygame.time.delay(50) clock.tick(10) s.move() if s.body[0].pos == snack.pos: s.addCube() snack = cube(randomSnack(rows, s), color=(0, 255, 0)) for x in range(len(s.body)): if s.body[x].pos in list(map(lambda z: z.pos, s.body[x + 1:])): print(&apos;Score: 
&apos;, len(s.body)) message_box(&apos;You Lost!
&apos;, &apos;Play again...
&apos;) s.reset((10, 10)) break redrawWindow(win) pass main() </=>

Ausgabe:

So entwickeln Sie ein Spiel in Python

Wenn die Schlange sich selbst berührt, beendet sie das Spiel und zeigt die folgende Meldung an.

So entwickeln Sie ein Spiel in Python

Um fortzufahren, klicken Sie einfach auf die Schaltfläche „OK“. Das Pycharm-Terminal zeigt unsere Punktzahl an (wir haben die Pycharm-IDE verwendet, Sie können jedoch jede beliebige Python-IDE verwenden).

So entwickeln Sie ein Spiel in Python

Erläuterung:

Int-zu-String-Konvertierung in Java

Das bereitgestellte Python-Skript verwendet das Pygame-Paket, um ein einfaches Snake-Spiel zu erstellen. Es erstellt Klassen sowohl für die Schlange als auch für die einzelnen Würfel, aus denen ihr Körper besteht. Mit Pygame wird das Spielfenster eingerichtet, das eine Gitterstruktur und eine sich bewegende Schlange aufweist. Nach dem Verzehr eines „Snack“-Würfels verlängert sich die Schlange, und wenn sie gegen sich selbst oder gegen die Begrenzungswände läuft, ist das Spiel vorbei.

Um die Richtung der Schlange zu verwalten, Snacks an zufälligen Punkten im Gitter zu erzeugen, Kollisionen zwischen Kopf und Körper der Schlange zu erkennen, den Spielstatus zu aktualisieren und das Spielfenster neu zu zeichnen, muss die Spiellogik Benutzereingaben verarbeiten. Um Spielinteraktionen und visuelle Aktualisierungen zu steuern, nutzt das Skript die Ereignisverarbeitungs- und Zeichenmethoden von Pygame. Es verfügt außerdem über eine grundlegende Nachrichtenbox-Funktion, die Tkinter verwendet, um dem Spieler Nachrichten anzuzeigen, beispielsweise wenn er ein Spiel verliert. Insgesamt zeigt das Skript Schlüsselideen der Pygame-Spielprogrammierung und bietet eine rudimentäre Wiedergabe des klassischen Snake-Spiels.