Inteligentny_Wozek/main.py
2023-05-30 21:36:48 +02:00

138 lines
5.8 KiB
Python

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()