from rute_fasitish import Rute from spiller_fasitish import Spiller class Brett: def __init__(self): self._brett = [] for i in range(3): self._brett.append([Rute(), Rute(), Rute()]) self._spiller1 = None self._spiller2 = None def legg_til_spiller(self, symbol): ny_spiller = Spiller(symbol) if self._spiller1 == None: self._spiller1 = ny_spiller elif self._spiller2 == None: self._spiller2 = ny_spiller else: print("Det fins allerede to spillere") def plasser_brikke(self, spiller, x, y): if x >= 0 and x < 3 and y >= 0 and y < 3: if not self._brett[x][y].er_opptatt(): self._brett[x][y].plasser_brikke(spiller) else: print("Rute allerede tatt") return False else: print("Ugyldig posisjon") return False return True def sjekk_vinner(self): for i in range(3): spiller1_sum = 0 spiller2_sum = 0 for j in range(3): rute = self._brett[i][j] if rute.hent_brikkeeier() == self._spiller1: spiller1_sum += 1 elif rute.hent_brikkeeier() == self._spiller2: spiller2_sum += 1 if spiller1_sum == 3: return self._spiller1.hent_symbol() elif spiller2_sum == 3: return self._spiller2.hent_symbol() for i in range(3): spiller1_sum = 0 spiller2_sum = 0 for j in range(3): rute = self._brett[j][i] if rute.hent_brikkeeier() == self._spiller1: spiller1_sum += 1 elif rute.hent_brikkeeier() == self._spiller2: spiller2_sum += 1 if spiller1_sum == 3: return self._spiller1.hent_symbol() elif spiller2_sum == 3: return self._spiller2.hent_symbol() return None def spill(self): if self._spiller1 == None or self._spiller2 == None: print("Legg til to spillere f?rst") return ikke_vunnet = True while ikke_vunnet: spiller1_ikke_gyldig = True while spiller1_ikke_gyldig: x = input("Spiller 1, velg koordinat x: ") y = input("Spiller 1, velg koordinat y: ") mid = self.plasser_brikke(self._spiller1, int(x), int(y)) if mid == True: spiller1_ikke_gyldig = False else: print("Ugyldig valg, pr?v igjen") spiller2_ikke_gyldig = True while spiller2_ikke_gyldig: x = input("Spiller 2, velg koordinat x: ") y = input("Spiller 2, velg koordinat y: ") mid = self.plasser_brikke(self._spiller2, int(x), int(y)) if mid == True: spiller2_ikke_gyldig = False else: print("Ugyldig valg, pr?v igjen") vunnet = self.sjekk_vinner() if vunnet != None: return vunnet fylte_brett = 0 for brett in self._brett: for rute in brett: if rute.er_opptatt(): fylte_brett += 1 if fylte_brett == 9: return None brett = Brett() brett.legg_til_spiller('X') brett.legg_til_spiller('O') vinner = brett.spill() if vinner == None: print("Ingen vinner") else: print(f"Spiller med symbol {vinner} har vunnet")