Benutzer-Werkzeuge

Webseiten-Werkzeuge


ss2021:project2:dokumentation

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ss2021:project2:dokumentation [2021/07/08 15:52]
maj0_la
ss2021:project2:dokumentation [2021/10/13 16:39] (aktuell)
jana_wing [7.Termin (07.10.21)]
Zeile 7: Zeile 7:
 ====3. Termin (10.06.21)==== ====3. Termin (10.06.21)====
   * Bewegtes Viereck in pygame erstellen   * Bewegtes Viereck in pygame erstellen
 +
 ====4. Termin (17.06.21)==== ====4. Termin (17.06.21)====
   * Äußere Wände erstellt, damit Viereck nicht den screen verlässt* ​   * Äußere Wände erstellt, damit Viereck nicht den screen verlässt* ​
 +<code python>
   import pygame   import pygame
   import sys   import sys
Zeile 20: Zeile 21:
   def zeichnen():   def zeichnen():
       screen.fill((0,​0,​0)) #damit Hintergrund schwarz bleibt und nicht angemalt wird       screen.fill((0,​0,​0)) #damit Hintergrund schwarz bleibt und nicht angemalt wird
-      pygame.draw.rect(screen,​ (255,​255,​0),​ (x,​y,​breite,​hoehe)) #circle gibts auch+      pygame.draw.rect(screen,​ (255,​255,​0),​ (x,​y,​breite,​hoehe)) #der Spieler
       pygame.display.update()       pygame.display.update()
     ​     ​
Zeile 29: Zeile 30:
   hoehe = 40   hoehe = 40
   ​   ​
 +  #Die Wände um den Screen
   linkeWand = pygame.draw.rect(screen,​ (0,0,0), (0,​0,​1,​600),​ 0) #​(x-Koordinate,​y-Koordinate(linke ​   linkeWand = pygame.draw.rect(screen,​ (0,0,0), (0,​0,​1,​600),​ 0) #​(x-Koordinate,​y-Koordinate(linke ​
   Ecke),​Breite,​Länge)   Ecke),​Breite,​Länge)
Zeile 54: Zeile 56:
       zeichnen()       zeichnen()
       clock.tick(60)       clock.tick(60)
-  ​+       
 +</​code>  ​
 ====5. Termin (24.06.21)==== ====5. Termin (24.06.21)====
-===- Innenwände vom Labyrinth in pygame erstellt und „undurchdringbar“ für den Spieler gemacht===+  * Innenwände vom Labyrinth in pygame erstellt und „undurchdringbar“ für den Spieler gemacht 
 +  * Klasse für den Spieler erstellt 
 + 
 +<code python>​ 
 + 
 +  import os #Modul mit Funktionen fürs Betriebssystem 
 +  import sys #liefert Funktionen und Variablen 
 +  import random 
 +  import pygame 
 +   
 +  #Klasse für den spieler 
 +  class Spieler(object):​ 
 +   
 +      def init(self):​ 
 +          self.rect ​pygame.Rect(32,​ 32, 16, 16)    #​SpielerRechteck wird erzeugt 
 +   
 +      def move(self, dx, dy): 
 +   
 +          if dx !0: 
 +              self.move_single_axis(dx,​ 0) #​Spielerrechteck wird in dx Richtung bewegt 
 +          if dy !0: 
 +              self.move_single_axis(0,​ dy) 
 +   
 +      def move_single_axis(self,​ dx, dy): 
 +   
 +          self.rect.x += dx 
 +          self.rect.y += dy 
 +   
 +          #​Wandkollisionen abchecken 
 +          for wall in walls: 
 +              if self.rect.colliderect(wall.rect):​ 
 +                  if dx > 0: #Bewegung nach rechts, linke Seite der Wand 
 +                      self.rect.right = wall.rect.left 
 +                  if dx < 0: #Bewegung nach links, linke Seite der Wand 
 +                      self.rect.left = wall.rect.right 
 +                  if dy > 0: #Bewegung nach untem, obere Seite der Wand 
 +                      self.rect.bottom = wall.rect.top 
 +                  if dy < 0: #Bewegung nach oben, untere Seite der Wand 
 +                      self.rect.top = wall.rect.bottom 
 +                       
 +</​code>​ 
 + 
 +<code python> ​                      
 +   
 +#Klasse für Wände 
 +class Wall(object):​ 
 +    def __init__(self,​ pos): 
 +        walls.append(self) 
 +        self.rect = pygame.Rect(pos[0],​ pos[1], 16, 16) 
 + 
 +#Spiel wird initialisiert 
 +os.environ["​SDL_VIDEO_CENTERED"​] = "​1"​ #Fenster wird in der Mitte des Bildschirms platziert 
 +pygame.init() 
 + 
 +#​Display-Einstellungen 
 +pygame.display.set_caption("​Finde den Ausgang des Labyrinths!"​) 
 +screen = pygame.display.set_mode((320,​240)) 
 + 
 +clock = pygame.time.Clock() 
 +walls = [] #auf die Liste wird in der Klasse zugegriffen 
 +spieler = Spieler() 
 + 
 +#​Levellayout als string 
 +level = [ 
 +    "​WWWWWWWWWWWWWWWWWWWW",​ 
 +    "​W ​                 W", 
 +    "​W ​  WWW WWW WWWWWWWW",​ 
 +    "​W ​  W W W W W      W", 
 +    "WW WW W W W   WWWW W", 
 +    "​W ​ W  W     W W  W W", 
 +    "W WW WWWWWWWW W WW W", 
 +    "W W           W W  W", 
 +    "W WWWWWWWWWWWWW W WW", 
 +    "​W ​    W W       ​W ​ W", 
 +    "W WWW W   W WW WWW W", 
 +    "​W ​  WWWWW WWW      W", 
 +    "W WWW   ​W ​  W WWWWWW",​ 
 +    "​W ​    W W W W      W", 
 +    "​WWWWWWWWWWWEWWWWWWWW",​ 
 +
 + 
 +#W als Wand definieren und E als Ausgang 
 +x = y = 0 
 +for row in level: 
 +    for col in row: #einzelnen Einträge in der Reihe werden nach und nach überprüft 
 +        if col == "​W":​ 
 +            Wall((x, y)) #es wird auf Wall Klasse zugegriffen 
 +        if col == "​E":​ 
 +            end_rect = pygame.Rect(x,​ y, 16, 16) 
 +        x += 16 #immer 16, da ein Buchstabe 16 Pixel entspricht 
 +    y += 16 
 +    x = 0 
 + 
 +running = True 
 +while running: 
 + 
 +    clock.tick(60) #Zeit wird festgelegt 
 + 
 +    for e in pygame.event.get():​ #alles was der Nutzer macht 
 +        if e.type == pygame.QUIT:​ 
 +            running = False 
 +        if e.type == pygame.KEYDOWN and e.key == pygame.K_ESCAPE:​ #spiel beenden mit esc 
 +            running = False 
 + 
 +    #Spieler bewegen 
 +    key = pygame.key.get_pressed() 
 +    if key[pygame.K_LEFT]:​ 
 +        spieler.move(-2,​ 0) 
 +    if key[pygame.K_RIGHT]:​ 
 +        spieler.move(2,​ 0) 
 +    if key[pygame.K_UP]:​ 
 +        spieler.move(0,​ -2) 
 +    if key[pygame.K_DOWN]:​ 
 +        spieler.move(0,​ 2) 
 + 
 +    #Spiel beenden durch berühren des roten Rechtecks 
 +    if spieler.rect.colliderect(end_rect):​ 
 +        pygame.quit() 
 +        sys.exit() 
 + 
 +    #Farben und so 
 +    screen.fill((0,​ 0, 0)) 
 +    for wall in walls: 
 +        pygame.draw.rect(screen,​ (255, 255, 255),​wall.rect) 
 +    pygame.draw.rect(screen,​ (0, 0, 0), end_rect) 
 +    pygame.draw.rect(screen,​ (255, 200, 0), spieler.rect) 
 +    pygame.display.flip() #nur Teil des screens wird geupdatet 
 +    clock.tick(360) 
 + 
 +pygame.quit() 
 + 
 +</​code>​
 ====6. Termin (01.07.21)==== ====6. Termin (01.07.21)====
-===- Start und Endbildschirm für pygame und Besprechung mit Gruppe 1===+  * Start und Endbildschirm für pygame und Besprechung mit Gruppe 1
  
 +<code python>
   import os #Modul mit Funktionen fürs Betriebssystem   import os #Modul mit Funktionen fürs Betriebssystem
   import sys #liefert Funktionen und Variablen   import sys #liefert Funktionen und Variablen
Zeile 142: Zeile 277:
   level = [   level = [
       "​WWWWWWWWWWWWWWWWWWWW",​       "​WWWWWWWWWWWWWWWWWWWW",​
-      "​W ​      E           W",+      "​W ​                 W",
       "​W ​  WWW WWW WWWWWWWW",​       "​W ​  WWW WWW WWWWWWWW",​
       "​W ​  W W W W W      W",       "​W ​  W W W W W      W",
Zeile 155: Zeile 290:
       "W WWW   ​W ​  W WWWWWW",​       "W WWW   ​W ​  W WWWWWW",​
       "​W ​    W W W W      W",       "​W ​    W W W W      W",
-      "WWWWWWWWWWWWWWWWWWWW",+      "WWWWWWWWWEWWWWWWWWWW",
   ]   ]
   ​   ​
Zeile 232: Zeile 367:
   ​   ​
   pygame.quit()   pygame.quit()
 +</​code>​
 +
 +====7.Termin (07.10.21)====
 +  * "​Randomizen"​ des Labyrinths durch Material von Gruppe 1
 +  * Präsentation machen und üben
 +
 +
 +==== Fertiges Spiel Zip-Datei ====
  
 +  * Es muss "​Spiel"​ ausgeführt werden
  
 +{{:​ss2021:​project2:​4d_labyrinth_spiel.zip|}} ​
  
  
ss2021/project2/dokumentation.1625752339.txt.gz · Zuletzt geändert: 2021/07/08 15:52 von maj0_la