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 [2025-08-16 07:55] (aktuell) – [Pfade in Python] hof | ||
|---|---|---|---|
| Zeile 23: | Zeile 23: | ||
| ==== Pfade in Python ==== | ==== Pfade in Python ==== | ||
| - | Pfade von Ordner und Dokumente werden in Windows (`myfolder\\myfile.txt`) anders angegeben als in MacOS (`myfolder/ | + | Pfade von Ordner und Dokumente werden in Windows (`myfolder\\myfile.txt`) anders angegeben als in MacOS (`myfolder/ |
| <code python> | <code python> | ||
| 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 ===== | ||