from rute import Rute from spiller import Spiller class Brett: def __init__(self): self._brett = [[], [], []] for rad in self._brett: for i in range(3): rad.append(Rute()) self._spiller1 = None self._spiller2 = None def legg_til_spiller(self, symbol): spiller = Spiller(symbol) if self._spiller1 is None: self._spiller1 = spiller elif self._spiller2 is None: self._spiller2 = spiller else: print("Det finnes allerede to spillere") def plasser_brikke(self, spiller, x, y): if not ((0 <= x <= 2) and (0 <= y <= 2)): print("Ugyldige koordinater, oppgi 0, 1, eller 2 som koordinat") elif self._brett[x][y].er_opptatt(): print("Denne ruten er opptatt") else: self._brett[x][y].plasser_brikke(spiller) return True return False def sjekk_vinner(self): # Sjekker tre på rad horisontalt for rad in self._brett: # If-setningen under er det samme som (a == b) and (b == c) and (c is not None) # a = rad[0].hent_brikkeeier() # b = rad[1].hent_brikkeeier() # c = rad[2].hent_brikkeeier() if rad[0].hent_brikkeeier() == rad[1].hent_brikkeeier() == rad[2].hent_brikkeeier() is not None: return rad[0].hent_brikkeeier().hent_symbol() # Sjekker tre på rad vertikalt for kol in range(3): if self._brett[0][kol].hent_brikkeeier() == self._brett[1][kol].hent_brikkeeier() == self._brett[2][kol].hent_brikkeeier() is not None: return self._brett[0][kol].hent_brikkeeier().hent_symbol() def spill(self): if self._spiller1 is None or self._spiller2 is None: print("Det er ikke nok spillere for å spille") else: trekk = 0 spiller = self._spiller1 # Løkke som går så lenge brettet ikke er fullt og det ikke er noen vinner while trekk < 9 and self.sjekk_vinner() is None: print(f"\n{spiller.hent_symbol()} sin tur til å plassere en brikke") x = int(input("X-koordinater: ")) y = int(input("Y-koordinater: ")) plassert = self.plasser_brikke(spiller, x, y) if plassert: if spiller == self._spiller1: spiller = self._spiller2 else: spiller = self._spiller1 trekk += 1 self.print_brett() if not self.sjekk_vinner(): print("Ingen vinner") else: print(f"{self.sjekk_vinner()} vant spillet!") # Metode for å printe brettet (Ikke nødvendig for eksamensoppgaven) def print_brett(self): for i in range(0, 3): for j in range(0, 3): if self._brett[i][j].hent_brikkeeier(): print(self._brett[i][j].hent_brikkeeier().hent_symbol(), end=" ") else: print("-", end=" ") print()