123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- # (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
- # Hauptprogramm
- # Autor: Viktor Lysow, Johannes Tümler
- # Letzte Änderung: 22.04.2022
- # Zweck: Steuerung des gesamten Spielablaufs - dieses Programm muss gestartet werden, um das Spiel zu spielen.
- #
- # Das Hauptprgramm
- # hier wird der Held erstellt
- # Hauptschleife greift auf alle Level zu
- from KlasseLevelmanagement import LevelManagement
- import pygame
- import sys
- import sounds
- from time import time
- from screen import feld
- from startBild import start
- from KlasseHeld import Held
- from Level1 import Level1
- from Level2 import Level2
- from GameOver import gameOver
- from GameWin import gameWin
- from KlasseMonster import Monster
- from KlassePrinzessin import Prinzessin
- import DatenSammeln as ds # Für den Matlab Beleg
- import button
- zeitmax = 0 #performance test
- zeit_start_ges = 0
- pygame.init()
- sounds.soundLevel()
- LevelManagement.Level = 0
- screen = pygame.display.set_mode([816, 624])
- clock = pygame.time.Clock()
- pygame.display.set_caption("Dungeon v2024 Hochschule Anhalt, by Johannes Tümler. Initial design by Viktor Lysow") # Sie dürfen sich hier hinzufügen
- feld = 48 # pixel
- go = True
- clock = pygame.time.Clock()
- if pygame.joystick.get_count() > 0:
- pygame.joystick.init()
- #pygame.event.pump()
- joystick = pygame.joystick.Joystick(0)
- joystick.init()
- LevelManagement.joystick = joystick
- while go:
- #print(Monster.lebendeMonster, len(Monster.monsterListe))
- #if len(Monster.monsterListe) > 0:
- #print(Monster.monsterListe[0])
- LevelManagement.deltaTime = clock.tick(LevelManagement.fpsTarget)
- # das Spiel soll mit 30-50 fps (Bilder pro Sekunde) laufen
- # Falls irgendwas komisch läuft (Monster in Wänden, nichts bewegt sich, oder ähnlich)
- # dann mal das fpsTarget mit kleineren/größeren Werten testen (siehe Klasse LevelManagement)
- LevelManagement.numFrames += 1
- LevelManagement.timeNeeded += LevelManagement.deltaTime
- zeit = time()
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- ds.write_csv() # bisherige Ergebnisse speichern
- sys.exit() # Beenden
- elif event.type == pygame.KEYDOWN: # Wenn Escape gedrueckt wird, posten wir ein QUIT-Event in Pygames Event-Warteschlange.
- if event.key == pygame.K_ESCAPE:
- pygame.event.post(pygame.event.Event(pygame.QUIT))
- screen.fill((0, 0, 0))
- if LevelManagement.Level == 0: #Startbildschrim
- LevelManagement.Level = start()
- zeit_start_ges =time() #Zeit des Startes vom Spiel (für Matlab)
- if LevelManagement.Level != 0: # in dem Moment, wo ein Level gestartet wird, erstellen wir die neue Spielfigur
- spieler1 = Held(x = 582, y = 476, geschw = 4, breite = feld, hoehe = feld, level = 1, bildFigur=button.selectedButton) #Figuren erstellen
-
- elif LevelManagement.Level == 1: #Geist
- LevelManagement.Level = Level1(spieler1)
- if LevelManagement.Level == 2: # in dem Moment, wo ein Level gestartet wird, erstellen wir die neue Spielfigur
- prinzessin = Prinzessin(x = feld*10, y = feld*3, geschw = 7, breite = feld, hoehe = feld, level = LevelManagement.Level, bildFigur = "Prinzessin", zeitMonster= time())
-
- elif LevelManagement.Level == 2: #Boss
- LevelManagement.Level = Level2(spieler1, prinzessin)
- elif LevelManagement.Level == 3: #Game Over
- #ds.daten_csv(10, round(time() - zeit_start_ges)) #Gesamt Spielzeit (für Matlab)
- LevelManagement.Level = gameOver(spieler1)
- spieler1.neu_Position(582, 476, 1) #Held wird resetet für neues Spiel
- elif LevelManagement.Level == 4: #Game Won
- #ds.daten_csv(10, round(time() - zeit_start_ges)) #Gesamt Spielzeit (für Matlab)
- LevelManagement.Level = gameWin(spieler1)
- spieler1.neu_Position(582, 476, 1) #Held wird resetet für neues Spiel
- pygame.display.update()
- if zeitmax < time() - zeit: #performance Test
- zeitmax = time() - zeit
- #print(zeitmax)
-
|