from rute import Rute from spiller import Spiller class Spillbrett: def __init__(self): self._brett = self._lag_ruter() self._spiller1 = None self._spiller2 = None # hjelpemetode for konstrukt?ren def _lag_ruter(self): liste = [[], [],[]] for innerliste in liste: for i in range(3): innerliste.append(Rute()) return liste def legg_til_spiller(self, symbol): if self._spiller1 is None: self._spiller1 = Spiller(symbol) elif self._spiller2 is None: self._spiller2 = Spiller(symbol) else: print("Det finnes allerede to spillere. Spillet er fullt.") def plasser_brikke(self, spiller, x, y): if self._brett[x][y].er_ledig(): self._brett[x][y].plasser_brikke(spiller) return True else: print("Ruten er opptatt.") return False def sjekk_vinner(self): for innerliste in self._brett: if innerliste[0].hent_brikkeeier() == innerliste[1].hent_brikkeeier() == innerliste[2].hent_brikkeeier(): # trenger bare sjekke om ¨Śn av dem er None, hvis de alle er like og ¨Śn er None er alle None if innerliste[0].hent_brikkeeier() is not None: return innerliste[0].hent_brikkeeier()._tegn for i in range(3): if self._brett[0][i].hent_brikkeeier() == self._brett[1][i].hent_brikkeeier() == self._brett[2][i].hent_brikkeeier(): if self._brett[0][i].hent_brikkeeier() is not None: return self._brett[0][i].hent_brikkeeier()._tegn # diagonalt: if self._brett[0][0].hent_brikkeeier() == self._brett[1][1].hent_brikkeeier() == self._brett[2][2].hent_brikkeeier(): if self._brett[0][0].hent_brikkeeier() is not None: return self._brett[0][0].hent_brikkeeier()._tegn if self._brett[0][2].hent_brikkeeier() == self._brett[1][1].hent_brikkeeier() == self._brett[2][0].hent_brikkeeier(): if self._brett[0][2].hent_brikkeeier() is not None: return self._brett[0][2].hent_brikkeeier()._tegn return None def spill(self): if (self._spiller1 is None) or (self._spiller2 is None): print("Du m? ha to spillere for ? spille.") return None spiller = self._spiller1 ant_trekk = 0 # m? kunne sjekke om brettet er fullt while self.sjekk_vinner() is None and ant_trekk < 9: print(f"Spiller {spiller._tegn}") x = int(input("Skriv koordinat x:")) y = int(input("Skriv koordinat y:")) if (0 <= x <=2) and (0 <= y <=2): # endret plasser_brikke s? den returnerer True om man fikk legge brikken if self.plasser_brikke(spiller, x, y): # oppdaterer ant_trekk om spiller fikk legge ant_trekk += 1 if spiller is self._spiller1: # bytter spiller om spilleren fikk legge. spiller = self._spiller2 else: spiller = self._spiller1 if self.sjekk_vinner() is None: print("Brettet er fullt. Ingen vinner.") else: print(f"Gratulerer til spiller {self.sjekk_vinner()}")