from hund import Hund class Kennel: def __init__(self, rad, kol): self._rad = rad self._kol = kol self._hundeliste = self.generer(rad, kol) def hentHund(self, rad, kol): return self._hundeliste[rad][kol] ''' Denne metoden gir oss et 2D array av hunder. ''' def generer(self, rader, kolonner): navneliste = ["Abe","Ace", "Achillies",\ "Agar", "Aiden", "AJax", "Allegro", "Allie",\ "Amazon", "Amigo","Anaconda", "Andres",\ "Android", "Angstrom", "Anise", "Aquarius",\ "Archie", "Argus","Artemis", "Ashes", "Aspen", \ "Atlas", "August", "Avalon", "Armani"] ''' For aa lage et 2D array av hunder har jeg tatt en snarvei. Dette gjor at: Alle hunder faar kjonn tispe og alder 0 Algoritmen fungerer ikke med storre arrays enn 4*4 - Vi har en hundeliste. - For hver iterasjon av den ytterste lokken lages en tom liste som legges til i hundelisten. - I den innerste lokken legges det like mange elementer inn i listen fra forrige steg, som antall kolonner. - For hver iterasjon av den ytterste lokken faar vi en ny rad - For hver iterasjon av den innerste lokken faar vi en ny kolonne - navneliste[i*kolonner+j] henter bare "neste" element i listen. (fra 0 til rader*kolonner) ''' hundeliste = [] for i in range(rader): inneliste = [] hundeliste.append(inneliste) for j in range(kolonner): navn = navneliste[i*kolonner+j] inneliste.append(Hund("tispe", navn, 0)) return hundeliste """ Denne metoden finner alle hundene i nabocellene til hunden paa plass rad, kol. Med faa justeringer kan metoden finne alle naboene til et element i et vilkaarlig 2d array. Nyttig? """ def finnNaboer(self, rad, kol): naboliste = [] ''' - Vi onsker aa iterere gjennom elementene rundt elementet paa plass rad, kol. - Dette inkluderer alle elementer paa plass rad +- 1 og kol +- 1. - Vi lager en for-lokke for aa iterere fra rad-1 til rad +1 - Deretter lager vi en for-lokke for aa iterere fra kol-1 til kol +1 - Tallene 'i' og 'j' i dette programmet faar verdiene -1 til 1, altsaa ikke ikke indekser, men "avstand" fra rad og kol. - Vi lager variabelen naboRad med verdien i+rad. Hvis vi kaller finnNaboer med 1, 1 som argumenter vil naboRad = 1 + -1, altsaa 0 i forste iterasjon. - Vi gjor tilsvarende for naboKol. - naboRad og naboKol er i hver iterasjon indekser til en potensiell nabo ''' for i in range(-1, 2): for j in range(-1,2): naboRad = i+rad naboKol = j+kol gyldig = True # Hvis nabo == Den vi vil hente naboen til if naboRad == rad and naboKol == kol: gyldig = False # Hvis naboRad har en ugyldig indeks if naboRad < 0 or naboRad >= self._rad: gyldig = False # Hvis naboKol har en ugyldig indeks if naboKol < 0 or naboKol >= self._kol: gyldig = False # Hvis en potensiell nabo "overlever" alle testene # vil vi legge den til i nabolisten. if gyldig: naboliste.append(self.hentHund(naboRad, naboKol)) return naboliste