main.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. # (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
  2. # Hauptprogramm
  3. # Autor: Viktor Lysow, Johannes Tümler
  4. # Letzte Änderung: 22.04.2022
  5. # Zweck: Steuerung des gesamten Spielablaufs - dieses Programm muss gestartet werden, um das Spiel zu spielen.
  6. #
  7. # Das Hauptprgramm
  8. # hier wird der Held erstellt
  9. # Hauptschleife greift auf alle Level zu
  10. from KlasseLevelmanagement import LevelManagement
  11. import pygame
  12. import sys
  13. import sounds
  14. from time import time
  15. from screen import feld
  16. from startBild import start
  17. from KlasseHeld import Held
  18. from Level1 import Level1
  19. from Level2 import Level2
  20. from GameOver import gameOver
  21. from GameWin import gameWin
  22. from KlasseMonster import Monster
  23. from KlassePrinzessin import Prinzessin
  24. import DatenSammeln as ds # Für den Matlab Beleg
  25. import button
  26. zeitmax = 0 #performance test
  27. zeit_start_ges = 0
  28. pygame.init()
  29. sounds.soundLevel()
  30. LevelManagement.Level = 0
  31. screen = pygame.display.set_mode([816, 624])
  32. clock = pygame.time.Clock()
  33. pygame.display.set_caption("Dungeon v2024 Hochschule Anhalt, by Johannes Tümler. Initial design by Viktor Lysow") # Sie dürfen sich hier hinzufügen
  34. feld = 48 # pixel
  35. go = True
  36. clock = pygame.time.Clock()
  37. if pygame.joystick.get_count() > 0:
  38. pygame.joystick.init()
  39. #pygame.event.pump()
  40. joystick = pygame.joystick.Joystick(0)
  41. joystick.init()
  42. LevelManagement.joystick = joystick
  43. while go:
  44. #print(Monster.lebendeMonster, len(Monster.monsterListe))
  45. #if len(Monster.monsterListe) > 0:
  46. #print(Monster.monsterListe[0])
  47. LevelManagement.deltaTime = clock.tick(LevelManagement.fpsTarget)
  48. # das Spiel soll mit 30-50 fps (Bilder pro Sekunde) laufen
  49. # Falls irgendwas komisch läuft (Monster in Wänden, nichts bewegt sich, oder ähnlich)
  50. # dann mal das fpsTarget mit kleineren/größeren Werten testen (siehe Klasse LevelManagement)
  51. LevelManagement.numFrames += 1
  52. LevelManagement.timeNeeded += LevelManagement.deltaTime
  53. zeit = time()
  54. for event in pygame.event.get():
  55. if event.type == pygame.QUIT:
  56. ds.write_csv() # bisherige Ergebnisse speichern
  57. sys.exit() # Beenden
  58. elif event.type == pygame.KEYDOWN: # Wenn Escape gedrueckt wird, posten wir ein QUIT-Event in Pygames Event-Warteschlange.
  59. if event.key == pygame.K_ESCAPE:
  60. pygame.event.post(pygame.event.Event(pygame.QUIT))
  61. screen.fill((0, 0, 0))
  62. if LevelManagement.Level == 0: #Startbildschrim
  63. LevelManagement.Level = start()
  64. zeit_start_ges =time() #Zeit des Startes vom Spiel (für Matlab)
  65. if LevelManagement.Level != 0: # in dem Moment, wo ein Level gestartet wird, erstellen wir die neue Spielfigur
  66. spieler1 = Held(x = 582, y = 476, geschw = 4, breite = feld, hoehe = feld, level = 1, bildFigur=button.selectedButton) #Figuren erstellen
  67. elif LevelManagement.Level == 1: #Geist
  68. LevelManagement.Level = Level1(spieler1)
  69. if LevelManagement.Level == 2: # in dem Moment, wo ein Level gestartet wird, erstellen wir die neue Spielfigur
  70. prinzessin = Prinzessin(x = feld*10, y = feld*3, geschw = 7, breite = feld, hoehe = feld, level = LevelManagement.Level, bildFigur = "Prinzessin", zeitMonster= time())
  71. elif LevelManagement.Level == 2: #Boss
  72. LevelManagement.Level = Level2(spieler1, prinzessin)
  73. elif LevelManagement.Level == 3: #Game Over
  74. #ds.daten_csv(10, round(time() - zeit_start_ges)) #Gesamt Spielzeit (für Matlab)
  75. LevelManagement.Level = gameOver(spieler1)
  76. spieler1.neu_Position(582, 476, 1) #Held wird resetet für neues Spiel
  77. elif LevelManagement.Level == 4: #Game Won
  78. #ds.daten_csv(10, round(time() - zeit_start_ges)) #Gesamt Spielzeit (für Matlab)
  79. LevelManagement.Level = gameWin(spieler1)
  80. spieler1.neu_Position(582, 476, 1) #Held wird resetet für neues Spiel
  81. pygame.display.update()
  82. if zeitmax < time() - zeit: #performance Test
  83. zeitmax = time() - zeit
  84. #print(zeitmax)