KlasseHarpyie.py 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
  2. # Figur-Klasse
  3. # Autor: Viktor Lysow, Johannes Tümler
  4. # Letzte Änderung: 12.04.2022
  5. # Zweck: Figur-Entität definieren
  6. #
  7. # Harpyie erbt Alles von Monster
  8. # können den Held bei Berührung töten
  9. # Harpyie kann in alle 4 Himmelrichtungen schießen
  10. # Harpyie kann seitwärts schießen
  11. # Harpyie kann in alle Richtungen bewegen
  12. # Der Nachfolgende Codeblock "BLOCK1" sorgt dafür, dass man aus jeder Datei heraus das Hauptprogramm starten kann.
  13. # Dadurch kann man in jeder Datei auf "play" drücken und es wird automatisch main.py gestartet.
  14. if __name__=="__main__":
  15. import subprocess
  16. # Auf Linux oder Mac aktivieren Sie die folgende Zeile und deaktivieren Sie die Zeile danach:
  17. #subprocess.call("python3 main.py", shell=True) # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm)
  18. subprocess.call("main.py", shell=True) # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm)
  19. exit(0) # nun das Programm hier beenden .. wir wollen ja nur das Hauptprogramm starten und nicht *diese* Datei.
  20. # Ende "BLOCK1"
  21. import pygame
  22. import sounds
  23. from KlasseMagie import Magie
  24. from KlasseGeist import Geist
  25. from time import time
  26. from screen import screen
  27. class Harpyie (Geist): #Harpyie soll in allen 4 Richtungen hin und wieder schießen
  28. def __init__(self, x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster):
  29. super().__init__(x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster)
  30. self.zeitSchuss = zeitMonster
  31. self.bildExplo = [pygame.image.load(f"Bilder/Magie/E1.png"),
  32. pygame.image.load(f"Bilder/Magie/E2.png")]
  33. self.roundfire = [0,0,0,0]
  34. def faehigkeit(self): #Fähigkeiten von Monstern werden mit den Fähigkeiten der Klasse überschrieben!!!
  35. self.toeten()
  36. self.duplizieren()
  37. self.schiessen()
  38. def reset(self):
  39. super().reset()
  40. self.kugeln = []
  41. self.leben = True
  42. def schiessen(self): #Schießt in alle 4 Himmelsrichtungen
  43. diff = time() - self.zeitSchuss
  44. if diff >= 1 and self.roundfire[0] == 0:
  45. self.kugeln.append(Magie(self.x, self.y, 0, "R", 5))
  46. self.roundfire[0] = 1
  47. elif diff >= 1.1 and self.roundfire[1] == 0:
  48. self.kugeln.append(Magie(self.x, self.y, 1, "R", 5))
  49. self.roundfire[1] = 1
  50. elif diff >= 1.2 and self.roundfire[2] == 0:
  51. self.kugeln.append(Magie(self.x, self.y, 2, "R", 5))
  52. self.roundfire[2] = 1
  53. elif diff >= 1.3:
  54. self.kugeln.append(Magie(self.x, self.y, 3, "R", 5))
  55. self.roundfire = [0,0,0,0]
  56. self.zeitSchuss = time()
  57. for k in self.kugeln:
  58. if self.heldDaten.rechteck.colliderect(k.waffeRec): # vergleicht ob eine Kugel den Helden trifft
  59. sounds.soundTot()
  60. screen.blit(self.heldDaten.bildtot, (self.heldDaten.x, self.heldDaten.y))
  61. self.heldTot = True
  62. if not self.hindernis(k.waffeRec): # vergleicht ob eine Kugel ein Hindernis trifft
  63. self.kugeln.remove(k)
  64. for k in self.kugeln: # vergleicht ob eine Kugel eine feindliche Kugel trifft
  65. for m in self.heldDaten.kugeln: #(zwei Schleifen hier, weil bei dem Fall wenn Hindernis und feindliche Kugel sich treffen kommt ein Fehler)
  66. if k.waffeRec.colliderect(m.waffeRec):
  67. sounds.soundKolMag()
  68. if (k in self.kugeln):
  69. self.kugeln.remove(k)
  70. self.heldDaten.kugeln.remove(m)
  71. k.bewegung() # Bewegung der einzelnen Kugeln