class Mijn: def __init__(self,x,y) -> None: self.x = x self.y = y self.geraakt = False def is_geraakt(self): return self.geraakt def raak(self): self.geraakt = True def __eq__(self, andere_mijn: object) -> bool: if not isinstance(andere_mijn,Mijn): return False return andere_mijn.x == self.x and andere_mijn.y == self.y class Veld: def __init__(self, hoogte, mijnen = []) -> None: assert hoogte in range(3,6), "hoogte van het veld moet minimaal 3 en maximaal 5 zijn" for m in mijnen: assert mijnen.count(m) == 1, "element mag maar 1 keer voorkomen" assert m.x in range(1,hoogte+1) and m.y in range(1,hoogte+1), "mijnen moeten in veld liggen" self.hoogte = hoogte self.mijnen = mijnen def raak_mijn(self,x,y): if Mijn(x,y) in self.mijnen: self.mijnen.remove(Mijn(x,y)) nieuwe_mijn = Mijn(x,y) nieuwe_mijn.raak() self.mijnen.append(nieuwe_mijn) def __repr__(self): uit = "" for i in range(1,self.hoogte+1): lijn = "" for j in range(1,self.hoogte+1): lijn += "." for m in self.mijnen: if m.x == i and m.is_geraakt(): lijn= lijn[:(m.y-1)] + "X" + lijn[m.y:] uit+= lijn + "\n" return uit mijnen = [Mijn(1,2),Mijn(1,4),Mijn(2,2),Mijn(3,4)] v = Veld(4,mijnen) v.raak_mijn(2,2) v.raak_mijn(3,4) v.raak_mijn(1,1) print(v)