KlassePrinzessin.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
  2. # Prinzessin-Klasse
  3. # Autor: Viktor Lysow
  4. # Letzte Änderung: 30.03.2022
  5. # Zweck: Definition der Prinzessin
  6. #
  7. # Prinzessin erbt Alles von Monster
  8. # Held stirbt wenn Prinzessin stirbt
  9. # Prinzesin kann Emotionen zeigen
  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 screen import screen
  21. from KlasseMonster import Monster
  22. from time import time
  23. import sounds
  24. class Prinzessin(Monster): # Eine Prinzessin ist ein Monster (aber ein besonderes)
  25. def __init__(self, x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster):
  26. super().__init__(x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster)
  27. self.emotionWechsel = 0
  28. self.bildAngst = [pygame.image.load(f"Bilder/Emotion/!1.png"),
  29. pygame.image.load(f"Bilder/Emotion/!2.png"),
  30. pygame.image.load(f"Bilder/Emotion/!3.png")]
  31. self.bildHerz = [pygame.image.load(f"Bilder/Emotion/Herz1.png"),
  32. pygame.image.load(f"Bilder/Emotion/Herz2.png"),
  33. pygame.image.load(f"Bilder/Emotion/Herz3.png")]
  34. self.zeitEmotion = zeitMonster
  35. def faehigkeit(self): #Fähigkeiten von Monster werden mit den Fähigkeiten der Klasse überschrieben!!!
  36. self.priSterben()
  37. if self.monsterDaten.leben: #wechselt Emotion je nach ob der Endboss lebt oder nicht
  38. self.emotion(self.bildAngst)
  39. else:
  40. self.emotion(self.bildHerz)
  41. def priSterben(self): # Held stirbt, wenn Prinzessin stirbt
  42. if not self.leben:
  43. sounds.soundTot()
  44. screen.blit(self.bildTot[self.feuerWechsel], (self.x, self.y))
  45. screen.blit(self.heldDaten.bildtot, (self.heldDaten.x, self.heldDaten.y))
  46. self.heldTot = True
  47. def emotion(self, emo): # Zeigt eine Sprechblase über dem Kopf
  48. screen.blit(emo[self.emotionWechsel], (self.x, self.y - 48))
  49. if time() - self.zeitEmotion >= 0.15: #Animation der Sprechblase
  50. if self.emotionWechsel < 2:
  51. self.emotionWechsel += 1
  52. else:
  53. self.emotionWechsel = 0
  54. self.zeitEmotion = time()