Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
talit:python_pygame [2022-08-24 11:54] scatalit: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 '"program": "main.py",' -> always launch this file - for VSC: template includes launch.json file which includes line '"program": "main.py",' -> always launch this file
 """ """
- 
-os.chdir(sys.path[0]) # changes current working directory to file directory 
  
 if __name__ == "__main__": if __name__ == "__main__":
 +    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)
  
-    print(Settings.__doc__) # use .__doc__ to access doc string of class +    # create game object and play
- +
-    # create game object +
     game = Game(settings_default)     game = Game(settings_default)
-    # and play 
     game.play()     game.play()
 </code> </code>
Zeile 80: Zeile 78:
     """     """
     def __init__(self,win_height=800,win_width=500,bg_color=(255,255,255),fps=30,speed=12):     def __init__(self,win_height=800,win_width=500,bg_color=(255,255,255),fps=30,speed=12):
 +        self.NAME = "sloppy bird"
 +
         # 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.screen pygame.display.set_mode((self.settings.WIN_WIDTH, self.settings.WIN_HEIGHT)) # create screen which will display everything +        size = (self.settings.WIN_WIDTH, self.settings.WIN_HEIGHT) 
-        self.win = pygame.display.set_mode((self.settings.WIN_WIDTH, self.settings.WIN_HEIGHT)+        self.screen = pygame.display.set_mode(size) # create screen which will display everything 
-        pygame.display.set_caption("Bouncing Balls") # Game title+        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
 </code> </code>
 +
  
 ++++ ++++
 </nodisp> </nodisp>
 +
 +
 +==== - 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, da hier die ganzen Inputs verarbeitet werden sollen.
 +      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**: Sobald der Player mit einem Ball kollidiert, soll dieser Ball verschwinden.
 +   
 +
  
 ===== - Projekt ===== ===== - Projekt =====
  • talit/python_pygame.1661342068.txt.gz
  • Zuletzt geändert: 2022-08-24 11:54
  • von sca