63 lines
1.9 KiB
Python
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) |