KlasseGeist.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
  2. # Geist-Klasse
  3. # Autor: Viktor Lysow
  4. # Letzte Änderung: 30.03.2022
  5. # Zweck: Geist-Entität definieren
  6. #
  7. # Geist erbt alles von Monster
  8. # können den Held bei Berührung töten
  9. # Geist kann neue Monster erschaffen, die wie Geister aussehen
  10. # Der Nachfolgende Codeblock "BLOCK1" sorgt dafür, dass man aus jeder Datei heraus das Hauptprogramm starten kann.
  11. # Dadurch kann man in jeder Datei auf "play" drücken und es wird automatisch main.py gestartet.
  12. if __name__=="__main__":
  13. import subprocess
  14. # Auf Linux oder Mac aktivieren Sie die folgende Zeile und deaktivieren Sie die Zeile danach:
  15. #subprocess.call("python3 main.py", shell=True) # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm)
  16. subprocess.call("main.py", shell=True) # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm)
  17. exit(0) # nun das Programm hier beenden .. wir wollen ja nur das Hauptprogramm starten und nicht *diese* Datei.
  18. # Ende "BLOCK1"
  19. import pygame
  20. from KlasseMonster import Monster
  21. from time import time
  22. from random import randint
  23. class Geist (Monster):
  24. def __init__(self, x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster):
  25. super().__init__(x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster)
  26. self.MonsterDupl = Monster #Welche Klasse erschaffen wird
  27. self.dupliList = [] #Liste der erschaffenen Monster
  28. self.zeitDupl = zeitMonster
  29. self.anzahlDouble = 1
  30. self.zeitUnsicht = zeitMonster
  31. self.bildUnsicht = [pygame.image.load("Bilder/Geist/tot.png"),
  32. pygame.image.load("Bilder/Geist/tot.png")]
  33. self.saveBildOben = self.bildOben
  34. self.saveBildUnten = self.bildUnten
  35. self.saveBildRechts = self.bildRechts
  36. self.saveBildLinks = self.bildLinks
  37. self.zeitSpring = zeitMonster
  38. def reset(self):
  39. self.x = self.xReset
  40. self.y = self.yReset
  41. self.leben = True
  42. self.heldTot = False
  43. self.anzahlDouble = 1
  44. self.dupliList = []
  45. def faehigkeit(self): #Fähigkeiten von Monstern werden mit den Fähigkeiten der Klasse überschrieben!!!
  46. self.toeten()
  47. self.duplizieren()
  48. #Alle Fähigkeiten der Klasse Geist
  49. def duplizieren(self):
  50. for dupli in self.dupliList: #Alle erschaffenen Monster in Bewegung bringen
  51. if dupli.mlaufen(self.heldDaten): #Prüfen ob ein erschaffenes Monster den Held getötet hat
  52. self.heldTot = True
  53. if time() - self.zeitDupl >= 0.5 * self.anzahlDouble: #Zeit zur Duplezierung wird jedes mal erhöht
  54. self.dupliList.append(self.MonsterDupl(x = self.x, y = self.y, geschw = self.geschw, breite = self.breite, hoehe = self.hoehe, level = self.level, bildFigur = self.bildFigur, zeitMonster = time())) #Monster wird erschaffen und in die Liste eingefügt
  55. self.zeitDupl = time() #Zeit wird wieder auf Null gesetzt
  56. self.anzahlDouble += 1