'''Ny versjon av klassen Kennel - Bruker klassen Hund - Bruker random-biblioteket for å generere tilfeldige tall - En kennel har en matrise (nøstet liste / todimensjonal liste) som representeres med rader og kolonner. På hver index i matrisen skal vi legge inn et objekt av klassen Hund ''' #importerer nødvendige klasser from hund import Hund from random import randint #randint er en funksjon som genererer tilfeldige tall class Kennel: def __init__(self, rad, kol): #tar inn hvor mange rader og kolonner vi ønsker til matrisen self._rader = rad self._kolonner = kol self._hundekart = self.generer(rad,kol) #kaller på metode som genererer matrisen #matrisen lagres i variabelen self._hundekart #genererer matrisen, tar inn antall rader og antall kolonner vi skal ha def generer(self, rader, kolonner): #Et utvalg av hundenavn vi kan bruke for å opprette hundeobjekter navneliste = ["Abe", "Ace","Achilles","Agar","Aiden","Ajax", "Allegro", "Allie", "Amazon", "Amigo", "Anaconda", "Andres","Android", "Angstrom", "Anise", "Aquarius", "Archie", "Argus", "Artemis", "Ashes", "Aspen", "Atlas", "August", "Avalon", "Armani"] #Ønsker at hundene vi genererer ikke kan være over 15 år max_alder = 15 #Oppretter tom liste --> denne skal returneres fra denne metoden hundeliste = [] #For så mange rader vi ønsker matrisen skal ha: for i in range(rader): #legg til en tom liste. Hver liste representerer en rad: hundeliste.append([]) #For så mange kolonner matrisen skal ha: for j in range(kolonner): #genererer tilfeldig tall fra og med 0 til og med 1: kjonn = randint(0,1) #genererer tilfeldig fra og med 0 til og med lengden av listen -1, #slik at vi får tak i en tilfeldig index i listen overn hundenavn: navn_index = randint(0, len(navneliste)-1) #genererer tilfeldig tall fra og med 0 til og med 15 (max alder for hundene): alder = randint(0,max_alder) #Nå kan vi opprette en ny hund, med verdiene vi har laget: ny_hund = Hund(kjonn, navneliste[navn_index], alder) #Legger til den nye hunden på slutten av den raden vi er på (i): hundeliste[i].append(ny_hund) #Returnerer den ferdige matrisen ut av metoden return hundeliste #Henter ut en hund basert på hvilken plass den har i matrisen def hentHund(self, rad, kol): return self._hundekart[rad][kol] #ENDRET: #Skriver ut matrisen, basert på om de er gutter eller jenter def skrivHunder(self): for rad in self._hundekart: print() for hund in rad: print(hund.hentHund(), end ="") print() #Finner en hund sine nabohunder basert på en ønskelig index i matrisen def finnNabo(self, rad, kol): #Liste med naboer vi vil returnere fra funksjonen: naboliste = [] #i skal være -1, 0 og 1, bruker dette for å finne naboindekser #Først for radene (i) for i in range(-1,2): #Så for kolonnene (j) for j in range(-1,2): #naboraden er raden vi har som parameter + i naborad = rad + i #nabokolonnen er kolonnen vi har som parameter + j nabokolonne = kol + j #Foreløpig så sier vi at vi har en gyldig nabo gyldig_nabo = True #Dersom vi er på raden og kolonnen i løkken der objektet vi vil finne #naboene til ligger (altså vi er på "oss selv") if naborad == rad and nabokolonne == kol: #Er det ikke en gyldig nabo (man kan ikke være sin egen nabo) gyldig_nabo = False #Hvis indexene går utenfor spennet for antall rader i matrisen if naborad >= self._rader or naborad < 0: #Ikke gyldig nabo gyldig_nabo = False #Samme for kolonnene: if nabokolonne >= self._kolonner or nabokolonne < 0: gyldig_nabo = False #Hvis naboen fortsatt er gyldig (True): if gyldig_nabo: #da kan vi legge til nabohunden i nabolisten naboliste.append(self._hundekart[naborad][nabokolonne]) #Returnerer ferdig liste med nabohunder return naboliste