123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- # (c) Hochschule Anhalt, veröffentlicht unter MIT-Lizenz
- # Prinzessin-Klasse
- # Autor: Viktor Lysow, Johannes Tümler
- # Letzte Änderung: 19.04.2023
- # Zweck: Definition der Prinzessin
- #
- # Prinzessin erbt Alles von Monster
- # Held stirbt wenn Prinzessin stirbt
- # Prinzesin kann Emotionen zeigen
- # 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"
- from random import randint
- import pygame
- from screen import screen
- from KlasseMonster import Monster
- from KlasseWurfaxt import Axt
- from time import time
- import sounds
- import DatenSammeln as ds
- class Prinzessin(Monster): # Eine Prinzessin ist ein Monster (aber ein besonderes)
- def __init__(self, x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster):
- super().__init__(x, y, geschw, breite, hoehe, level, bildFigur, zeitMonster)
- self.emotionWechsel = 0
- self.bildAngst = [pygame.image.load(f"Bilder/Emotion/!1.png"),
- pygame.image.load(f"Bilder/Emotion/!2.png"),
- pygame.image.load(f"Bilder/Emotion/!3.png")]
- self.bildHerz = [pygame.image.load(f"Bilder/Emotion/Herz1.png"),
- pygame.image.load(f"Bilder/Emotion/Herz2.png"),
- pygame.image.load(f"Bilder/Emotion/Herz3.png")]
- self.zeitEmotion = zeitMonster
- self.bildTot = [pygame.image.load(f"Bilder/Prinzessin/tot.png")]
- self.stehRicht = 0
- self.axtZahlPrinzessin = 0
- def faehigkeit(self): #Fähigkeiten von Monster werden mit den Fähigkeiten der Klasse überschrieben!!!
- self.priSterben()
- for monster in Monster.monsterListe:
- if monster.leben: #wechselt Emotion je nach ob der Endboss lebt oder nicht
- self.emotion(self.bildAngst)
- break # wenn noch mindestens 1 Monster vorhanden: Angst! Abbruch der Schleife
- else:
- self.emotion(self.bildHerz)
- for monster in Monster.monsterListe: # ursprünglich wollte ich die obere Schleife mit dieser Schleife zusammenlegen, passt jedoch logisch nicht
- if monster.leben and self.rechteck.colliderect(monster.rechteck):
- self.richtung = (self.richtung + randint(1,4)) % 4 # wir drehen uns vom Monster weg
- def reset(self):
- ds.daten_csv(10, self.axtZahlPrinzessin) #schreiben auf Datei
- self.axtZahlPrinzessin = 0
- super().reset()
- def priSterben(self): # Held stirbt, wenn Prinzessin stirbt
- if not self.leben:
- sounds.soundTot()
- screen.blit(self.bildTot[0], (self.x, self.y))
- screen.blit(self.heldDaten.bildtot, (self.heldDaten.x, self.heldDaten.y))
- self.heldTot = True
- def emotion(self, emo): # Zeigt eine Sprechblase über dem Kopf
- screen.blit(emo[self.emotionWechsel], (self.x, self.y - 48))
- if time() - self.zeitEmotion >= 0.15: #Animation der Sprechblase
- if self.emotionWechsel < 2:
- self.emotionWechsel += 1
- else:
- self.emotionWechsel = 0
- self.zeitEmotion = time()
|