# Oppg 18 (5 poeng) class Spiller: def __init__(self, symbol): if symbol not in ["X", "O"]: print("Ugyldig symbol for spiller") self._symbol = None else: self._symbol = symbol # Hjelpemetode, vi sl?r ikke s? hardt ned p? direkteaksess her... def hent_symbol(self): return self._symbol # Oppg 19 (8 poeng) class Rute: def __init__(self): self._spiller = None def plasser_brikke(self, spiller): self._spiller = spiller def er_opptatt(self): return self._spiller != None def hent_brikkeeier(self): return self._spiller # Oppg 20 (17 poeng) class Brett: def __init__(self): self._spiller1 = None self._spiller2 = None self._brett = [] for i in range(0, 3): self._brett.append([]) for _ in range(0, 3): self._brett[i].append(Rute()) def legg_til_spiller(self, symbol): ny_spiller = Spiller(symbol) if ny_spiller: if not self._spiller1: self._spiller1 = ny_spiller elif not self._spiller2: if self._spiller1.hent_symbol() == symbol: print("Det eksisterer allerede en spiller med dette symbolet") else: self._spiller2 = ny_spiller else: print("Det eksisterer allerede to spillere") def plasser_brikke(self, spiller, x, y): if x > 2 or y > 2 or x < 0 or y < 0: print("Ugyldig koordinat") return False elif self._brett[x][y].er_opptatt(): print("Det finnes allerede en brikke p? oppgitt plass") return False else: self._brett[x][y].plasser_brikke(spiller) return True # Oppg 21 (11 poeng) # Masse m?ter ? gj?re denne p?. Dette er litt stygt, men tror studentene g?r for noe s?nt def sjekk_vinner(self): for rad in self._brett: if rad[0].hent_brikkeeier() == rad[1].hent_brikkeeier() == rad[2].hent_brikkeeier() != None: return rad[0].hent_brikkeeier().hent_symbol() for kol in range(len(self._brett[0])): if self._brett[0][kol].hent_brikkeeier() == self._brett[1][kol].hent_brikkeeier() == self._brett[2][kol].hent_brikkeeier() != None: return self.brett[0][kol].hent_brikkeeier().hent_symbol() return False # Oppg 22 (9 poeng) def spill(self): if not self._spiller1 and self._spiller2: print("Det finnes ikke nok spillere") return trekk = 0 spiller = self._spiller1 while trekk < 9 and not self.sjekk_vinner(): print(spiller.hent_symbol(), "sin tur til ? velge.") x = int(input("Tast X-koord: ")) y = int(input("Tast Y-koord: ")) har_plassert = self.plasser_brikke(spiller, x, y) if har_plassert: if spiller == self._spiller1: spiller = self._spiller2 else: spiller = self._spiller1 trekk += 1 self.print_brett() if not self.sjekk_vinner(): print("Ingen vant spillet") else: print(self.sjekk_vinner(), "vant spillet") # Bare for testing, ikke del av oppgaven 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() # Testkode, ikke del av oppgaven if __name__ == "__main__": brett = Brett() # print(brett._brett) brett.legg_til_spiller("X") brett.legg_til_spiller("O") brett.spill()