# (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz # Figur-Klasse # Autor: Viktor Lysow, Johannes Tümler # Letzte Änderung: 12.04.2022 # Zweck: Figur-Entität definieren # # Harpyie erbt Alles von Monster # können den Held bei Berührung töten # Harpyie kann in alle 4 Himmelrichtungen schießen # Harpyie kann seitwärts schießen # Harpyie kann in alle Richtungen bewegen # Der Nachfolgende Codeblock "BLOCK1" sorgt dafür, dass man aus jeder Datei heraus das Hauptprogramm starten kann. # Dadurch kann man in jeder Datei auf "play" drücken und es wird automatisch main.py gestartet. if __name__=="__main__": import subprocess # Auf Linux oder Mac aktivieren Sie die folgende Zeile und deaktivieren Sie die Zeile danach: #subprocess.call("python3 main.py", shell=True) # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm) subprocess.call("main.py", shell=True) # die richtige Main-Datei aufrufen (unser eigentliches Hauptprogramm) exit(0) # nun das Programm hier beenden .. wir wollen ja nur das Hauptprogramm starten und nicht *diese* Datei. # Ende "BLOCK1" import pygame import sounds from KlasseMagie import Magie from KlasseGeist import Geist from time import time from screen import screen class Harpyie (Geist): #Harpyie soll in allen 4 Richtungen hin und wieder schießen def __init__(self, x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster): super().__init__(x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster) self.zeitSchuss = zeitMonster self.bildExplo = [pygame.image.load(f"Bilder/Magie/E1.png"), pygame.image.load(f"Bilder/Magie/E2.png")] self.roundfire = [0,0,0,0] def faehigkeit(self): #Fähigkeiten von Monstern werden mit den Fähigkeiten der Klasse überschrieben!!! self.toeten() self.duplizieren() self.schiessen() def reset(self): super().reset() self.kugeln = [] self.leben = True def schiessen(self): #Schießt in alle 4 Himmelsrichtungen diff = time() - self.zeitSchuss if diff >= 1 and self.roundfire[0] == 0: self.kugeln.append(Magie(self.x, self.y, 0, "R", 5)) self.roundfire[0] = 1 elif diff >= 1.1 and self.roundfire[1] == 0: self.kugeln.append(Magie(self.x, self.y, 1, "R", 5)) self.roundfire[1] = 1 elif diff >= 1.2 and self.roundfire[2] == 0: self.kugeln.append(Magie(self.x, self.y, 2, "R", 5)) self.roundfire[2] = 1 elif diff >= 1.3: self.kugeln.append(Magie(self.x, self.y, 3, "R", 5)) self.roundfire = [0,0,0,0] self.zeitSchuss = time() for k in self.kugeln: if self.heldDaten.rechteck.colliderect(k.waffeRec): # vergleicht ob eine Kugel den Helden trifft sounds.soundTot() screen.blit(self.heldDaten.bildtot, (self.heldDaten.x, self.heldDaten.y)) self.heldTot = True if not self.hindernis(k.waffeRec): # vergleicht ob eine Kugel ein Hindernis trifft self.kugeln.remove(k) for k in self.kugeln: # vergleicht ob eine Kugel eine feindliche Kugel trifft for m in self.heldDaten.kugeln: #(zwei Schleifen hier, weil bei dem Fall wenn Hindernis und feindliche Kugel sich treffen kommt ein Fehler) if k.waffeRec.colliderect(m.waffeRec): sounds.soundKolMag() if (k in self.kugeln): self.kugeln.remove(k) self.heldDaten.kugeln.remove(m) k.bewegung() # Bewegung der einzelnen Kugeln