#Her skal vi lage en klasse Kattehjem, et sted som passer på #katter mens eierne er på ferie (for eksempel). #Vi kan se for oss at hver indeks i den todimensjonale #lista er plassen hver katt får utdelt (en kvadratmeter, et bur, #egen bolig, eller lignende) #OBS! Det er mange kommentarer her for å forklare, men dere trenger ikke #å ha like mange når dere kommentarer. #Dere bør spesielt ikke ha så mange kommentarer #til høyre for koden. from katt import Katt import random class Kattehjem: def __init__(self, rad, kolonne): #vi tar inn hvor stort hjemmet skal være self._rader = rad self._kolonner = kolonne #navn vi kan bruke self._navneliste = ["Bojine","Asorus","Dallene","Dangfart","Dania","Desiderius","Gjær","Halperene", "Melion","Helberglena","Palmerston","Herolda","Prætorius","Hertovikka","Sirak Parnelius","Kassiana","Svale", "Kemma","Thelaus","Mikkoline","Veier","Samelena","Sekunda","Staalene",] #Vi bruker en egen privat metode for å opprette ei ny #todimensjonal liste self._katteliste = self._generer(rad, kolonne) #Oppretter ei liste, basert på antall rader og kolonner #Vi kan markere denne med understrek for å indikere at den bare #er tenkt brukt inne i denne klassen. #!!!Se dokumentet om todimensjonale lister for mer info. #Metoden fyller lista med tilfeldige katter def _generer(self, rad, kolonne): nyListe = [] for i in range(self._rader): indreListe = [] for j in range(self._kolonner): #vi trenger tre tilfeldige tall:kjønn,navn og alder navnIndeks = random.randint(0, len(self._navneliste)-1) #randint går fra og med, til og med, så vi må ha lengden minus 1. alder = random.randint(0, 16) kjoenn = random.randint(0, 1) indreListe.append(Katt(self._navneliste[navnIndeks], alder, kjoenn)) nyListe.append(indreListe) return nyListe #Denne metoden skriver ut alle kattene def skrivKatter(self): for i in range(self._rader): for j in range(self._kolonner): print(str(self._katteliste[i][j]) + "|",end="") print() #Denne er for at vi bryter der vi må #Denne metoden bruker vi til å finne ut hvilke katter som bor rundt en katt. #Vi sender inn koordinatene til katten vi vil vite naboene til. #Merk at vi bruker kunnskapen om at de 8 naboene og katten i midten danner ei lita #todimensjonal liste, fra -1 til +1 relativ til koordinatene vi sender inn #Husk at range() tar fra og med, til men IKKE inkludert. def finnNaboKatter(self, rad, kol): #vi skal returnere ei liste, så vi oppretter ei tom liste som vi kan fylle nabokatter = [] for i in range(rad - 1, rad + 2): #+2 fordi vi må ta 1 mer enn det vi egentlig skal ha, på grunn av hvordan range() fungerer. for j in range(kol - 1, kol +2 ): gyldig = True #Vi oppretter en boolsk variabel for å holde styr på om vi kan legge til noe if i == rad and j == kol: #hvis koordinatene er det samme som katten vi skal sjekke naboene til gyldig = False if i < 0 or i >= self._rader: gyldig = False if j < 0 or j >= self._kolonner: gyldig = False if gyldig: #Huskå ikke skrive "if gyldig == True:", vi trenger ikke "== True" siden det er underforstått. nabokatter.append(self._katteliste[i][j]) #vi vet at koordinatene er gyldige, så vi kan legge til nabokatten. return nabokatter