class Celle: def __init__(self): self._status = "doed" def settDoed(self): self._status = "doed" def settLevende(self): self._status = "levende" def erLevende(self): return self._status == "levende" def hentStatusTegn(self): if self.erLevende(): return "O" return "." def __repr__(self): return self._status import random class Spillebrett: def __init__(self, rader, kolonner): self._rader = rader self._kolonner = kolonner self._rutenett = self._lagTomtRutenett() print(self._rutenett) self._leggCellerIRutenett() print(self._rutenett) self._generer() self._generasjonsnummer = 0 def _lagTomRad(self): rad = [] for kolNummer in range(self._kolonner): rad.append(None) return rad def _lagTomtRutenett(self): rutenett = [] for radNummer in range(self._rader): indreListe = self._lagTomRad() rutenett.append(indreListe) return rutenett def _leggCellerIRutenett(self): for rad in range(self._rader): for kol in range(self._kolonner): self._rutenett[rad][kol] = Celle() def _generer(self): for rad in range(self._rader): for kol in range(self._kolonner): tilfeldigTall = random.randint(0,2) if tilfeldigTall == 0: self._rutenett[rad][kol].settLevende() def tegnBrett(self): for rad in range(self._rader): for kol in range(self._kolonner): print(self._rutenett[rad][kol].hentStatusTegn(),end=" ") print() print("Generasjon:",self._generasjonsnummer) print("Antall levende:",self.antallLevende()) def antallLevende(self): antall = 0 for rad in range(self._rader): for kol in range(self._kolonner): if self._rutenett[rad][kol].erLevende(): antall += 1 return antall def hentCelle(self, rad, kol): if rad < 0 or rad >= self._rader: return None if kol < 0 or kol >= self._kolonner: return None return self._rutenett[rad][kol] def finnNabo(self, rader, kolonner): naboliste = [] for rad in range(rader - 1, rader + 2): for kol in range(kolonner - 1, kolonner + 2): nabo = self.hentCelle(rad, kol) if nabo is not None and (rad, kol) is not (rader, kolonner): naboliste.append(self._rutenett[rad][kol]) return naboliste def oppdatering(self): skalDoe = [] skalLeve = [] for rad in range(self._rader): for kol in range(self._kolonner): celle = self._rutenett[rad][kol] naboer = self.finnNabo(rad,kol) levendeNaboer = 0 for nabo in naboer: if nabo.erLevende(): levendeNaboer += 1 if self._rutenett[rad][kol].erLevende(): if levendeNaboer > 3: skalDoe.append(celle) elif levendeNaboer < 2: skalDoe.append(celle) else: if levendeNaboer == 3: skalLeve.append(celle) for c in skalDoe: c.settDoed() for c in skalLeve: c.settLevende() self._generasjonsnummer += 1 def hovedprogram(): rader = int(input("Hvor mange rader? ")) kolonner = int(input("Hvor mange kolonner? ")) brettet = Spillebrett(rader,kolonner) brettet.tegnBrett() svar = input("Skriv q for å avslutte ") while svar != "q": brettet.oppdatering() brettet.tegnBrett() svar = input("Skriv q for å avslutte ") hovedprogram()