Installieren von Pygame und Erstellen einer Vorlage für die Entwicklung von Spielen in Python 3

Einführung

Die Bibliothek pygame ist ein Open-Source-Modul für die Programmiersprache Python, mit dem Sie Spiele und andere Multimedia-Anwendungen erstellen können. Pygame basiert auf der hoch portablen Entwicklungsbibliothek SDL (Simple DirectMedia Layer) und kann auf vielen Plattformen und Betriebssystemen ausgeführt werden.

Mit dem Pygame-Modul können Sie die Logik und Grafik Ihrer Spiele steuern, ohne sich Gedanken über die Komplexität des Backends machen zu müssen, die für die Arbeit mit Video und Audio erforderlich ist.

In diesem Tutorial wird zunächst Pygame in Ihrer Python-Programmierumgebung installiert und anschließend eine Vorlage zum Entwickeln von Spielen mit Pygame und Python 3 erstellt.

Voraussetzungen

Um dieses Tutorial nutzen zu können, stellen Sie sicher, dass Python 3 und eine Programmierumgebung bereits auf Ihrer https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a- installiert sind. lokale-programmierumgebung-für-python-3 [lokaler computer] oder https://www.digitalocean.com/community/tutorials/installationsanleitung-python-3-und-setup-a-programmierung- Umgebung-auf-einem-Ubuntu-16-04-Server [Server].

Sie sollten auch mit den folgenden Python-Programmierkonzepten vertraut sein:

Wenn Sie eine Programmierumgebung eingerichtet haben und mit Python programming vertraut sind, können Sie mit der Arbeit mit Pygame beginnen.

Pygame installieren

Beginnen wir mit der Aktivierung unserer Python 3-Programmierumgebung:

. /bin/activate

Wenn dies aktiviert ist, kannst du pygame mit pip installieren:

pip install pygame

Sobald Sie diesen Befehl ausführen, sollte eine Ausgabe angezeigt werden, die der folgenden ähnelt:

OutputCollecting pygame
 Using cached pygame-1.9.3-cp35-cp35m-manylinux1_x86_64.whl
Installing collected packages: pygame
Successfully installed pygame-1.9.3

Wenn Sie Pygame auf einem System installiert haben, auf dem Video und Audio verfügbar sind, können Sie Ihre Installation überprüfen, indem Sie den folgenden Befehl ausführen. Daraufhin wird ein Modellspiel ausgeführt, in dem gezeigt wird, wie Pygame mit Grafiken und Sound umgehen kann:

python -m pygame.examples.aliens

Wenn Sie das Beispiel lieber nicht öffnen möchten oder wenn Sie kein AV als Teil Ihres Setups haben, können Sie auch die interaktive Python-Konsole aufrufen, um sicherzustellen, dass Sie das Pygame-Modul importieren können. Geben Sie zuerst den Befehl + python ein, um die Konsole zu starten:

python

Dann können Sie in der Konsole das Modul importieren:

import pygame

Wenn Sie beim Drücken der Taste "+ ENTER " nach dem Befehl keine Fehler erhalten, wissen Sie, dass Pygame erfolgreich installiert wurde. Sie können die interaktive Python-Konsole mit dem Befehl ` quit () +` beenden.

Wenn bei der Installation in der Befehlszeile Probleme auftreten, können Sie das GettingStarted wiki von pygame aufrufen.

In späteren Schritten nehmen wir die Verwendung eines Monitors zur Anzeige der grafischen Benutzeroberfläche als Teil dieses Lernprogramms zur Überprüfung unseres Codes an.

Pygame wird importiert

Um sich mit Pygame vertraut zu machen, erstellen wir eine Datei mit dem Namen "+ our_game.py +", die wir beispielsweise mit dem Nano-Texteditor erstellen können:

nano our_game.py

Wenn Sie ein Projekt in pygame starten, beginnen Sie mit der Anweisung + import +, die für import modules verwendet wird , die Sie oben in Ihre Datei einfügen können:

our_game.py

import pygame

Optional können wir unterhalb der ersten Zeile eine weitere import-Anweisung hinzufügen, um einige der Konstanten und Funktionen von pygame in die https://www.digitalocean.com/community/tutorials/how-to-import-modules-in-python- einzufügen. 3 # using-from - importiere [globalen Namespace] deiner Datei:

our_game.py

import pygame

Nachdem Pygame in unsere Programmdatei importiert wurde, können wir es zum Erstellen einer Spielvorlage verwenden.

Pygame wird initialisiert

Ab hier initialisieren wir die Funktionen von Pygame mit der Funktion "+ init () +", die für "initialize" steht.

our_game.py

import pygame
from pygame.locals import *

Die Funktion + init () + startet automatisch alle Pygame-Module, die Sie initialisieren müssen.

Sie können jedes Pygame-Modul auch einzeln initialisieren, wie in:

pygame.font.init()

Die Funktion + init () + gibt ein tuple an Sie zurück, wenn Sie möchten. Dieses Tupel zeigt erfolgreiche und erfolglose Initialisierung. Wir können dies sowohl für den allgemeinen Aufruf von + init () + als auch für die Initialisierung spezifischer Module tun (was uns zeigt, ob diese Module verfügbar sind):

i = pygame.init()
print(i)

f = pygame.font.init()
print(f)

Wenn wir den obigen Code ausführen, erhalten wir eine Ausgabe ähnlich der folgenden:

Output(6, 0)
None

In diesem Fall hat das '+ i ' https://www.digitalocean.com/community/tutorials/how-to-use-variables-inpython-3[variable] das Tupel ' (6, 0) + zurückgegeben , was zeigt, dass es 6 erfolgreiche Pygame-Initialisierungen und 0 Fehler gab. Die Variable `+ f + gab + None + zurück, was darauf hinweist, dass das Modul in dieser bestimmten Umgebung nicht verfügbar ist.

Einrichten der Anzeigeoberfläche

Von hier aus müssen wir unsere Spieloberfläche einrichten. Wir verwenden "+ pygame.display.set_mode () +", um ein Fenster oder einen Bildschirm für die Anzeige zu initialisieren und an eine Variable zu übergeben. In die Funktion geben wir ein Argument für die Anzeigeauflösung ein, bei dem es sich um ein Zahlenpaar handelt, das Breite und Höhe in einem Tupel darstellt. Nehmen wir diese Funktion in unser Programm auf:

our_game.py

import pygame
from pygame.locals import *


pygame.init()

Wir haben das Tupel + (800, 600) + als Argument für die Funktion + set_mode () + übergeben, die für die Auflösung der Breite (800 px) und der Höhe (600 px) steht. Beachten Sie, dass das Tupel in den Klammern der Funktion enthalten ist, sodass die Funktion oben doppelte Klammern enthält.

Sie werden wahrscheinlich häufig die integers für die Auflösung Ihres Spiels verwenden, daher werden Sie wahrscheinlich eine Zuweisung wünschen diese Zahlen zu Variablen, anstatt die Zahlen immer wieder zu verwenden. Dies kann es einfacher machen, wenn Sie Ihr Programm ändern müssen, da Sie nur ändern müssen, was an die Variablen übergeben wird.

Wir verwenden die Variable "+ display_width" für die Breite der Spielanzeige und "+ display height" für die Höhe und übergeben diese Variablen an die Funktion "+ set_mode () +":

our_game.py

import pygame
from pygame.locals import *


pygame.init()




game_display = pygame.display.set_mode((, ))

Zu diesem Zeitpunkt wird die Spielanzeigeoberfläche mit einer Auflösung für ihre Breite und Höhe eingerichtet.

Aktualisieren der Anzeige

Als Nächstes müssen wir eine von zwei verfügbaren Funktionen verwenden, um die Anzeige der Spieloberfläche zu aktualisieren.

Animationen sind im Allgemeinen Änderungen zwischen verschiedenen Frames im Laufe der Zeit. Wenn Sie über Animationen nachdenken, denken Sie vielleicht an ein flip book, da diese aus einer Reihe von Bildern bestehen, die sich allmählich von einer Seite zur nächsten ändern. Diese Seiten simulieren Bewegungen, wenn sie schnell durchgeblättert werden, da der Inhalt der Seite in Bewegung zu sein scheint. In Computerspielen werden Frames anstelle von Seiten verwendet.

Aufgrund des Konzepts des Umblätterns von Seiten oder Frames heißt eine der Funktionen, die zum Aktualisieren der Anzeige der Spieloberfläche verwendet werden können, "+ flip () +" und kann in unserer obigen Datei folgendermaßen aufgerufen werden:

pygame.display.flip()

Die Funktion + flip () + aktualisiert die gesamte Anzeigefläche auf dem Bildschirm.

Häufiger wird die Funktion "+ update () " anstelle der Funktion " flip () +" verwendet, da nur Teile des Bildschirms und nicht der gesamte Bereich aktualisiert werden, wodurch Speicherplatz gespart wird.

Fügen wir die Funktion "+ update () " am Ende der Datei " our_game.py +" hinzu:

our_game.py

import pygame
from pygame.locals import *


pygame.init()

display_width = 800
display_height = 600

game_display = pygame.display.set_mode((display_width, display_height))

Zu diesem Zeitpunkt können Sie das Programm ohne Fehler ausführen, die Anzeigeoberfläche wird jedoch nur geöffnet und schnell geschlossen.

Erstellen der Spieleschleife

Mit dem Import und der Initialisierung von Pygame, dem Anzeigesatz und der Aktualisierung der Spieloberfläche können wir mit der Arbeit an unserer Hauptspielschleife beginnen.

Wir werden eine https://www.digitalocean.com/community/tutorials/how-to-construct-while-loops-inpython-3 [+ while + loop] erstellen, mit der das Spiel ausgeführt wird. Die Schleife ruft den Boolean -Wert von "+ True +" auf, was bedeutet, dass die Schleife für immer wiederholt wird, sofern dies nicht der Fall ist gestört.

Innerhalb dieser Hauptspielschleife unseres Programms erstellen wir eine https://www.digitalocean.com/community/tutorials/how-to-construct-for-loops-inpython-3 [+ for + loop] to Durchlaufen Sie die Benutzerereignisse in der Ereigniswarteschlange, die von der Funktion + pygame.event.get () + aufgerufen werden.

Zu diesem Zeitpunkt befindet sich nichts in der "+ für" -Schleife, aber wir können eine "+ print () " - Anweisung hinzufügen, um zu zeigen, dass sich der Code so verhält, wie wir es erwarten. Wir übergeben die Ereignisse innerhalb der Iteration als ` print (event) +` in die Anweisung.

Fügen wir diese beiden Schleifen und die Anweisung "+ print () +" in unsere Programmdatei ein:

our_game.py

import pygame
from pygame.locals import *


pygame.init()

display_width = 800
display_height = 600

game_display = pygame.display.set_mode((display_width, display_height))

pygame.display.update()

Um sicherzustellen, dass unser Code funktioniert, führen wir das Programm aus:

python our_game.py

Wenn wir die Datei ausführen, wird ein 800x600-Fenster geöffnet. Um die Ereignisse zu testen, können Sie mit der Maus über das Fenster fahren, in das Fenster klicken und die Tasten auf Ihrer Tastatur drücken. Diese Ereignisse werden in Ihrem Konsolenfenster ausgedruckt.

Die Ausgabe, die Sie erhalten, sieht ungefähr so ​​aus:

Output<Event(4-MouseMotion {'rel': (616, 355), 'buttons': (0, 0, 0), 'pos': (616, 355)})>
<Event(5-MouseButtonDown {'button': 1, 'pos': (616, 355)})>
<Event(6-MouseButtonUp {'button': 1, 'pos': (616, 355)})>
<Event(2-KeyDown {'scancode': 3, 'key': 102, 'unicode': 'f', 'mod': 0})>
<Event(3-KeyUp {'scancode': 3, 'key': 102, 'mod': 0})>
...

Diese Ausgabe zeigt die Benutzerereignisse, die stattfinden. Diese Ereignisse steuern das Spiel, wenn sie vom Benutzer generiert werden. Wann immer Sie die Funktion + pygame.event.get () + ausführen, berücksichtigt Ihr Code diese Ereignisse.

Beenden Sie die Ausführung des Programms, indem Sie im Terminalfenster die Tastenkombination "+ STRG " + "" + "drücken.

An dieser Stelle können Sie die Anweisung + print () + wie wir löschen oder kommentieren muss nicht alle diese Terminal-Ausgabe haben.

Von hier aus können wir an der Fertigstellung unserer Vorlage arbeiten, indem wir lernen, wie man ein Spiel beendet.

Beenden

Um ein Pygame-Programm zu beenden, müssen Sie zunächst die entsprechenden Module deaktivieren und anschließend Python wie gewohnt beenden.

Die Funktion + pygame.quit () + deaktiviert alle Pygame-Module und die Python-Funktion + quit () + beendet das Programm.

Da Benutzer die Spielfunktionen und Ereignisse steuern können, sollten wir auch wissen, dass "+ pygame.QUIT +" an die Ereigniswarteschlange gesendet wird, wenn der Benutzer das Programm zum Beenden aufgefordert hat, indem er auf das "X" im oberen Bereich des Spielfensters klickt Ecke.

Beginnen wir mit der Steuerung des Programmflusses mit einer conditional + if + -Anweisung in Ereignisbehandlung + für + Schleife:

our_game.py

import pygame
from pygame.locals import *


pygame.init()

display_width = 800
display_height = 600

game_display = pygame.display.set_mode((display_width, display_height))

pygame.display.update()

while True:
   for event in pygame.event.get():

Im obigen Code heißt es, dass das Programm die Pygame-Module mit "+ pygame.quit () " deaktivieren und das Programm mit " quit () +" beenden sollte, wenn der Benutzer das Herunterfahren des Programms angefordert hat.

Da wir "+ pygame.locals " importiert haben, können wir " event.type " und " QUIT " wie besehen aufrufen (anstatt " pygame. +" Davor).

Obwohl Benutzer möglicherweise wissen, dass sie auf das „X“ in der oberen Ecke des Spielfensters klicken müssen, möchten wir möglicherweise, dass bestimmte andere Benutzerereignisse die Aufforderung zum Beenden des Programms auslösen. Wir können dies mit dem Ereignistyp "+ KEYDOWN +" und einem oder mehreren Schlüsseln tun.

Das Ereignis "+ KEYDOWN " bedeutet, dass der Benutzer eine Taste auf seiner Tastatur gedrückt hat. Nehmen wir für unsere Zwecke an, dass die Taste " Q " (wie in "Beenden") oder die Taste " ESC " das Programm beenden kann. Fügen wir Code hinzu, der dies in unserer " für" -Schleife kennzeichnet:

our_game.py

import pygame
from pygame.locals import *


pygame.init()

display_width = 800
display_height = 600

game_display = pygame.display.set_mode((display_width, display_height))

pygame.display.update()

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




           pygame.quit()
           quit()

Wir haben Boolean logical operator hinzugefügt, damit das Programm beendet werden kann, wenn der Benutzer auf das „X“ klickt ”In der oberen Ecke des Spielfensters, oder wenn der Benutzer eine Taste drückt, die entweder die Escape-Taste oder die Taste" + Q + "ist (beachten Sie, dass hierbei die Groß- und Kleinschreibung nicht berücksichtigt wird).

Wenn Sie das Programm jetzt mit dem Befehl "+ python our_game.py " ausführen, können Sie die Funktionalität des laufenden Spiels testen und das Spiel dann beenden, indem Sie das Fenster entweder mit dem Symbol "X" oder durch beenden Drücken Sie entweder die Taste " Q " oder " ESC +".

Code-Verbesserungen und nächste Schritte

Während das obige Programm voll funktionsfähig ist, gibt es einige Dinge, die wir tun können, um den Code zu verbessern.

Für den Anfang können wir den Code, der sich in der + while + - Schleife befindet, in eine function definition einfügen. stattdessen:

def event_handler():
   for event in pygame.event.get():
       if event.type == QUIT or (
            event.type == KEYDOWN and (
             event.key == K_ESCAPE or
             event.key == K_q
            )):
           pygame.quit()
           quit()

Dadurch wird die "+ while +" - Schleife etwas übersichtlicher und komprimierter, zumal wir unserem Spiel mehr Funktionalität hinzufügen.

Darüber hinaus können wir der Titelleiste des Fensters eine Beschriftung hinzufügen, die derzeit "+ Pygame-Fenster +" lautet. Dies können wir mit der folgenden Zeile tun:

pygame.display.set_caption('')

Wir können den String "" Unser Spiel "" auf alles setzen, was wir das Spiel nennen möchten.

Zusätzlich können wir die Funktion + pygame.display.update () + in die Hauptspielschleife verschieben.

Nun sieht unser vollständiger Code so aus:

our_game.py

import pygame
from pygame.locals import *


pygame.init()

display_width = 800
display_height = 600

game_display = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('Our Game')


def event_handler():
   for event in pygame.event.get():
       if event.type == QUIT or (
            event.type == KEYDOWN and (
             event.key == K_ESCAPE or
             event.key == K_q
            )):
           pygame.quit()
           quit()

while True:
   event_handler()

   pygame.display.update()

Sie können auch verschiedene Methoden in Betracht ziehen, um sich dem obigen Code zu nähern, einschließlich der Verwendung von https://www.digitalocean.com/community/tutorials/how-to-use-break-continue-and-pass-statements-when-working-with-with -loops-in-python-3 # break-statement [break-statement], um eine Schleife zu verlassen, bevor Sie in ein Spiel wechseln.

Von hier aus lernen Sie, wie Sie Bilder durch Zeichnen und Sprites anzeigen, Bilder animieren und die Bildrate steuern und vieles mehr. Weitere Informationen zur Entwicklung von Pygame-Spielen finden Sie in der offiziellen pygame documentation.

Fazit

Dieses Tutorial führte Sie durch die Installation des Open-Source-Moduls pygame in Ihrer Python 3-Programmierumgebung und durch das Einrichten einer Vorlage, mit der Sie die Hauptschleife eines Python-Spiels steuern können.

Wenn Sie andere Programmierprojekte mit Python-Modulen durchführen möchten, können Sie „https://www.digitalocean.com/community/tutorials/how-to-create-a-twitterbot-with-python-3-and-the- tweepy-library [So erstellen Sie einen Twitterbot mit der Tweepy-Bibliothek] oder „https://www.digitalocean.com/community/tutorials/how-to-plot-data-in-python-3-using-matplotlib [ So zeichnen Sie Daten mit matplotlib]. “