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)