12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- # (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
|