KlasseGeist.py 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
  2. # Geist-Klasse
  3. # Autor: Viktor Lysow, Johannes Tümler
  4. # Letzte Änderung: 18.03.2024
  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 (Duplizieren)
  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. # Hinweis fürs Debugging: Das VSCode-Debugging funktioniert jedoch nur, wenn man das Debugging in der "main.py" beginnt! D.h. wer debuggen möchte, muss die main.py öffnen und dort Debug starten.
  19. # Ende "BLOCK1"
  20. import pygame
  21. from KlasseMonster import Monster
  22. from time import time
  23. from random import randint
  24. class Geist (Monster):
  25. #Liste der erschaffenen Monster
  26. def __init__(self, x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster):
  27. super().__init__(x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster)
  28. self.zeitUnsicht = zeitMonster
  29. self.bildUnsicht = [pygame.image.load("Bilder/Geist/tot.png"),
  30. pygame.image.load("Bilder/Geist/tot.png")]
  31. self.saveBildOben = self.bildOben
  32. self.saveBildUnten = self.bildUnten
  33. self.saveBildRechts = self.bildRechts
  34. self.saveBildLinks = self.bildLinks
  35. self.zeitSpring = zeitMonster
  36. def reset(self):
  37. self.x = self.xReset
  38. self.y = self.yReset
  39. self.leben = True
  40. self.heldTot = False
  41. def faehigkeit(self): #Fähigkeiten von Monstern werden mit den Fähigkeiten der Klasse überschrieben!!!
  42. self.toeten()
  43. self.duplizieren(Geist)
  44. def duplizieren(self, typ = None): #einer der Geister wird sich verdoppeln, man weiß jedoch nicht, welcher!
  45. if Monster.lebendeMonster > 0 and time() - Monster.zeitDupl >= 0.75 * Monster.lebendeMonster * 3: #Zeit zur Duplizierung wird jedes mal erhöht
  46. Monster.zeitDupl = time()
  47. # man kann die Funktion duplizieren entweder mit oder ohne Parameter aufrufen.
  48. # Gibt man keinen Parameter an (also wenn nur self.duplizieren() aufgerufen wird), so wird ein einfacher
  49. # Geist erschaffen.
  50. # Gibt man jedoch einen Parameter an, bspw. self.duplizieren(Harpyie) , dann wird entsprechend eine Harpyie erzeugt, mit ihren speziellen Fähigkeiten
  51. # Vergleiche mit Zeile 50!
  52. if typ == None:
  53. typ = Geist #Zeit wird wieder auf Null gesetzt
  54. typ(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