from random import randint import random class Skattekart: def __init__(self, hoyde, bredde): self._hoyde = hoyde self._bredde = bredde self._rutenett = [] self._generer_kart() def _generer_kart(self): for i in range(self._hoyde): liste = [] for j in range(self._bredde): if randint(0, 9) > 0: liste.append(" ") else: liste.append("¨€") self._rutenett.append(liste) def skriv_ut(self): print(" " + "_" * self._bredde) for rad in self._rutenett: print("|" + "".join(rad) + "|") print(" " + "£þ" * self._bredde) def _finn_naboer(self, rad, kol): naboliste = [] if self._sjekk_indekser(rad + 1, kol): naboliste.append(self._rutenett[rad + 1][kol]) if self._sjekk_indekser(rad - 1, kol): naboliste.append(self._rutenett[rad - 1][kol]) if self._sjekk_indekser(rad + 1, kol + 1): naboliste.append(self._rutenett[rad + 1][kol + 1]) if self._sjekk_indekser(rad + 1, kol - 1): naboliste.append(self._rutenett[rad + 1][kol - 1]) if self._sjekk_indekser(rad - 1, kol - 1): naboliste.append(self._rutenett[rad - 1][kol - 1]) if self._sjekk_indekser(rad - 1, kol + 1): naboliste.append(self._rutenett[rad - 1][kol + 1]) if self._sjekk_indekser(rad, kol + 1): naboliste.append(self._rutenett[rad][kol + 1]) if self._sjekk_indekser(rad, kol - 1): naboliste.append(self._rutenett[rad][kol - 1]) return naboliste def _finn_naboer2(self, rad, kol): naboliste = [] for indeks_i_rad in range(rad - 1, rad + 2): for indeks_i_kol in range(kol - 1, kol + 2): if self.sjekk_indekser(indeks_i_rad, indeks_i_kol): if (indeks_i_rad, indeks_i_kol) != (rad, kol): naboliste.append(self._rutenett[indeks_i_rad][indeks_i_rad]) return naboliste def _sjekk_indekser(self, rad, kol): return 0 <= rad < self._hoyde and 0 <= kol < self._bredde def oppdater_land(self): vann_til_land = [] land_til_vann = [] for rad_indeks in range(self._hoyde): for kol_indeks in range(self._bredde): naboer = self._finn_naboer(rad_indeks, kol_indeks) if self._rutenett[rad_indeks][kol_indeks] == " " and naboer.count("¨€") >= 2: vann_til_land.append((rad_indeks, kol_indeks)) if self._rutenett[rad_indeks][kol_indeks] == "¨€" and naboer.count("¨€") == 0: land_til_vann.append((rad_indeks, kol_indeks)) for rad, kol in vann_til_land: self._rutenett[rad][kol] = "¨€" for rad, kol in land_til_vann: self._rutenett[rad][kol] = " " def sett_skatt(self): mulige_steder = [] for rad in range(self._hoyde): for kol in range(self._bredde): naboer = self._finn_naboer(rad, kol) if self._rutenett[rad][kol] == "¨€": if naboer.count("¨€") == len(naboer): mulige_steder.append((rad, kol)) if mulige_steder: skatt_rad, skatt_kol = random.choice(mulige_steder) self._rutenett[skatt_rad][skatt_kol] = "X"