from uke10_spiller import Spiller from uke10_rute import Rute class Brett: def __init__(self): self._ruter = self._lag_brett() self._spiller1 = None self._spiller2 = None def _lag_brett(self): brett = [] for i in range(3): rad = [] for j in range(3): rad.append(Rute()) brett.append(rad) #legger til rad med ruter etter for-l?kken return brett def legg_til_spiller(self, symbol): ny_spiller = Spiller(symbol) if self._spiller1 is None: self._spiller1 = ny_spiller elif self._spiller2 is None: self._spiller2 = ny_spiller else: print("Det eksisterer allerede to spillere.") def plasser_brikke(self, spiller, x, y): if 0 <= x < 3 and 0 <= y < 3: if self._ruter[x][y].er_opptatt() == False: self._ruter[x][y].plasser_brikke(spiller) else: print("Ruten er allerede tatt.") else: print("Ugyldig posisjon.") def sjekk_vinner(self): # Sjekk horisontalt og vertikalt #for hver rad og kolonne: sjekke om alle tre ruter er opptatt, og om alle ruter er er tatt av samme spiller. for i in range(3): #horisontalt if self._ruter[i][0].er_opptatt() and self._ruter[i][1].er_opptatt() and self._ruter[i][2].er_opptatt() and self._ruter[i][0].hent_brikkeeier() == self._ruter[i][1].hent_brikkeeier() == self._ruter[i][2].hent_brikkeeier(): return self._ruter[i][0].hent_brikkeeier().hent_symbol() #vertikalt if self._ruter[0][i].er_opptatt() and self._ruter[1][i].er_opptatt() and self._ruter[2][i].er_opptatt() and self._ruter[0][i].hent_brikkeeier() == self._ruter[1][i].hent_brikkeeier() == self._ruter[2][i].hent_brikkeeier(): return self._ruter[0][i].hent_brikkeeier().hent_symbol() #alle rader/kolonner er sjekket, men ingen vinnere: return None #ikke en del av oppgaven, men gj?r det lettere ? se hva som skjer: def print_brett(self): brett = [] for y in range(3): rad = [] for x in range(3): rute = self._ruter[x][y] if rute.er_opptatt() == False: #ledig rute rad.append("[ ]") else: rad.append("["+rute.hent_brikkeeier().hent_symbol()+"]") brett.append(rad) print(brett[2][0], brett[2][1], brett[2][2]) print(brett[1][0], brett[1][1], brett[1][2]) print(brett[0][0], brett[0][1], brett[0][2]) def spill(self): if self._spiller1 is None or self._spiller2 is None: print("Det m? v?re to spillere for ? starte spillet.") return tur = 0 antall_trekk = 0 while antall_trekk < 9: spiller = self._spiller1 if tur % 2 == 0 else self._spiller2 #spiller 1 sin tur ved partall, spiller 2 sin tur ved oddetall print(f"Spiller {spiller.hent_symbol()}'s tur") self.print_brett() x = int(input("Angi x-koordinat (0, 1, 2): ")) y = int(input("Angi y-koordinat (0, 1, 2): ")) if 0 <= x < 3 and 0 <= y < 3 and not self._ruter[x][y].er_opptatt(): self.plasser_brikke(spiller, x, y) antall_trekk += 1 if self.sjekk_vinner(): print(f"Spiller {spiller.hent_symbol()} har vunnet!") self.print_brett() return tur += 1 else: print("Ugyldig valg. Pr?v igjen.") print("Ingen vinner")