'''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] #Skriver ut informasjon om matrisen def skrivHunder(self): #For s? mange rader vi har i matrisen: for i in range(len(self._hundekart)): #For hver rad lager informasjon om raden, lagres i en tekststreng tekst = "Rad: " + str(i) + ", hunder: \n" #For hver kolonne i hver rad: for j in range(len(self._hundekart[i])): #Konkatinerer tekststrengen med informasjon om hver hund tekst += self._hundekart[i][j].hentHund() + ". \n" #For hver rad skal denne teksten skrives ut print(tekst) #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