Level2.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. # (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
  2. # Level2
  3. # Autor: Viktor Lysow, Johannes Tümler
  4. # Letzte Änderung: 22.04.2022
  5. # Zweck: Organisation und Steuerung des zweiten Levels
  6. # Der Nachfolgende Codeblock "BLOCK1" sorgt dafür, dass man aus jeder Datei heraus das Hauptprogramm starten kann.
  7. # Dadurch kann man in jeder Datei auf "play" drücken und es wird automatisch main.py gestartet.
  8. if __name__=="__main__":
  9. import subprocess
  10. # Auf Linux oder Mac aktivieren Sie die folgende Zeile und deaktivieren Sie die Zeile danach:
  11. #subprocess.call("python3 main.py", shell=True) # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm)
  12. subprocess.call("main.py", shell=True) # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm)
  13. exit(0) # nun das Programm hier beenden .. wir wollen ja nur das Hauptprogramm starten und nicht *diese* Datei.
  14. # Ende "BLOCK1"
  15. from KlasseLevelmanagement import LevelManagement
  16. import pygame
  17. import sounds
  18. from screen import screen
  19. from hindernisse import feld
  20. from time import time
  21. from KlassePrinzessin import Prinzessin
  22. from KlasseHarpyie import Harpyie
  23. import DatenSammeln as ds # Für den Matlab Beleg
  24. zeitStart = True
  25. zeit = 0
  26. hintergrundLevel = pygame.image.load("Bilder/Karte/Level2.png")
  27. tor = pygame.Rect(3*feld,0,48,48) #Ziel in Level 2
  28. LevelManagement.Level = 2
  29. monster1 = Harpyie(feld*7,feld*3,1,feld,feld,LevelManagement.Level,"Harpyie",time())
  30. prinzessin = Prinzessin(x = feld*10, y = feld*3, geschw = 7, breite = feld, hoehe = feld, level = LevelManagement.Level, bildFigur = "Prinzessin", zeitMonster= time())
  31. # display text
  32. pygame.font.init() # you have to call this at the start, if you want to use this module.
  33. myfont = pygame.font.SysFont('Comic Sans MS', 30)
  34. def Level2(spieler):
  35. global zeitStart, zeit
  36. screen.blit(hintergrundLevel, (0, 0))
  37. # Tor anzeigen
  38. #pygame.draw.rect(screen, (255,0,0), (3*feld,0,48,48),0)
  39. if LevelManagement.numFrames >= LevelManagement.fpsTarget:
  40. LevelManagement.fpsCurrent = LevelManagement.timeNeeded / LevelManagement.numFrames
  41. LevelManagement.numFrames = 0
  42. LevelManagement.timeNeeded = 0
  43. textsurface = myfont.render("%i fps" % (1000/LevelManagement.fpsCurrent), False, (255, 255, 0))
  44. screen.blit(textsurface,(10,0))
  45. #drawLevel2()
  46. if zeitStart: #Zeit wird ab den ersten aufruf gemäßen (für Matlab)
  47. zeitStart = False
  48. LevelManagement.Level = 2
  49. zeit = time()
  50. 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
  51. pygame.display.update() #mit mlaufen läuft die Prinzessin und es wird überprüft ob die Prinzessin getötet wurde
  52. pygame.time.wait(1000)
  53. monster1.reset() #Es wird Alles für die Harpyie zurück gesetzt
  54. prinzessin.reset() #Es wird Alles für die Prinzessin zurück gesetzt
  55. LevelManagement.Level = 3
  56. ds.daten_csv(9, round(time() - zeit)) #Zeit für Level3 (für Matlab)
  57. ds.daten_csv(11, LevelManagement.Level)
  58. zeitStart = True
  59. return LevelManagement.Level
  60. # den folgenden Code-Block (if-Anweisung) können Sie entfernen, wenn Harpyie implementiert ist.
  61. # Dafür dann den Block darüber wieder aktivieren.
  62. """if prinzessin.mlaufen(spieler, monster1): #mit mlaufen läuft die Prinzessin und es wird überprüft ob die Prinzessin getötet wurde
  63. pygame.display.update()
  64. pygame.time.wait(1000)
  65. prinzessin.reset() #Es wird Alles für die Prinzessin zurück gesetzt
  66. LevelManagement.Level = 3
  67. ds.daten_csv(9, round(time() - zeit)) #Zeit für Level3 (für Matlab)
  68. ds.daten_csv(11, LevelManagement.Level)
  69. zeitStart = True
  70. return LevelManagement.Level
  71. """
  72. if spieler.obenKollision.colliderect(tor): #Held muss mit dem Kopf den Eingang berühren
  73. if (monster1.leben):
  74. sounds.soundTor()
  75. pygame.time.wait(500)
  76. monster1.reset() #Es wird Alles für die Harpyie zurück gesetzt
  77. prinzessin.reset() #Es wird Alles für die Prinzessin zurück gesetzt
  78. LevelManagement.Level = 3
  79. ds.daten_csv(9, round(time() - zeit)) #Zeit für Level3 (für Matlab)
  80. zeitStart = True
  81. return LevelManagement.Level
  82. else:
  83. sounds.soundTor()
  84. pygame.time.wait(500)
  85. monster1.reset() #Es wird Alles für die Harpyie zurück gesetzt
  86. prinzessin.reset() #Es wird Alles für die Prinzessin zurück gesetzt
  87. LevelManagement.Level = 4
  88. ds.daten_csv(9, round(time() - zeit)) #Zeit für Level3 (für Matlab)
  89. zeitStart = True
  90. return LevelManagement.Level
  91. else: #Das Level läuft weiter
  92. spieler.steuerung()
  93. return LevelManagement.Level