Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ss2021:project2:dokumentation [2021/10/13 16:32] jana_wing [5.Termin (24.06.21)] |
ss2021:project2:dokumentation [2021/10/13 16:39] (aktuell) jana_wing [7.Termin (07.10.21)] |
||
---|---|---|---|
Zeile 63: | Zeile 63: | ||
<code python> | <code python> | ||
- | |||
import os #Modul mit Funktionen fürs Betriebssystem | import os #Modul mit Funktionen fürs Betriebssystem | ||
Zeile 99: | Zeile 98: | ||
if dy < 0: #Bewegung nach oben, untere Seite der Wand | if dy < 0: #Bewegung nach oben, untere Seite der Wand | ||
self.rect.top = wall.rect.bottom | self.rect.top = wall.rect.bottom | ||
+ | | ||
+ | </code> | ||
+ | |||
+ | <code python> | ||
| | ||
- | #Klasse für Wände | + | #Klasse für Wände |
- | class Wall(object): | + | class Wall(object): |
- | def init(self, pos): | + | def __init__(self, pos): |
- | walls.append(self) | + | walls.append(self) |
- | self.rect = pygame.Rect(pos[0], pos[1], 16, 16) | + | self.rect = pygame.Rect(pos[0], pos[1], 16, 16) |
- | self.screen = pygame.display.set_mode((320,240)) | + | |
- | + | #Spiel wird initialisiert | |
- | + | os.environ["SDL_VIDEO_CENTERED"] = "1" #Fenster wird in der Mitte des Bildschirms platziert | |
- | def draw_text(self, words, screen, pos, size, colour, font_name, centered = False): | + | pygame.init() |
- | screen = pygame.display.set_mode((320,240)) | + | |
- | font = pygame.font.SysFont(font_name, size) | + | #Display-Einstellungen |
- | text = font.render(words, False, colour) | + | pygame.display.set_caption("Finde den Ausgang des Labyrinths!") |
- | text_size = text.get_size() | + | screen = pygame.display.set_mode((320,240)) |
- | if centered: | + | |
- | pos[0] = pos[0]-text_size[0]//2 | + | clock = pygame.time.Clock() |
- | pos[1] = pos[1]-text_size[1]//2 | + | walls = [] #auf die Liste wird in der Klasse zugegriffen |
- | screen.blit(text, pos) | + | spieler = Spieler() |
- | + | ||
- | + | #Levellayout als string | |
- | def start_draw(self): | + | level = [ |
- | screen = pygame.display.set_mode((320,240)) | + | "WWWWWWWWWWWWWWWWWWWW", |
- | self.screen.fill((0,0,0)) | + | "W W", |
- | self.draw_text('You win', self.screen, [ | + | "W WWW WWW WWWWWWWW", |
- | 160, 120-50], 16, (170, 132, 58), 'arial black', centered=True) | + | "W W W W W W W", |
- | for e in pygame.event.get(): #alles was der Nutzer macht | + | "WW WW W W W WWWW W", |
- | if e.type == pygame.QUIT: | + | "W W W W W W W", |
- | pygame.quit() | + | "W WW WWWWWWWW W WW W", |
- | pygame.display.update() | + | "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", | |
- | #Spiel wird initialisiert | + | "W WWW W W WWWWWW", |
- | os.environ["SDL_VIDEO_CENTERED"] = "1" #Fenster wird in der Mitte des Bildschirms platziert | + | "W W W W W W", |
- | pygame.init() | + | "WWWWWWWWWWWEWWWWWWWW", |
- | + | ] | |
- | #Display-Einstellungen | + | |
- | pygame.display.set_caption("Finde den Ausgang des Labyrinths!") | + | #W als Wand definieren und E als Ausgang |
- | screen = pygame.display.set_mode((320,240)) | + | x = y = 0 |
- | + | for row in level: | |
- | clock = pygame.time.Clock() | + | for col in row: #einzelnen Einträge in der Reihe werden nach und nach überprüft |
- | walls = [] #auf die Liste wird in der Klasse zugegriffen | + | if col == "W": |
- | spieler = Spieler() | + | Wall((x, y)) #es wird auf Wall Klasse zugegriffen |
- | + | if col == "E": | |
- | #Levellayout als string | + | end_rect = pygame.Rect(x, y, 16, 16) |
- | level = [ | + | x += 16 #immer 16, da ein Buchstabe 16 Pixel entspricht |
- | "WWWWWWWWWWWWWWWWWWWW", | + | y += 16 |
- | "W W", | + | x = 0 |
- | "W WWW WWW WWWWWWWW", | + | |
- | "W W W W W W W", | + | running = True |
- | "WW WW W W W WWWW W", | + | while running: |
- | "W W W W W W W", | + | |
- | "W WW WWWWWWWW W WW W", | + | clock.tick(60) #Zeit wird festgelegt |
- | "W W W W W", | + | |
- | "W WWWWWWWWWWWWW W WW", | + | for e in pygame.event.get(): #alles was der Nutzer macht |
- | "W W W W W", | + | if e.type == pygame.QUIT: |
- | "W WWW W W WW WWW W", | + | running = False |
- | "W WWWWW WWW W", | + | if e.type == pygame.KEYDOWN and e.key == pygame.K_ESCAPE: #spiel beenden mit esc |
- | "W WWW W W WWWWWW", | + | running = False |
- | "W W W W W W", | + | |
- | "WWWWWWWWWEWWWWWWWWWW", | + | #Spieler bewegen |
- | ] | + | key = pygame.key.get_pressed() |
- | + | if key[pygame.K_LEFT]: | |
- | #W als Wand definieren und E als Ausgang | + | spieler.move(-2, 0) |
- | x = y = 0 | + | if key[pygame.K_RIGHT]: |
- | for row in level: | + | spieler.move(2, 0) |
- | for col in row: #einzelnen Einträge in der Reihe werden nach und nach überprüft | + | if key[pygame.K_UP]: |
- | if col == "W": | + | spieler.move(0, -2) |
- | Wall((x, y)) #es wird auf Wall Klasse zugegriffen | + | if key[pygame.K_DOWN]: |
- | if col == "E": | + | spieler.move(0, 2) |
- | end_rect = pygame.Rect(x, y, 16, 16) | + | |
- | x += 16 #immer 16, da ein Buchstabe 16 Pixel entspricht | + | #Spiel beenden durch berühren des roten Rechtecks |
- | y += 16 | + | if spieler.rect.colliderect(end_rect): |
- | x = 0 | + | pygame.quit() |
- | + | sys.exit() | |
- | black=(0,0,0) | + | |
- | end_it=False | + | #Farben und so |
- | while (end_it==False): | + | screen.fill((0, 0, 0)) |
- | screen.fill(black) | + | for wall in walls: |
- | myfont=pygame.font.SysFont("Britannic Bold", 40) | + | pygame.draw.rect(screen, (255, 255, 255),wall.rect) |
- | nlabel=myfont.render("2D-Labyrinth-SpAß", 1, (255, 0, 0)) | + | pygame.draw.rect(screen, (0, 0, 0), end_rect) |
- | alabel=myfont.render("click to start :)", 1, (255,255,0)) | + | pygame.draw.rect(screen, (255, 200, 0), spieler.rect) |
- | for event in pygame.event.get(): | + | pygame.display.flip() #nur Teil des screens wird geupdatet |
- | if event.type==pygame.MOUSEBUTTONDOWN: | + | clock.tick(360) |
- | end_it=True | + | |
- | screen.blit(nlabel,(25,100)) | + | pygame.quit() |
- | screen.blit(alabel,(50,130)) | + | |
- | pygame.display.flip() | + | </code> |
- | + | ||
- | running = True | + | |
- | state = True | + | |
- | + | ||
- | while running: | + | |
- | while state: | + | |
- | 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) | + | |
- | + | ||
- | #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) | + | |
- | + | ||
- | + | ||
- | #Spiel beenden durch berühren des roten Rechtecks | + | |
- | if spieler.rect.colliderect(end_rect): | + | |
- | state = False | + | |
- | + | ||
- | while not state: | + | |
- | wall.start_draw() | + | |
- | running = False | + | |
- | for e in pygame.event.get(): #alles was der Nutzer macht | + | |
- | if e.type == pygame.QUIT: | + | |
- | running = False | + | |
- | + | ||
- | + | ||
- | + | ||
- | pygame.quit() | + | |
====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 414: | Zeile 367: | ||
| | ||
pygame.quit() | pygame.quit() | ||
+ | </code> | ||
====7.Termin (07.10.21)==== | ====7.Termin (07.10.21)==== | ||
* "Randomizen" des Labyrinths durch Material von Gruppe 1 | * "Randomizen" des Labyrinths durch Material von Gruppe 1 | ||
+ | * Präsentation machen und üben | ||