B08_abstrakte_Klasse/main.py
2024-09-29 14:12:39 +02:00

63 lines
1.9 KiB
Python

from abc import ABC, abstractmethod
import random
class Charakter(ABC):
def __init__(self, name, lebenspunkte, angriffsstaerke):
self.name = name
self.lebenspunkte = lebenspunkte
self.angriffsstaerke = angriffsstaerke
self.char_list = []
@abstractmethod
def angreifen(self):
pass
@abstractmethod
def spezielle_faehigkeit(self):
pass
class Kaempfer(Charakter):
def angreifen(self):
return self.angriffsstaerke
def spezielle_faehigkeit(self):
return self.angriffsstaerke * 2 # Berserkerangriff
class Magier(Charakter):
def angreifen(self):
return self.angriffsstaerke + random.randint(1, 5) # Zauberangriff
def spezielle_faehigkeit(self):
return self.angriffsstaerke * 3 # Feuerball
class Schurke(Charakter):
def angreifen(self):
return self.angriffsstaerke + random.randint(-2, 3) # Hinterhältiger Angriff
def spezielle_faehigkeit(self):
return self.angriffsstaerke * 1.5 # Schleichen
def kampf(char1, char2):
while char1.lebenspunkte > 0 and char2.lebenspunkte > 0:
# char1 greift an
schaden = char1.angreifen()
char2.lebenspunkte -= schaden
print(f"{char1.name} greift an und fügt {char2.name} {schaden} Schaden zu. Lebenspunkte: {char2.lebenspunkte}")
if char2.lebenspunkte <= 0:
print(f"{char2.name} wurde besiegt!")
break
# char2 greift an
schaden = char2.angreifen()
char1.lebenspunkte -= schaden
print(f"{char2.name} greift an und fügt {char1.name} {schaden} Schaden zu. Lebenspunkte: {char1.lebenspunkte}")
if char1.lebenspunkte <= 0:
print(f"{char1.name} wurde besiegt!")
# Beispiel für die Erstellung von Charakteren und einen Kampf
char1 = Kaempfer("Thor", 100, 15)
char2 = Magier("Gandalf", 80, 12)
kampf(char1, char2)