from passasjer import Passasjer class Trikk: def __init__(self, rutenr, antallRader): self._rutenr = rutenr self._plassPerRad = 5 self._plasser = self._lagTrikk(antallRader) #Oppretter trikken med bare ledige seter def _lagTrikk(self, antallRader): plasser = [] for i in range(antallRader): plasser.append([]) for j in range(self._plassPerRad): plasser[i].append("ledig") return plasser """gaar gjennom trikken hvis det er ledig plass setter passasjeren seg hv ikke får den ikke gått på. """ def gaaPaaTrikk(self, passasjer): for i in range(len(self._plasser)): for j in range(self._plassPerRad): if self._plasser[i][j] == "ledig": self._plasser[i][j] = passasjer passasjer.gaaPaa() #passasjer markers som gått på return True return False #finner alle naboene til et sete. def hentNaboer(self, rad, sete): naboListe = [] #iterer over alle naboene for i in range(-1, 2): for j in range(-1, 2): naboRad = rad + i naboSete = sete + j gyldig = True #Hvis indeksen er gyldig #hvis dette er tilfellet er vi i det objekte vi vil finne naboer for if i == 0 and j == 0: gyldig = False #naboRad er uten for indeksene sine if naboRad < 0 or naboRad >= len(self._plasser): gyldig = False #naboSete er utenfor indeksene sine if naboSete < 0 or naboSete >= self._plassPerRad: gyldig = False if gyldig and self._plasser[naboRad][naboSete] != "ledig": naboListe.append(self._plasser[naboRad][naboSete]) return naboListe #Går gjennom setene hvis personen skal av gaar den av. #Hvsi mer en 4 personer rundt stinker gaar person av pga vond lukt def gaaAvTrikk(self, stasjon): for i in range(len(self._plasser)): for j in range(self._plassPerRad): passasjer = self._plasser[i][j] #peker til "passasjeren" #da har vi en instans av klassen Passasjer if passasjer != "ledig": if passasjer.hentAvstigning() == stasjon: passasjer.gaarAvRiktig() self._plasser[i][j] = "ledig" else: stinker = 0 #finner antall naboer som stinker for nabo in self.hentNaboer(i , j): if nabo.stinker(): stinker += 1 if stinker > 4: self._plasser[i][j] = "ledig" #Hvis det fortsatt er en der ooker vi antall stasjoner if self._plasser[i][j] != "ledig": self._plasser[i][j].ookAntallStasjoner() #lager en string representasjon av trikke objektet. def __str__(self): tekst = "" for rad in self._plasser: tekst += "|" for plass in rad: tekst += str(plass) + "|" tekst += "\n" return tekst