def __init__(self): #stworzenie pustej mapy self.nodes = {} self.mapa = [[lokalizacja(x,y, "Pusty") for x in range(zalozenia.wymiar_x)] for y in range(zalozenia.wymiar_y)] liczba_drog = int(zalozenia.wymiar_x*zalozenia.wymiar_y*zalozenia.udzial_drog) punkt = [int(zalozenia.wymiar_x/2),int(zalozenia.wymiar_y/2),"R",0] lista_punktow= [] print "Tworzenie drog" #populowanie mapy drogami for i in range(0,liczba_drog): print i, "/", liczba_drog punkt_jest_poprawny = True kontrola = 0 while punkt_jest_poprawny: kontrola = kontrola + 1 nowy_punkt = f_m.nowy_punkt(punkt) if f_m.sprawdz_punkt(nowy_punkt,self,"Droga")[1]<2 and f_m.sprawdz_punkt(nowy_punkt,self,"Droga")[2]==True: punkt_jest_poprawny = False if kontrola > 30: punkt = random.choice(lista_punktow) kontrola = 0 lista_punktow.append(punkt) punkt = nowy_punkt self.mapa[punkt[0]][punkt[1]].typ = "Droga" print "Czekaj..." #stworzenie lokalizacji w komorkach sasiadujacych z drogami for x in range(zalozenia.wymiar_x): for y in range(zalozenia.wymiar_y): if self.mapa[x][y].typ == "Pusty": if f_m.sprawdz_punkt([x,y],self,"Droga")[0] >0: self.mapa[x][y] = lokalizacja(x,y, "random") self.mapa[x][y].droga = [tuple(f_m.wypisz_sasiadujace([x,y], self, "Droga")[random.randrange(len(f_m.wypisz_sasiadujace([x,y], self, "Droga")))])] print "Czekaj..." #dla kazdej drogi wypisujemy sasiadujace nodes for x in range(zalozenia.wymiar_x): for y in range(zalozenia.wymiar_y): if self.mapa[x][y].typ=="Droga": self.mapa[x][y].droga = f_m.wypisz_sasiadujace([x,y], self, "Droga",konwertuj=True) print "Czekaj..." #tworzenie grafu z drog for x in range(zalozenia.wymiar_x): for y in range(zalozenia.wymiar_y): if self.mapa[x][y].droga: self.nodes[x,y] = self.mapa[x][y].droga print "Czekaj..." #populowanie swiata self.ludnosc = [konsument(self) for x in range (zalozenia.populacja)] print "Prawie gotowe" for czlowiek in self.ludnosc: czlowiek.znajomi = [random.randrange(zalozenia.populacja) for x in range(3)] "Wypisuje sklepy"
def odwiedzony_sklep(self, swiat): sklepy=[] if self.wiek > 17 and random.random()<zalozenia.szansa_na_zakupy: self.okazja = random.randrange(2) if self.okazja==0: start=(self.pracax,self.pracay) koniec=swiat.nodes[(self.domx,self.domy)][0] if self.okazja==1: start=(self.domx,self.domy) znajomy = swiat.ludnosc[random.choice(self.znajomi)] koniec=swiat.nodes[(znajomy.domx,znajomy.domy)][0] trasa = f_m.szukaj_drogi(swiat.nodes,start,koniec,nowy=True) for punkt in trasa: sklepy = sklepy + f_m.wypisz_sasiadujace(punkt,swiat,"Sklep") if sklepy : sklepy = random.choice(sklepy) return sklepy
def wypisz_mozliwe_sklep(self, swiat): sklepy=[] if self.wiek > 17 and random.random()<zalozenia.szansa_na_zakupy: a = [] start=(self.pracax,self.pracay) koniec=swiat.nodes[(self.domx,self.domy)][0] a.append([start,koniec]) for i in range(3): start=(self.domx,self.domy) znajomy = swiat.ludnosc[self.znajomi[i]] koniec=swiat.nodes[(znajomy.domx,znajomy.domy)][0] a.append([start,koniec]) trasa = [] for element in a: trasa = trasa + f_m.szukaj_drogi(swiat.nodes,element[0],element[1],nowy=True) for punkt in trasa: sklepy = sklepy + f_m.wypisz_sasiadujace(punkt,swiat,"Sklep") return sklepy