PyGame

Installiere PyGame. Achtung: In der Vergangenheit habe ich die Erfahrung gemacht, dass PyGame manchmal nicht mit der neusten Versionen von Python läuft. Die neuste Version, mit der ich es getestet habe, ist Python 3.9.0, wahrscheinlich läuft es aber auch mit neueren Versionen. Es ist aber kein Problem, mehrere Python-Installationen parallel zu haben.

Siehe dazu die Seite Python Setup

Offizielle Dokumentation: https://www.pygame.org/docs/

Siehe dazu die Seite Git & GitHub

Für unterschiedliche Programmiersprachen gibt es unterschiedliche Konventionen dazu, wie man Variablen, Klassen usw. benennt. Zum Beispiel sollten Klassen im UpperCamelCase Stil und Funktionen & Variablen im snake_case Stil notiert werden. Hier findest du mehr Infos zu den Programmier-Konventionen.

Pfade von Ordner und Dokumente werden in Windows (myfolder\\myfile.txt) anders angegeben als in MacOS (myfolder/myfile.txt). Damit dein Code auf sämtlichen Plattformen funktioniert, musst du also solche Pfadangaben vermeiden. Stattdessen sollst du das os Modul verwenden:

import os.path
 
# KORREKT:
path = os.path.join("myfolder", "myfile.txt")
 
# falsch 1:
path = "myfolder/myfile.txt")
 
# falsch 2:
path = "myfolder\\myfile.txt")

Für dein/euer PyGame-Projekt ist es Pflicht, dieses objektorientiert zu programmieren. Verwende dafür das Template unten. Theoretisch kann man das ganze Game in einem einzigen File programmieren. Gerade für grössere Projekte und wenn man zusammen am gleichen Code arbeitet, so lohnt es sich, das Projekt auf mehrere Files aufzuteilen. Wir verfolgen hier den Grundsatz: für jede Klasse ein eigenes File.

Template herunterladen

Template anzeigen

Ziel von diesem Tutorial ist, dich in PyGame anhand des Templates von oben einzuarbeiten.

  1. Installiere PyGame (mit pip)
  2. Lade das Template-Spiel herunter und stelle sicher, dass du es ausführen kannst. Du solltest ein Flugzeug und ein paar farbige Bälle sehen.
  3. Verschaffe dir einen Überblick über das Projekt. Es geht nicht darum, jede einzelne Code-Zeile zu verstehen, sondern darum, das Big Picture zu verstehen:
    1. Welches File muss man ausführen, wenn man das Spiel starten möchte? Was passiert darin?
    2. Das Herzstück ist die play-Methode in der Game-Klasse. Darin befindet sich der Game-Loop - eine Endlosschleife (while True). In dieser steht der Code, der während dem Spiel in der Dauerschleife ausgeführt wird. Verschaffe dir darin eine Übersicht.
    3. Es gibt noch weitere Files wie setting.py oder ball.py. Wozu sind diese da?
    4. In player.py und ball.py gibt es zwei Methoden: Update und Collide. Wozu?
  4. Erweitere das Spiel nun wie folgt:
    1. Füge noch zwei rote Bälle hinzu. Dazu muss zuerst ein Bild von einem roten Ball erstellt werden und in den data-Ordner abgelegt werden. Beachte, dass das gleiche Bild dann für beide roten Bälle im Spiel verwendet wird.
    2. Ändere das Bild des Players (aktuell Flugzeug). Finde ein lustiges Bild im Internet. Wichtig: Das Bild soll einen transparenten Hintergrund haben. Z.B. kann man man mit Photoshop den Hintergrund transparent machen.
    3. Füge dem Game ein Hintergrundbild hinzu.
    4. Den Player soll man nun auch noch nach links und rechts bewegen. Implementiere dies in der play-Methode, da hier die ganzen Inputs verarbeitet werden sollen.
    5. Der Player soll aber nicht aus dem Bild verschwinden können. Erreicht er z.B. den linken Rand, soll er sich nicht weiter nach links bewegen. Implementiere dies in der update-Methode des Players. Diese wird bei jedem Durchgangs Game-Loops ausgeführt.
    6. Implementiere eine Collision: Sobald der Player mit einem Ball kollidiert, soll dieser Ball verschwinden.
  1. Plan erstellen auf Papier:
    1. Welche Klassen? Welche Attribute und Methoden?
    2. Skizzen für Graphiken anfertigen
  2. Neues GitHub Repo erstellen. Alle Gruppenmitglieder und Lehrperson einladen.
  3. Template von oben hinein kopieren und als Startpunkt verwenden.
  4. Programmieren: siehe Tipps unten

Tipps zum Arbeiten in Gruppen an Programmierprojekten:

  • Haltet euch strikt an Konventionen und Programmierphilosophien (z.B. strikt eine Klasse pro File)
  • regelmässig commit und push
  • aussagekräftige Commit-Messages (ultrawichtig, wenn man zusammenarbeitet!)
  • Code sinnvoll kommentieren (ebenso!)
  • Pfade richtig schreiben (siehe oben). Ansonsten läuft z.B. Code, der auf Windows programmiert wurde, nicht auf Mac.
  • Optimalerweise arbeiten verschiedene Personen an verschiedenen Klassen.
  • Eventuell macht es Sinn, mit Git-Branches zu arbeiten. Es werden wie verschiedene Versionen vom Code erzeugt, die dann später wieder zusammengeführt werden.
  • Keine dirty fixes! Haltet strikte Ordnung in eurem Code. Arbeitet lieber länger an eines sauberen Lösung, als dass ihr irgendetwas komisches, das ihr nicht wirklich versteht macht, nur damit der Code funktioniert. Dies rächt sich immer!
  • Letzte Regel: Haltet euch an diese Regeln. Ansonsten erlischt auch der Anspruch auf Support!
  • talit/python_pygame.txt
  • Zuletzt geändert: 2024-08-08 12:37
  • von sca