# (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz # Level2 # Autor: Viktor Lysow, Johannes Tümler # Letzte Änderung: 22.04.2022 # Zweck: Organisation und Steuerung des zweiten Levels # Der Nachfolgende Codeblock "BLOCK1" sorgt dafür, dass man aus jeder Datei heraus das Hauptprogramm starten kann. # Dadurch kann man in jeder Datei auf "play" drücken und es wird automatisch main.py gestartet. if __name__=="__main__": import subprocess # Auf Linux oder Mac aktivieren Sie die folgende Zeile und deaktivieren Sie die Zeile danach: #subprocess.call("python3 main.py", shell=True) # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm) subprocess.call("main.py", shell=True) # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm) exit(0) # nun das Programm hier beenden .. wir wollen ja nur das Hauptprogramm starten und nicht *diese* Datei. # Ende "BLOCK1" from KlasseLevelmanagement import LevelManagement import pygame import sounds from screen import screen from hindernisse import feld from time import time from KlassePrinzessin import Prinzessin from KlasseHarpyie import Harpyie import DatenSammeln as ds # Für den Matlab Beleg zeitStart = True zeit = 0 hintergrundLevel = pygame.image.load("Bilder/Karte/Level2.png") tor = pygame.Rect(3*feld,0,48,48) #Ziel in Level 2 LevelManagement.Level = 2 monster1 = Harpyie(feld*7,feld*3,1,feld,feld,LevelManagement.Level,"Harpyie",time()) prinzessin = Prinzessin(x = feld*10, y = feld*3, geschw = 7, breite = feld, hoehe = feld, level = LevelManagement.Level, bildFigur = "Prinzessin", zeitMonster= time()) # display text pygame.font.init() # you have to call this at the start, if you want to use this module. myfont = pygame.font.SysFont('Comic Sans MS', 30) def Level2(spieler): global zeitStart, zeit screen.blit(hintergrundLevel, (0, 0)) # Tor anzeigen #pygame.draw.rect(screen, (255,0,0), (3*feld,0,48,48),0) if LevelManagement.numFrames >= LevelManagement.fpsTarget: LevelManagement.fpsCurrent = LevelManagement.timeNeeded / LevelManagement.numFrames LevelManagement.numFrames = 0 LevelManagement.timeNeeded = 0 textsurface = myfont.render("%i fps" % (1000/LevelManagement.fpsCurrent), False, (255, 255, 0)) screen.blit(textsurface,(10,0)) #drawLevel2() if zeitStart: #Zeit wird ab den ersten aufruf gemäßen (für Matlab) zeitStart = False LevelManagement.Level = 2 zeit = time() if monster1.mlaufen(spieler) or prinzessin.mlaufen(spieler, monster1): #mit mlaufen läuft die Harpyie und es wird überprüft ob der Held getötet wurde pygame.display.update() #mit mlaufen läuft die Prinzessin und es wird überprüft ob die Prinzessin getötet wurde pygame.time.wait(1000) monster1.reset() #Es wird Alles für die Harpyie zurück gesetzt prinzessin.reset() #Es wird Alles für die Prinzessin zurück gesetzt LevelManagement.Level = 3 ds.daten_csv(9, round(time() - zeit)) #Zeit für Level3 (für Matlab) ds.daten_csv(11, LevelManagement.Level) zeitStart = True return LevelManagement.Level # den folgenden Code-Block (if-Anweisung) können Sie entfernen, wenn Harpyie implementiert ist. # Dafür dann den Block darüber wieder aktivieren. """if prinzessin.mlaufen(spieler, monster1): #mit mlaufen läuft die Prinzessin und es wird überprüft ob die Prinzessin getötet wurde pygame.display.update() pygame.time.wait(1000) prinzessin.reset() #Es wird Alles für die Prinzessin zurück gesetzt LevelManagement.Level = 3 ds.daten_csv(9, round(time() - zeit)) #Zeit für Level3 (für Matlab) ds.daten_csv(11, LevelManagement.Level) zeitStart = True return LevelManagement.Level """ if spieler.obenKollision.colliderect(tor): #Held muss mit dem Kopf den Eingang berühren if (monster1.leben): sounds.soundTor() pygame.time.wait(500) monster1.reset() #Es wird Alles für die Harpyie zurück gesetzt prinzessin.reset() #Es wird Alles für die Prinzessin zurück gesetzt LevelManagement.Level = 3 ds.daten_csv(9, round(time() - zeit)) #Zeit für Level3 (für Matlab) zeitStart = True return LevelManagement.Level else: sounds.soundTor() pygame.time.wait(500) monster1.reset() #Es wird Alles für die Harpyie zurück gesetzt prinzessin.reset() #Es wird Alles für die Prinzessin zurück gesetzt LevelManagement.Level = 4 ds.daten_csv(9, round(time() - zeit)) #Zeit für Level3 (für Matlab) zeitStart = True return LevelManagement.Level else: #Das Level läuft weiter spieler.steuerung() return LevelManagement.Level