Level1.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. # (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
  2. # Level1
  3. # Autor: Viktor Lysow, Johannes Tümler
  4. # Letzte Änderung: 22.04.2022
  5. # Zweck: Organisation und Steuerung des ersten 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. import DatenSammeln as ds # Für den Matlab Beleg
  19. from screen import screen
  20. from hindernisse import feld
  21. from time import time
  22. from KlasseMonster import Monster
  23. from KlasseGeist import Geist
  24. zeitStart = True
  25. zeit = 0
  26. LevelManagement.Level = 1
  27. hintergrundLevel1 = pygame.image.load("Bilder/Karte/Level1.png")
  28. tor = pygame.Rect(3*feld,0,48,48) #Ziel in Level 1
  29. # display text
  30. pygame.font.init() # you have to call this at the start, if you want to use this module.
  31. myfont = pygame.font.SysFont('Comic Sans MS', 30)
  32. def Level1(spieler):
  33. global zeitStart, zeit
  34. screen.blit(hintergrundLevel1, (0, 0))
  35. if len(Monster.monsterListe) == 0 : # falls bereits alle Monster getötet wurden, erstellen wir ein neues Monster für den Neustart des Levels
  36. monster = Geist(x = 100, y = 200, geschw= 3, breite = feld, hoehe = feld, level = LevelManagement.Level,bildFigur= "Geist",zeitMonster= time())
  37. Monster.monsterListe.append(monster)
  38. if LevelManagement.debug:
  39. pygame.draw.rect(screen, (0,255,0), (spieler.x,spieler.y, spieler.breite,spieler.hoehe),0) # Spieler
  40. pygame.draw.rect(screen, (255,255,0), (3*feld,0,48,48),0) # Tor
  41. if LevelManagement.numFrames >= LevelManagement.fpsTarget:
  42. LevelManagement.fpsCurrent = (LevelManagement.timeNeeded / LevelManagement.numFrames)
  43. LevelManagement.numFrames = 0
  44. LevelManagement.timeNeeded = 0
  45. textsurface = myfont.render("%i fps" % (1000/LevelManagement.fpsCurrent), False, (255, 255, 0))
  46. screen.blit(textsurface,(10,0))
  47. if zeitStart: #Zeit wird ab den ersten aufruf gemäßen (für Matlab)
  48. zeitStart = False
  49. LevelManagement.Level = 1
  50. zeit = time()
  51. for dupli in Monster.monsterListe: #Alle erschaffenen Monster in Bewegung bringen
  52. if LevelManagement.debug:
  53. pygame.draw.rect(screen, (255,0,0), (dupli.x,dupli.y,dupli.breite,dupli.hoehe),0)
  54. pygame.draw.circle(surface = screen, color = (255,0,0), center = (dupli.x,dupli.y), radius = Monster.angriffsradius, width = 2)
  55. if dupli.mlaufen(spieler): #mit mlaufen läuft der Geist und es wird überprüft, ob der Held getötet wurde
  56. pygame.display.update()
  57. pygame.time.wait(1000)
  58. gameOver = 3
  59. #monster.reset() #Es wird Alles für den Geist zurück gesetzt
  60. # ich muss kein monster.reset machen, weil ich einfach alle Monster lösche. Damit müssen sie sowieso neu erstellt werden
  61. ds.daten_csv(8,len(Monster.monsterListe)) #Level1 Moster Anzahl (für Matlab)
  62. Monster.anzahlGeister = 0
  63. Monster.monsterListe = []
  64. Monster.zeitDupl = 0
  65. ds.daten_csv(11,1) #Nehmendas letzte Level des Spiels auf
  66. zeitStart = True
  67. return gameOver
  68. if spieler.obenKollision.colliderect(tor): #Held muss mit dem Kopf den Eingang berühren
  69. LevelManagement.Level += 1
  70. spieler.neu_Position(582, 476, LevelManagement.Level) #Neue Position für das nächste Level
  71. sounds.soundTor()
  72. pygame.time.wait(500)
  73. #monster.reset() #Es wird Alles für den Geist zurück gesetzt
  74. # ich muss kein monster.reset machen, weil ich einfach alle Monster lösche. Damit müssen sie sowieso neu erstellt werden
  75. ds.daten_csv(8,len(Monster.monsterListe)) #Level1 Moster Anzahl (für Matlab)
  76. Monster.anzahlGeister = 0
  77. Monster.monsterListe = []
  78. Monster.zeitDupl = 0
  79. #ds.daten_csv(8, round(time() - zeit)) #Zeit für Level1 (für Matlab)
  80. zeitStart = True
  81. return LevelManagement.Level
  82. else: #Das Level läuft weiter
  83. spieler.steuerung()
  84. return LevelManagement.Level