Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
talit:python_pygame [2022-08-24 11:54] – sca | talit:python_pygame [2024-08-08 12:37] (aktuell) – [2.1 Tutorial] sca | ||
---|---|---|---|
Zeile 46: | Zeile 46: | ||
<nodisp 1> | <nodisp 1> | ||
++++Template anzeigen| | ++++Template anzeigen| | ||
+ | |||
<code python main.py> | <code python main.py> | ||
from settings import Settings | from settings import Settings | ||
Zeile 57: | Zeile 58: | ||
- for VSC: template includes launch.json file which includes line '" | - for VSC: template includes launch.json file which includes line '" | ||
""" | """ | ||
- | |||
- | os.chdir(sys.path[0]) # changes current working directory to file directory | ||
if __name__ == " | if __name__ == " | ||
+ | os.chdir(sys.path[0]) # changes current working directory to file directory | ||
+ | |||
# define some settings | # define some settings | ||
settings_default = Settings() | settings_default = Settings() | ||
settings_slow = Settings(speed=1) | settings_slow = Settings(speed=1) | ||
- | | + | # create game object |
- | + | ||
- | | + | |
game = Game(settings_default) | game = Game(settings_default) | ||
- | # and play | ||
game.play() | game.play() | ||
</ | </ | ||
Zeile 80: | Zeile 78: | ||
""" | """ | ||
def __init__(self, | def __init__(self, | ||
+ | self.NAME = " | ||
+ | |||
# WINDOWS SIZE | # WINDOWS SIZE | ||
self.WIN_HEIGHT = win_height | self.WIN_HEIGHT = win_height | ||
self.WIN_WIDTH = win_width | self.WIN_WIDTH = win_width | ||
| | ||
+ | # COLOR SETTINGS | ||
self.BG_COLOR = bg_color | self.BG_COLOR = bg_color | ||
| | ||
Zeile 110: | Zeile 111: | ||
self.settings = settings | self.settings = settings | ||
self.time_delay = self.settings.TIME_DELAY | self.time_delay = self.settings.TIME_DELAY | ||
- | | + | |
- | self.win = pygame.display.set_mode((self.settings.WIN_WIDTH, | + | self.screen = pygame.display.set_mode(size) # create screen which will display everything |
- | pygame.display.set_caption(" | + | self.win = pygame.display.set_mode(size) |
+ | pygame.display.set_caption(self.settings.NAME) # Game title | ||
def quit(self): | def quit(self): | ||
Zeile 146: | Zeile 148: | ||
if keys[pygame.K_UP]: | if keys[pygame.K_UP]: | ||
player.rect.top -= self.settings.SPEED | player.rect.top -= self.settings.SPEED | ||
+ | if keys[pygame.K_DOWN]: | ||
+ | player.rect.top += self.settings.SPEED | ||
# and so on ... | # and so on ... | ||
Zeile 237: | Zeile 241: | ||
pass | pass | ||
</ | </ | ||
+ | |||
++++ | ++++ | ||
</ | </ | ||
+ | |||
+ | |||
+ | ==== - Tutorial ==== | ||
+ | |||
+ | Ziel von diesem Tutorial ist, dich in PyGame anhand des Templates von oben einzuarbeiten. | ||
+ | |||
+ | 1. **Installiere** PyGame (mit pip) | ||
+ | 1. 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. | ||
+ | 1. 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? | ||
+ | 1. 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. | ||
+ | 1. Es gibt noch weitere Files wie `setting.py` oder `ball.py`. Wozu sind diese da? | ||
+ | 1. In `player.py` und `ball.py` gibt es zwei Methoden: Update und Collide. Wozu? | ||
+ | 1. **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. | ||
+ | 1. Ä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. | ||
+ | 1. Füge dem Game ein **Hintergrundbild** hinzu. | ||
+ | 1. Den Player soll man nun auch noch nach **links und rechts** bewegen. Implementiere dies in der `play`-Methode, | ||
+ | 1. 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. | ||
+ | 1. Implementiere eine **Collision**: | ||
+ | |||
+ | |||
===== - Projekt ===== | ===== - Projekt ===== |