12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- # (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
- # Monster-Klasse
- # Autor: Viktor Lysow, Johannes Tümler
- # Letzte Änderung: 30.03.2022
- # Zweck: Definition der Monster
- #
- # Monster erbt Alles von Figur
- # Monster können selbst laufen
- # Sterben, wenn sie mit der Magie des Helden in Berührung kommen
- # können den Helden bei Berührung töten
- # 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
- from random import randint
- from time import time
- from KlasseFigur import Figur
- from screen import screen
- import sounds
- class Monster(Figur):
- def __init__(self, x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster):
- super().__init__(x, y, geschw, breite, hoehe, level, bildFigur)
- self.xReset = x
- self.yReset = y
- self.richtung = 1
- self.zeitMonster = zeitMonster
- self.leben = True
- self.heldTot = False
- self.feuerWechsel = 0
- self.heldDaten = None
- self.monsterDaten = None
- self.bildTot = [pygame.image.load(f"Bilder/Feuer/F1.png"),
- pygame.image.load(f"Bilder/Feuer/F2.png"),
- pygame.image.load(f"Bilder/Feuer/F3.png")]
- def reset(self):
- self.x = self.xReset
- self.y = self.yReset
- self.leben = True
- self.heldTot = False
- def mlaufen(self, spieler , monster = None): #Monster können selber laufen
- if self.leben:
- self.heldDaten = spieler #Alle Daten vom Held werden hier gespeichert
- self.monsterDaten = monster #Alle Daten von einem Monster werden hier gespeichert
- if time() - self.zeitMonster >= 1: #abhängig von der Zeit
- self.richtung = randint(0, 3) #Zufallsrichtung
- self.zeitMonster = time()
- self.laufen(self.richtung) #Laufen in eine Richtung
- self.sterben()
- self.faehigkeit()
- return self.heldTot #Rückgabe ob der Held tot ist
- else:
- screen.blit(self.bildTot[self.feuerWechsel], (self.x, self.y)) #Monster brennen, wenn sie tot sind
- if time() - self.zeitMonster >= 0.15:
- if self.feuerWechsel < 2:
- self.feuerWechsel += 1
- else:
- self.feuerWechsel = 0
- self.zeitMonster = time()
- def toeten(self): #Held wird getötet bei Kollision
- if self.rechteck.colliderect(self.heldDaten.rechteck):
- sounds.soundTot()
- screen.blit(self.heldDaten.bildtot, (self.heldDaten.x, self.heldDaten.y))
- self.heldTot = True
- def sterben(self): # Monster ist tot nach der Berührung von der Magie des Helden
- for k in self.heldDaten.kugeln:
- if self.rechteck.colliderect(k.kugelRec):
- self.heldDaten.kugeln.remove(k)
- self.leben = False
- sounds.soundFeuer()
- def faehigkeit(self): #Alle Fähigkeiten von Monster kommen hier rein
- self.toeten()
|