diff --git a/DecisionTree/drzewo_decyzyjne.py b/DecisionTree/drzewo_decyzyjne.py index 6d4842d..add9cfe 100644 --- a/DecisionTree/drzewo_decyzyjne.py +++ b/DecisionTree/drzewo_decyzyjne.py @@ -3,6 +3,36 @@ import pandas as pd from sklearn.tree import DecisionTreeClassifier from sklearn.tree import export_graphviz +# def make_tree(): +# plikZPrzecinkami = open("training_data.txt", 'w') + +# with open('DecisionTree/200permutations_table.txt', 'r') as plik: +# for linia in plik: +# liczby = linia.strip() +# wiersz = "" +# licznik = 0 +# for liczba in liczby: +# wiersz += liczba +# wiersz += ";" +# wiersz = wiersz[:-1] +# wiersz += '\n' +# plikZPrzecinkami.write(wiersz) + +# plikZPrzecinkami.close() + +# x = pd.read_csv('DecisionTree/training_data.txt', delimiter=';', +# names=['wielkosc', 'waga,', 'priorytet', 'ksztalt', 'kruchosc', 'dolna', 'gorna', 'g > d']) +# y = pd.read_csv('DecisionTree/decisions.txt', names=['polka']) +# # X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=1) # 70% treningowe and 30% testowe + +# # Tworzenie instancji klasyfikatora ID3 +# clf = DecisionTreeClassifier(criterion='entropy') + +# # Trenowanie klasyfikatora +# clf.fit(x.values, y.values) +# # clf.fit(X_train, y_train) +# return clf + plikZPrzecinkami = open("training_data.txt", 'w') with open('200permutations_table.txt', 'r') as plik: diff --git a/__pycache__/ekran.cpython-311.pyc b/__pycache__/ekran.cpython-311.pyc index bcff851..70bdb4e 100644 Binary files a/__pycache__/ekran.cpython-311.pyc and b/__pycache__/ekran.cpython-311.pyc differ diff --git a/__pycache__/etykieta.cpython-311.pyc b/__pycache__/etykieta.cpython-311.pyc index 3b5ffaa..0f1f324 100644 Binary files a/__pycache__/etykieta.cpython-311.pyc and b/__pycache__/etykieta.cpython-311.pyc differ diff --git a/__pycache__/grid.cpython-311.pyc b/__pycache__/grid.cpython-311.pyc index 2c13014..4416952 100644 Binary files a/__pycache__/grid.cpython-311.pyc and b/__pycache__/grid.cpython-311.pyc differ diff --git a/__pycache__/main.cpython-311.pyc b/__pycache__/main.cpython-311.pyc index fc5784c..e376a93 100644 Binary files a/__pycache__/main.cpython-311.pyc and b/__pycache__/main.cpython-311.pyc differ diff --git a/__pycache__/packageList.cpython-311.pyc b/__pycache__/packageList.cpython-311.pyc index 6e569da..5e540f6 100644 Binary files a/__pycache__/packageList.cpython-311.pyc and b/__pycache__/packageList.cpython-311.pyc differ diff --git a/__pycache__/paczka.cpython-311.pyc b/__pycache__/paczka.cpython-311.pyc index e68be21..7807dfa 100644 Binary files a/__pycache__/paczka.cpython-311.pyc and b/__pycache__/paczka.cpython-311.pyc differ diff --git a/__pycache__/regal.cpython-311.pyc b/__pycache__/regal.cpython-311.pyc index 888de42..c7d75cf 100644 Binary files a/__pycache__/regal.cpython-311.pyc and b/__pycache__/regal.cpython-311.pyc differ diff --git a/__pycache__/wozek.cpython-311.pyc b/__pycache__/wozek.cpython-311.pyc index 76c871d..21f255c 100644 Binary files a/__pycache__/wozek.cpython-311.pyc and b/__pycache__/wozek.cpython-311.pyc differ diff --git a/__pycache__/wyszukiwanie.cpython-311.pyc b/__pycache__/wyszukiwanie.cpython-311.pyc index f87bcd4..d864d90 100644 Binary files a/__pycache__/wyszukiwanie.cpython-311.pyc and b/__pycache__/wyszukiwanie.cpython-311.pyc differ diff --git a/ekran.py b/ekran.py index 85668d3..a75ffa4 100644 --- a/ekran.py +++ b/ekran.py @@ -1,11 +1,10 @@ import pygame from plansza import x1, y1, x2, y2, x3, y3, x4, y4, a_pix, b_pix -import packageList -import regal -import wozek +from regal import Regal, obliczPixeleNaPodstawieKratek +# import wozek from packageList import * -from paczka import Paczka +# from paczka import Paczka EKRAN_SZEROKOSC = 770 EKRAN_WYSOKOSC = 770 @@ -16,29 +15,47 @@ pygame.display.set_caption("Inteligentny wozek") icon = pygame.image.load('images/icon.png') pygame.display.set_icon(icon) -lista_paczek = packageList.zainicjuj_liste_paczek(a_pix, b_pix) +# lista_paczek = packageList.zainicjuj_liste_paczek(a_pix, b_pix) +#lista_paczek = listOfPackages() +lista_paczek = [] +lista_paczek_na_regalach = [] + def narysuj_regaly(): - regal.Regal(1, 1, x1, y1) - regal.Regal(2, 1, x1, y1+1) - regal.Regal(3, 1, x1+1, y1) - regal.Regal(4, 1, x1+1, y1+1) + global lista_regalow + r1 = Regal('ogród', x1, y1) + r2 = Regal('ogród', x1, y1+1) + r3 = Regal('ogród', x1+1, y1) + r4 = Regal('ogród', x1+1, y1+1) - regal.Regal(5, 1, x2, y2) - regal.Regal(6, 1, x2, y2+1) - regal.Regal(7, 1, x2+1, y2) - regal.Regal(8, 1, x2+1, y2+1) + r5 = Regal('narzedzia', x2, y2) + r6 = Regal('narzedzia', x2, y2+1) + r7 = Regal('narzedzia', x2+1, y2) + r8 = Regal('narzedzia', x2+1, y2+1) - regal.Regal(9, 1, x3, y3) - regal.Regal(10, 1, x3, y3+1) - regal.Regal(11, 1, x3+1, y3) - regal.Regal(12, 1, x3+1, y3+1) + r9 = Regal('kuchnia', x3, y3) + r10 = Regal('kuchnia', x3, y3+1) + r11 = Regal('kuchnia', x3+1, y3) + r12 = Regal('kuchnia', x3+1, y3+1) - regal.Regal(13, 1, x4, y4) - regal.Regal(14, 1, x4, y4+1) - regal.Regal(15, 1, x4+1, y4) - regal.Regal(16, 1, x4+1, y4+1) + r13 = Regal('motoryzacja', x4, y4) + r14 = Regal('motoryzacja', x4, y4+1) + r15 = Regal('motoryzacja', x4+1, y4) + r16 = Regal('motoryzacja', x4+1, y4+1) + lista_regalow = [r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16] + +def zwroc_regaly_kategoria(kategoria): + lista_reg = [] + for reg in lista_regalow: + if reg.nazwaRegalu == kategoria: + lista_reg.append(reg) + return lista_reg + +# def zwroc_regaly_wspolrzedne(x_reg, y_reg): +# for regal in lista_regalow: +# if regal.wiersz == obliczPixeleNaPodstawieKratek(x_reg) and regal.kolumna == obliczPixeleNaPodstawieKratek(y_reg): +# return regal def narysuj_siatke(): blockSize = 70 # Set the size of the grid block @@ -54,6 +71,7 @@ def odswiez_ekran(wozek): screen.blit(miejsce,(a_pix, b_pix)) narysuj_siatke() narysuj_paczki(wozek) + narysuj_paczke_na_regale() narysuj_regaly() wozek.draw() pygame.display.flip() @@ -76,6 +94,13 @@ def sprawdz_ktora_kolumna(y): def narysuj_paczki(wozek): - if wozek.ln == 0: - for paczka in lista_paczek.list: - paczka.narysuj(paczka.x, paczka.y, screen) + #if wozek.ln == 0: + #for paczka in lista_paczek.list: + #if len(lista_paczek_na_regalach) == 0: + for paczka in lista_paczek: + paczka.narysuj(paczka.x, paczka.y, screen) + +def narysuj_paczke_na_regale(): + for paczka in lista_paczek_na_regalach: + if paczka.is_in_move is False: + paczka.narysuj(paczka.x, paczka.y, screen) \ No newline at end of file diff --git a/grid.py b/grid.py index 1227593..3909d4d 100644 --- a/grid.py +++ b/grid.py @@ -7,10 +7,17 @@ class GridCellType(Enum): FREE = 0 RACK = 1 PLACE = 2 - # dodać oznaczenie na miejsce dla paczek + +# class RackCellType(Enum): +# OGROD = 0 +# NARZEDZIA = 1 +# KUCHNIA = 2 +# MOTORYZACJA = 3 + class SearchGrid: grid: Dict[Tuple[int, int], GridCellType] = {} + # rack_grid : Dict[Tuple[int, int], GridCellType] = {} def __init__(self) -> None: self._init_grid() @@ -19,8 +26,10 @@ class SearchGrid: for i in range (0,14): for j in range(0,14): self.grid[(i, j)] = GridCellType.FREE - for r, c in [(x1, y1), (x1, y1+1), (x1+1, y1), (x1+1, y1+1), (x2, y2), (x2+1, y2), (x2, y2+1), (x2+1, y2+1), + for c, d in [(x1, y1), (x1, y1+1), (x1+1, y1), (x1+1, y1+1), (x2, y2), (x2+1, y2), (x2, y2+1), (x2+1, y2+1), (x3, y3), (x3+1, y3), (x3, y3+1), (x3+1, y3+1), (x4, y4), (x4+1, y4), (x4, y4+1), (x4+1, y4+1),]: - self.grid[(r,c)] = GridCellType.RACK - for m, n in [(a,b), (a+1,b), (a,b+1), (a+1,b+1)]: - self.grid[(m,n)] = GridCellType.PLACE + self.grid[(c,d)] = GridCellType.RACK + for e, f in [(a,b), (a+1,b), (a,b+1), (a+1,b+1)]: + self.grid[(e,f)] = GridCellType.PLACE + + diff --git a/main.py b/main.py index 89587e7..7c4ee17 100644 --- a/main.py +++ b/main.py @@ -1,35 +1,117 @@ import sys import pygame +from paczka import Paczka from wozek import Wozek import wyszukiwanie import ekran -from grid import SearchGrid +from grid import GridCellType, SearchGrid +from sklearn.tree import DecisionTreeClassifier +import pandas as pd + +from plansza import a_pix, b_pix pygame.init() def main(): wozek = Wozek() + p1 = Paczka('duzy', 12, 'narzedzia', False, True, False, any, any, any, any, any) + p2 = Paczka('maly', 1, 'ogród', False, True, False, any, any, any, any, any) + ekran.lista_paczek.append(p1) + ekran.lista_paczek.append(p2) + p1.update_position(a_pix, b_pix) + p2.update_position(a_pix, b_pix) + + grid_points = SearchGrid() + while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit(0) if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: sys.exit(0) - if event.type == pygame.MOUSEBUTTONDOWN: + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_SPACE: + ## wozek jedzie po paczke + wiersz = ekran.sprawdz_ktory_wiersz(a_pix) + kolumna = ekran.sprawdz_ktora_kolumna(b_pix) + docelowy_stan = wyszukiwanie.Stan(wiersz * 70, kolumna * 70, 1) + + #wezel = wyszukiwanie.wyszukiwanie_bfs(wozek.obecnyStan, docelowy_stan, grid_points) + wezel = wyszukiwanie.wyszukiwanie_a_star(wozek.obecnyStan, docelowy_stan, grid_points) + sciezka = wyszukiwanie.znajdz_sciezke(wezel) + wozek.przemiesc_wozek_po_sciezce(sciezka) + + if grid_points.grid[(wiersz, kolumna)] is GridCellType.PLACE: #picks up package + if wozek.ln == 0: + wozek.picks_up_package() + wozek.dynamic_wozek_picture() + + ## wozek jedzie odlozyc paczke na regal + przenoszona_paczka = wozek.storage[-1] + + array, reg = przenoszona_paczka.tablica_do_drzewa(przenoszona_paczka.kategoria) + + plikZPrzecinkami = open("DecisionTree/training_data.txt", 'w') + + with open('DecisionTree/200permutations_table.txt', 'r') as plik: + for linia in plik: + liczby = linia.strip() + wiersz = "" + licznik = 0 + for liczba in liczby: + wiersz += liczba + wiersz += ";" + wiersz = wiersz[:-1] + wiersz += '\n' + plikZPrzecinkami.write(wiersz) + + plikZPrzecinkami.close() + x = pd.read_csv('DecisionTree/training_data.txt', delimiter=';', + names=['wielkosc', 'waga,', 'priorytet', 'ksztalt', 'kruchosc', 'dolna', 'gorna', 'g > d']) + y = pd.read_csv('DecisionTree/decisions.txt', names=['polka']) + clf = DecisionTreeClassifier(criterion='entropy') + clf.fit(x.values, y.values) + + predictions = clf.predict([array]) + if predictions == 0: + print('odklada na dolna polke!') + else: + print('odklada na gorna polke!') + + docelowy_stan = wyszukiwanie.Stan(reg.numerWiersza * 70, reg.numerKolumny * 70, 1) # x1 i y1 bo to są regału kategorii ogród + wezel = wyszukiwanie.wyszukiwanie_a_star(wozek.obecnyStan, docelowy_stan, grid_points) + sciezka = wyszukiwanie.znajdz_sciezke(wezel) + wozek.przemiesc_wozek_po_sciezce(sciezka) + + if wozek.ln != 0: # drops package + wozek.drops_package(przenoszona_paczka, reg, predictions) + wozek.dynamic_wozek_picture() + + if event.type == pygame.MOUSEBUTTONDOWN: # lewy przycisk myszy if event.button == 1: - grid_points = SearchGrid() x = pygame.mouse.get_pos()[0] y = pygame.mouse.get_pos()[1] wiersz = ekran.sprawdz_ktory_wiersz(x) kolumna = ekran.sprawdz_ktora_kolumna(y) + docelowy_stan = wyszukiwanie.Stan(wiersz * 70, kolumna * 70, 1) - # wezel = wyszukiwanie.wyszukiwanie_bfs(wozek.obecnyStan, docelowy_stan, grid_points) + + #wezel = wyszukiwanie.wyszukiwanie_bfs(wozek.obecnyStan, docelowy_stan, grid_points) wezel = wyszukiwanie.wyszukiwanie_a_star(wozek.obecnyStan, docelowy_stan, grid_points) sciezka = wyszukiwanie.znajdz_sciezke(wezel) wozek.przemiesc_wozek_po_sciezce(sciezka) + # if grid_points.grid[(wiersz, kolumna)] is GridCellType.PLACE: #picks up package + # if wozek.ln == 0: + # wozek.load_package() + # wozek.dynamic_wozek_picture + # else: + # if wozek.ln != 0: # drops package + # wozek.drop_package() + # wozek.dynamic_wozek_picture() + if event.type == pygame.KEYDOWN: if event.key == pygame.K_DOWN: wozek.y_change = 1 @@ -46,14 +128,14 @@ def main(): if event.key == pygame.K_RIGHT or event.key == pygame.K_LEFT: wozek.x_change = 0 - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_SPACE: - if wozek.ln == 0: - wozek.load_package() - wozek.dynamic_wozek_picture() - else: - wozek.drop_package() - wozek.dynamic_wozek_picture() + # if event.type == pygame.KEYDOWN: + # if event.key == pygame.K_SPACE: + # if wozek.ln == 0: + # wozek.load_package() + # wozek.dynamic_wozek_picture() + # else: + # wozek.drop_package() + # wozek.dynamic_wozek_picture() wozek.obecnyStan.x += wozek.x_change wozek.obecnyStan.y += wozek.y_change diff --git a/packageList.py b/packageList.py index 22cbc53..1a08d98 100644 --- a/packageList.py +++ b/packageList.py @@ -1,6 +1,6 @@ import pygame -from paczka import Paczka +# from paczka import Paczka class listOfPackages: list = [] @@ -15,9 +15,12 @@ class listOfPackages: self.package_group.remove(last_package) -def zainicjuj_liste_paczek(init_x, init_y): - packageList = listOfPackages() - demo_paczka = Paczka('duzy', 10, any, False, True, False, any, any, any, any, any) - demo_paczka.update_position(init_x, init_y) - packageList.add(demo_paczka) - return packageList +# def zainicjuj_liste_paczek(init_x, init_y): +# packageList = listOfPackages() +# demo_paczka = Paczka('duzy', 10, any, False, True, False, any, any, any, any, any) +# demo_paczka.update_position(init_x, init_y) +# packageList.add(demo_paczka) +# return packageList + + + diff --git a/paczka.py b/paczka.py index 3d2fd32..71ea4a6 100644 --- a/paczka.py +++ b/paczka.py @@ -1,9 +1,9 @@ from etykieta import Etykieta import pygame +import ekran class Paczka(pygame.sprite.Sprite): - def __init__(self, rozmiar, waga, kategoria, priorytet, ksztalt, kruchosc, nadawca, adres, imie, nazwisko, telefon): super().__init__() self.rozmiar = rozmiar @@ -34,6 +34,7 @@ class Paczka(pygame.sprite.Sprite): self.x = 430 self.y = 400 self.label = Etykieta(nadawca, adres, imie, nazwisko, telefon, priorytet) + self.is_in_move = False # zmienia rozmiar obrazka w zaleznosci od rozmiaru def __dobierz_rozmiar_obrazka(self): @@ -68,4 +69,56 @@ class Paczka(pygame.sprite.Sprite): def update_position(self, x, y): self.x = x self.y = y - self.rect.topleft = (x, y) \ No newline at end of file + self.rect.topleft = (x, y) + + def tablica_do_drzewa(self, kategoria): + tablica = [] + # rozmiar + if self.rozmiar == 'maly': + tablica.append(0) + elif self.rozmiar == 'sredni': + tablica.append(1) + else: tablica.append(2) + + # waga + if self.waga <= 2: + tablica.append(0) + elif self.waga <= 10: + tablica.append(1) + else: tablica.append(2) + + # piorytet + if self.priorytet is True: + tablica.append(0) + else: tablica.append(1) + + # kształt + if self.ksztalt is True: + tablica.append(0) + else: tablica.append(1) + + # kruchość + if self.kruchosc is True: + tablica.append(0) + else: tablica.append(1) + + reg = ekran.zwroc_regaly_kategoria(kategoria) + # czy dolna wolna + if reg[0].is_dolna_free() is True: + tablica.append(0) + else: + tablica.append(1) + + #czy górna wolna + if reg[0].is_dolna_free() is True: + tablica.append(0) + else: + tablica.append(1) + + # czy na górnej więcej miejsca + if reg[0].is_dolna_free() is True: + tablica.append(0) + else: + tablica.append(1) + + return tablica, reg[0] \ No newline at end of file diff --git a/plansza.py b/plansza.py index 08e9a0c..d2f2546 100644 --- a/plansza.py +++ b/plansza.py @@ -2,7 +2,7 @@ import random def obliczPixeleNaPodstawieKratek(wymiar): #Przeliczanie współrzędnych podanych w kratkach na pixele i = 1 - pixele = 73 + pixele = 70 while (i < wymiar): pixele = pixele + 70 i = i + 1 diff --git a/regal.py b/regal.py index 71234f8..c2c0649 100644 --- a/regal.py +++ b/regal.py @@ -1,5 +1,6 @@ import pygame +MAX_STORAGE = 3 def obliczPixeleNaPodstawieKratek(wymiar): #Przeliczanie współrzędnych podanych w kratkach na pixele i = 1 @@ -13,19 +14,20 @@ def obliczPixeleNaPodstawieKratek(wymiar): #Przeliczanie współrzędnych podany def obliczPixeleDlugosciRegalu(self): #Przeliczanie dlugości regału podanego w kratkach na pixele i = 1 dlugoscRegalu = 40 - while (i < self.dlugoscRegaluWKratkach) and (i <= 11 - self.numerKolumny): #Sprawdzenie, żeby regał nie wychodził poza plansze, jeżeli tak to jest ucinany tak, żeby nie wychodził + while (i < 1) and (i <= 11 - self.numerKolumny): #Sprawdzenie, żeby regał nie wychodził poza plansze, jeżeli tak to jest ucinany tak, żeby nie wychodził dlugoscRegalu = dlugoscRegalu + 80 i = i + 1 return dlugoscRegalu class Regal(pygame.sprite.Sprite): - def __init__(self, numerRegalu, dlugoscRegaluWKratkach, numerWiersza, numerKolumny): + + def __init__(self, nazwaRegalu, numerWiersza, numerKolumny): super().__init__() from ekran import screen - self.numerRegalu = numerRegalu + self.nazwaRegalu = nazwaRegalu self.wysokoscRegalu = 64 - self.dlugoscRegaluWKratkach = dlugoscRegaluWKratkach self.numerKolumny = numerKolumny + self.numerWiersza = numerWiersza self.wiersz = obliczPixeleNaPodstawieKratek(numerWiersza) self.kolumna = obliczPixeleNaPodstawieKratek(numerKolumny) @@ -36,28 +38,58 @@ class Regal(pygame.sprite.Sprite): "dolna": package_storage, "gorna": package_storage } + + + storage_dolna = [] + storage_gorna = [] - if(self.numerRegalu >= 0 and self.numerRegalu <= 4): + self.dolna = storage_dolna + self.gorna = storage_gorna + + if(self.nazwaRegalu == 'ogród'): reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu]) reg = pygame.image.load("images/regal.png") self.rect = reg.get_rect() screen.blit(reg, (self.wiersz, self.kolumna)) - if(self.numerRegalu >= 5 and self.numerRegalu <= 8): + if(self.nazwaRegalu == 'narzedzia'): reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu]) reg = pygame.image.load("images/regal1.png") self.rect = reg.get_rect() screen.blit(reg, (self.wiersz, self.kolumna)) - if(self.numerRegalu >= 9 and self.numerRegalu <= 12): + if(self.nazwaRegalu == 'kuchnia'): reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu]) reg = pygame.image.load("images/regal2.png") self.rect = reg.get_rect() screen.blit(reg, (self.wiersz, self.kolumna)) - if(self.numerRegalu >= 13 and self.numerRegalu <= 16): + if(self.nazwaRegalu == 'motoryzacja'): reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu]) reg = pygame.image.load("images/regal3.png") self.rect = reg.get_rect() screen.blit(reg, (self.wiersz, self.kolumna)) + + def is_dolna_free(self): + if len(self.dolna) <= MAX_STORAGE: + return True + return False + + def is_gorna_free(self): + if len(self.gorna) <= MAX_STORAGE: + return True + return False + + def czy_na_gornej_wiecej_miejsca(self): + if len(self.gorna) > len(self.dolna): + return True + return False + + def put_package_on_the_regal(self, package, where): + if(where == 0): + self.dolna.append(package) + else: + self.gorna.append(package) + + diff --git a/training_data.txt b/training_data.txt new file mode 100644 index 0000000..06a4ff8 --- /dev/null +++ b/training_data.txt @@ -0,0 +1,200 @@ +1;0;0;1;0;0;1;0 +0;0;1;0;1;1;0;1 +2;0;1;1;0;0;0;1 +2;2;1;0;1;1;1;0 +1;0;0;1;0;0;0;1 +2;1;0;0;1;1;0;0 +1;0;0;0;1;0;0;1 +1;1;0;1;0;0;0;1 +0;0;1;0;1;1;1;0 +0;2;0;0;0;1;1;0 +0;0;1;0;0;1;0;1 +0;0;0;0;0;1;1;0 +0;2;1;0;1;1;0;0 +2;0;0;0;1;0;0;0 +2;1;0;1;0;1;1;1 +0;1;1;0;1;1;1;0 +0;2;0;1;1;1;0;1 +1;2;1;0;1;1;0;0 +0;0;1;1;1;1;0;1 +0;0;0;1;1;0;0;1 +1;1;1;1;1;0;1;0 +1;2;1;0;0;1;1;1 +2;2;1;1;0;1;1;1 +1;2;1;0;1;1;0;1 +0;1;0;0;0;1;0;1 +1;1;0;0;0;1;0;1 +0;1;0;0;0;1;1;1 +2;1;0;1;0;1;0;1 +0;1;1;0;1;1;0;0 +2;1;0;1;0;1;1;0 +1;2;1;0;0;0;1;1 +1;2;0;1;0;1;1;1 +0;2;0;1;0;1;0;1 +2;1;1;0;1;1;1;1 +0;2;0;1;0;0;0;1 +0;1;1;0;0;1;1;0 +2;2;1;0;0;0;1;1 +1;0;0;0;0;0;1;0 +0;0;1;1;0;1;0;0 +2;2;0;1;1;1;0;0 +1;2;1;1;0;0;0;1 +1;2;0;1;0;0;1;1 +0;1;0;1;1;1;1;0 +0;1;0;0;1;1;0;0 +0;1;0;1;1;0;0;0 +1;1;1;0;1;1;0;1 +1;1;1;1;0;1;1;0 +2;1;1;1;0;1;1;0 +2;2;0;0;1;1;0;0 +1;0;0;1;0;1;0;1 +2;1;1;1;1;0;1;0 +0;0;0;0;1;1;0;0 +2;1;1;1;0;1;0;1 +1;2;1;1;1;0;1;1 +0;2;0;0;1;1;1;1 +2;1;0;1;1;0;0;0 +0;2;1;1;1;0;1;1 +1;2;0;1;1;1;1;0 +0;2;0;0;0;1;0;1 +1;2;0;0;0;1;0;0 +2;0;0;1;0;1;1;1 +2;1;1;0;0;0;1;1 +0;1;1;1;0;1;0;0 +2;1;0;1;1;1;0;0 +0;2;0;1;0;0;0;0 +2;1;0;0;1;0;0;1 +1;1;0;0;1;1;0;0 +2;0;0;1;0;0;1;1 +2;0;1;1;1;0;1;1 +2;2;0;1;1;0;0;0 +0;1;0;1;1;1;0;1 +1;0;1;1;1;0;0;0 +2;0;0;1;1;1;1;1 +1;0;0;0;0;0;0;1 +2;1;1;0;0;0;0;1 +0;0;0;0;1;1;0;1 +0;1;0;1;0;0;0;1 +2;2;0;1;0;0;0;0 +0;2;1;1;1;1;0;1 +2;2;1;0;0;1;1;0 +1;2;0;0;1;1;1;0 +0;1;1;1;0;0;0;1 +1;1;1;0;1;0;0;0 +2;0;1;1;0;0;1;1 +2;0;1;0;1;0;1;0 +2;2;0;0;0;1;1;0 +1;1;0;1;1;0;1;1 +2;0;0;0;0;0;1;1 +1;2;0;0;1;1;0;1 +1;2;1;1;0;0;0;0 +0;0;1;1;1;1;1;0 +0;2;1;1;0;1;0;0 +2;1;1;0;0;0;1;0 +1;0;0;1;1;0;0;0 +2;2;0;1;1;1;0;1 +2;0;0;1;1;1;0;0 +0;2;1;0;0;0;0;0 +1;2;1;1;1;0;0;1 +0;0;0;0;0;1;1;1 +2;2;1;1;1;0;1;1 +0;1;0;0;1;0;1;0 +2;1;1;0;1;1;0;0 +0;1;1;1;1;1;1;1 +1;2;1;1;1;0;1;0 +2;0;1;1;1;1;1;0 +1;0;1;1;0;0;1;0 +0;2;0;0;1;0;0;1 +2;2;0;0;0;1;0;0 +0;2;0;0;1;1;0;0 +0;1;0;0;0;0;1;1 +1;0;0;0;0;1;0;1 +2;1;0;0;0;0;1;0 +0;1;1;0;0;1;0;0 +1;0;1;0;1;0;1;0 +2;0;0;0;1;1;0;0 +0;0;0;0;0;0;0;0 +0;0;1;0;1;0;0;0 +1;0;1;0;0;0;0;0 +0;2;1;0;0;0;0;1 +2;0;0;1;1;1;0;1 +0;2;0;1;1;1;1;0 +0;2;1;1;1;1;1;1 +1;2;0;1;0;1;1;0 +0;2;1;0;0;1;0;0 +2;0;1;1;1;1;1;1 +0;0;0;1;1;1;1;1 +1;2;0;1;1;0;0;0 +1;2;0;1;1;0;0;1 +2;2;0;1;0;0;1;0 +2;2;0;0;0;0;1;0 +0;0;0;1;0;0;1;0 +1;0;1;0;1;0;0;0 +0;2;0;0;0;0;0;0 +2;0;1;0;1;1;1;1 +0;2;1;0;0;0;1;1 +0;2;1;0;1;1;1;1 +2;2;1;0;1;0;1;0 +1;1;1;1;1;1;1;1 +0;1;1;0;1;0;0;0 +2;1;1;0;0;1;1;1 +0;0;1;0;1;1;1;1 +0;1;1;0;1;0;1;0 +2;0;0;1;0;0;1;0 +1;1;0;1;1;1;1;0 +2;0;0;1;1;1;1;0 +0;0;1;0;0;1;1;0 +1;0;1;0;1;1;1;1 +0;1;0;0;0;0;0;1 +0;2;0;1;1;0;0;1 +2;1;1;0;1;0;1;1 +1;1;1;1;1;0;1;1 +1;0;1;1;0;0;1;1 +1;0;0;1;1;0;0;1 +2;1;1;1;0;0;1;0 +1;0;0;0;0;0;0;0 +0;0;0;1;1;1;1;0 +1;0;1;1;0;0;0;1 +2;1;1;1;1;0;1;1 +1;2;0;1;0;1;0;1 +1;1;0;0;0;1;1;0 +2;2;1;0;1;1;0;1 +0;0;0;0;0;0;1;0 +0;2;0;0;0;1;1;1 +2;1;0;0;0;0;1;1 +0;0;0;1;1;1;0;0 +1;0;1;0;0;1;1;0 +2;0;0;0;1;1;1;1 +1;2;1;0;0;0;0;1 +2;2;0;0;0;1;0;1 +0;1;1;0;0;0;1;0 +0;2;0;0;1;0;1;0 +1;1;0;0;1;1;1;1 +0;0;0;1;0;0;1;1 +0;1;1;0;0;1;1;1 +2;2;0;1;1;0;1;0 +1;0;1;0;1;0;1;1 +1;1;0;1;0;0;1;1 +2;0;1;1;0;0;1;0 +2;0;1;0;0;0;1;0 +1;1;1;1;0;1;1;1 +2;1;1;0;1;0;0;0 +0;2;0;1;1;0;0;0 +1;2;1;1;0;1;0;0 +2;1;1;1;1;1;0;1 +0;2;0;1;0;1;1;1 +0;2;1;0;1;0;0;1 +0;1;1;0;0;0;1;1 +1;0;0;1;1;0;1;1 +2;2;1;1;0;0;0;0 +0;1;1;0;0;0;0;0 +2;0;1;1;0;1;0;0 +0;1;1;0;0;0;0;1 +0;0;1;1;1;0;1;0 +0;2;0;0;0;0;1;0 +2;0;0;1;0;1;1;0 +0;0;1;0;1;0;1;1 +2;2;0;0;1;0;1;1 +2;2;0;1;0;0;0;1 +2;2;0;1;0;1;0;1 +1;2;1;0;0;1;0;1 diff --git a/wozek.py b/wozek.py index a38cfac..6965b98 100644 --- a/wozek.py +++ b/wozek.py @@ -1,7 +1,9 @@ import ekran import pygame,math -from packageList import listOfPackages +# from packageList import listOfPackages +from ekran import lista_paczek +listOfPackages = lista_paczek class Wozek(pygame.sprite.Sprite): def __init__(self): @@ -61,11 +63,18 @@ class Wozek(pygame.sprite.Sprite): def load_package(self): - for package in listOfPackages.list: - dist = math.sqrt((self.obecnyStan.x - package.x)**2 + (self.obecnyStan.y - package.y)**2) - if dist <= 50: - self.add_element(package) - listOfPackages.list.pop() + #for package in listOfPackages.list: + # for package in listOfPackages: + # dist = math.sqrt((self.obecnyStan.x - package.x)**2 + (self.obecnyStan.y - package.y)**2) + # if dist <= 50: + # self.add_element(package) + # # listOfPackages.list.pop() + # listOfPackages.pop() + package = listOfPackages.pop() + dist = math.sqrt((self.obecnyStan.x - package.x)**2 + (self.obecnyStan.y - package.y)**2) + if dist <= 50: + self.add_element(package) + # listOfPackages.list.pop() def load_packages_collision(self): pass @@ -80,7 +89,8 @@ class Wozek(pygame.sprite.Sprite): if package is not None: package.x = self.obecnyStan.x package.y = self.obecnyStan.y - listOfPackages.list.append(package) + # listOfPackages.list.append(package) + listOfPackages.append(package) def __zainicjuj_stan_poczatkowy(self): from wyszukiwanie import Stan @@ -111,4 +121,18 @@ class Wozek(pygame.sprite.Sprite): # obrot w lewo else: self.image = pygame.transform.rotate(self.image, 90) + + def picks_up_package(self): + paczka_pop = ekran.lista_paczek.pop() + ekran.lista_paczek_na_regalach.append(paczka_pop) + paczka_pop.is_in_move = True + self.storage.append(paczka_pop) + self.ln = self.ln + 1 + + def drops_package(self, paczka, reg, predictions): + paczka.update_position(reg.numerWiersza*70, reg.numerKolumny*70) + paczka.is_in_move = False + self.storage.pop() + self.ln = self.ln - 1 + reg.put_package_on_the_regal(paczka, predictions) diff --git a/wyszukiwanie.py b/wyszukiwanie.py index 41c65f0..648a5bd 100644 --- a/wyszukiwanie.py +++ b/wyszukiwanie.py @@ -57,7 +57,7 @@ def znajdz_nastepcow(wezel, search_grid, ktory_algorytm): if ktory_algorytm == 1: x1 = x / 70 y1 = y / 70 - if search_grid.grid[(x1, y1)] is GridCellType.FREE: + if search_grid.grid[(x1, y1)] is GridCellType.FREE or search_grid.grid[(x1, y1)] is GridCellType.PLACE: wezly.append(ruch_w_przod) else: wezly.append(ruch_w_przod) @@ -131,7 +131,7 @@ def wyszukiwanie_a_star(poczatkowyStan, docelowyStan, search_grid): nastepca.g = g nastepca.h = h fringe[index] = nastepca - print(index) + # print(index) # heapq.heapify(fringe) return None @@ -147,6 +147,6 @@ def dobierz_wage_do_wezla(wezel, search_grid): elif search_grid.grid[(x1, y1)] is GridCellType.RACK: wezel.waga = 99999 elif search_grid.grid[(x1, y1)] is GridCellType.PLACE: - wezel.waga = 99999 + wezel.waga = 1 return None