コード例 #1
0
    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"
コード例 #2
0
 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
コード例 #3
0
 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