Inhaltsverzeichnis

PyGame 2022

1. Setup

PyGame installieren

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/

Git & GitHub

Siehe dazu die Seite Git & GitHub

ALLE Übungen und Aufträge, die du hier erledigst, werden mit Git verwaltet und auf GitHub gestellt werden. Die Repos werden mit der Lehrperson (Andreas Schärer: anschae) geteilt. Commit und pushe immer, nachdem du an einer Übung gearbeitet hast. Mache dies unaufgefordert!

Konventionen

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 in Python

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")

2. Projekt 1: Endless Runner I

Ziele

Auftrag in Kürze

Ziel ist es, mit PyGame ein eigenes Endless Runner Game zu programmieren. Bekannte Spiele in diesem Stil sind:

Solche Spiele sind ziemlich einfach, können aber sehr fesselnd sein. Zum Beispiel wurde Flappy Bird ursprünglich für iOS und Android entwickelt und war sehr erfolgreich. Der Entwickler hat sich 2014 dafür entschieden, das Spiel wieder aus den App-Stores zu entfernen, da es süchtig mache, was seiner eigentlichen Absicht, Flappy Bird zu einem Gelegenheitsspiel zu machen, entgegenstünde.

Das Game wird in zwei Versionen entwickelt:

Abgabe

Teil 1: Setup

Ziele: GitHub-Repo einrichten, Template zum Laufen bringen, Plan für Game machen

Daten für Game:

Teil 2: Background

Ziele: Hintergrund bewegen

Teil 3: Jump

Ziele: Bewegung des Spielers physikalisch realistisch implementieren

Theorie zu Jumps

Teil 4: Gegner I

Ziele: Einen Gegner mit Bewegung und Collision Detection

Teil 5: Gegner II

Ziele: Mehrere (verschiedene) Gegner, werden random erzeugt

Teil 6: Levels

Ziele: Versch. Levels/Schwierigkeitsgrade implementieren

Teil 7: Bilder für Sprites

Ersetze die Rechtecke des Players und der Gegner durch passende Bilder.

Teil 8: Game-Balancing & Game-Testing

Ziel: Game testen, Feinschliff verpassen, Parameter so einstellen, dass Spass macht aber auch Herausforderung ist

Unter Game-Balancing versteht man die Gestaltung des Spiels, so dass das Spielen des Spiels Spass macht - auch über einen längeren Zeitraum. Ist das Spiel zu einfach, wird man schnell gelangweilt und stellt ab. Ist es gleich von Beginn an zu schwierig, so wird man frustriert und stellt auch ab. Es ist also wichtig, eine gute Balance zwischen 'gut spielbar' und 'doch noch eine Herausforderung' zu finden. Weiter sollte das Spiel eine gewisse Abwechslung bieten, so dass man das Spiel auch länger spielen möchte. Das Spiel sollte sich also verändern: Verschiedene Levels, Gegner, … und v.a. sollte der Schwierigkeitsgrad mit der Zeit etwas anziehen. Für ein Endless-Runner-Game ist besonders der letzte Punkt relevant.

Game-Testing: Wie der Schwierigkeitsgrad eines Spiels bewertet wird, hängt immer von der befragten Person ab: Ist es eine Profi-Gamerin oder eine Person, die unerfahren ist mit Games? Deshalb sollte man ein Spiel von verschiedenen Personen mit unterschiedlich viel Game-Erfahrung testen lassen.