from random import randint class Speler: def __init__(self, naam, wapen) -> None: self.naam = naam self.wapens = set() self.wapens.add(wapen.lower()) self.aantal_vermoord = 0 self.isDood = False def vermoord(self,speler): assert not self.isDood, "dode speler kan niet moorden" assert not self.__eq__(speler), "speler moet andere speler doden" assert not speler.isDood, "andere speler moet levend zijn" self.aantal_vermoord += 1 speler.isDood = True d = self.wapens.intersection(speler.wapens) self.wapens = self.wapens.union(speler.wapens) speler.wapens = d def __eq__(self, andere_speler) -> bool: if not isinstance(andere_speler,self.__class__): return False return self.naam == andere_speler.naam def __repr__(self) -> str: sLevend = ("levend" if not self.isDood else "dood") sWapens = "" if len(self.wapens) == 0: sWapens = "Heeft geen wapens" else: sWapens = str(self.wapens) sWapens = "Wapens: " + sWapens[1:len(sWapens) - 1] return self.naam + " is " + sLevend + "\naantal vermoord " + str(self.aantal_vermoord) + "\n" + sWapens class Gevecht: def __init__(self, speler1, speler2) -> None: assert not speler1.isDood and not speler2.isDood, "speler in gevecht moet levend zijn" self.speler1 = speler1 self.speler2 = speler2 def vecht(self): i = randint(1,2) if i == 1: self.speler1.vermoord(self.speler2) else: self.speler2.vermoord(self.speler1) an = Speler("an","Speer") jan = Speler("jan","dolk") gevecht = Gevecht(an,jan) gevecht.vecht() print(an) print(jan) jef = Speler("jef","dolk") gevecht2 = Gevecht(an,jef) gevecht2.vecht() print(an) print(jan) print(jef)