import sys import joblib import pygame from paczka import Paczka from wozek import Wozek import wyszukiwanie import ekran from grid import GridCellType, SearchGrid 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.dodaj_paczki_na_rampe(p1, p2) grid_points = SearchGrid() # Odczyt drzewa z pliku drzewo = joblib.load('DecisionTree/wyuczone_drzewo.pkl') 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.KEYDOWN: if event.key == pygame.K_SPACE: ## sprawdzenie czy lista z paczkami nie jest pusta if ekran.lista_paczek: ## 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) predictions = drzewo.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) 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: 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_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 if event.key == pygame.K_UP: wozek.y_change = -1 if event.key == pygame.K_RIGHT: wozek.x_change = 1 if event.key == pygame.K_LEFT: wozek.x_change = -1 if event.type == pygame.KEYUP: if event.key == pygame.K_DOWN or event.key == pygame.K_UP: wozek.y_change = 0 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() wozek.obecnyStan.x += wozek.x_change wozek.obecnyStan.y += wozek.y_change if wozek.obecnyStan.x <= 0: wozek.obecnyStan.x = 0 elif wozek.obecnyStan.x >= ekran.EKRAN_SZEROKOSC-70: wozek.obecnyStan.x = ekran.EKRAN_SZEROKOSC-70 if wozek.obecnyStan.y <= 0: wozek.obecnyStan.y = 0 elif wozek.obecnyStan.y >= ekran.EKRAN_WYSOKOSC-70: wozek.obecnyStan.y = ekran.EKRAN_WYSOKOSC-70 ekran.odswiez_ekran(wozek) if __name__ == "__main__": main()