diff --git a/__pycache__/ekran.cpython-311.pyc b/__pycache__/ekran.cpython-311.pyc new file mode 100644 index 0000000..bcff851 Binary files /dev/null and b/__pycache__/ekran.cpython-311.pyc differ diff --git a/__pycache__/etykieta.cpython-311.pyc b/__pycache__/etykieta.cpython-311.pyc index ddad889..3b5ffaa 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 new file mode 100644 index 0000000..2c13014 Binary files /dev/null and b/__pycache__/grid.cpython-311.pyc differ diff --git a/__pycache__/packageList.cpython-311.pyc b/__pycache__/packageList.cpython-311.pyc new file mode 100644 index 0000000..6e569da Binary files /dev/null and b/__pycache__/packageList.cpython-311.pyc differ diff --git a/__pycache__/paczka.cpython-311.pyc b/__pycache__/paczka.cpython-311.pyc index 43bec40..e68be21 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 a1c7371..888de42 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 0edd47b..76c871d 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 76a28e6..f87bcd4 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 074951f..e044093 100644 --- a/ekran.py +++ b/ekran.py @@ -10,6 +10,7 @@ EKRAN_SZEROKOSC = 980 EKRAN_WYSOKOSC = 980 screen = pygame.display.set_mode((EKRAN_SZEROKOSC, EKRAN_WYSOKOSC)) miejsce = pygame.image.load('images/miejsce_paczek.png') +miejsce = pygame.transform.scale(miejsce, (140, 140)) pygame.display.set_caption("Inteligentny wozek") icon = pygame.image.load('images/icon.png') pygame.display.set_icon(icon) @@ -49,7 +50,8 @@ def narysuj_siatke(): def odswiez_ekran(wozek): screen.fill((51, 51, 51)) # removes object trail - screen.blit(miejsce, (430, 400)) + #screen.blit(miejsce, (430, 400)) + screen.blit(miejsce,(420, 350)) narysuj_siatke() narysuj_paczki(wozek) narysuj_regaly() diff --git a/grid.py b/grid.py new file mode 100644 index 0000000..27bc065 --- /dev/null +++ b/grid.py @@ -0,0 +1,25 @@ +from enum import Enum + +from typing import Tuple, Dict + +class GridCellType(Enum): + FREE = 0 + RACK = 1 + PLACE = 2 + # dodać oznaczenie na miejsce dla paczek + +class SearchGrid: + grid: Dict[Tuple[int, int], GridCellType] = {} + + def __init__(self) -> None: + self._init_grid() + + def _init_grid(self) -> None: + for i in range (0,14): + for j in range(0,14): + self.grid[(i, j)] = GridCellType.FREE + for r, c in [(2,2), (2,3), (3,2), (3,3), (10,2), (10,3), (11,2), (11,3), + (2,8), (2,9), (3,8), (3,9), (10,8), (10,9), (11,8), (11,9),]: + self.grid[(r,c)] = GridCellType.RACK + for m, n in [(6,5), (6,6), (7,5), (7,6)]: + self.grid[(m,n)] = GridCellType.PLACE \ No newline at end of file diff --git a/main.py b/main.py index 7dd28e5..b4ae383 100644 --- a/main.py +++ b/main.py @@ -3,7 +3,7 @@ import pygame from wozek import Wozek import wyszukiwanie import ekran - +from grid import SearchGrid pygame.init() @@ -19,12 +19,13 @@ def main(): 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, 0) - wezel = wyszukiwanie.wyszukiwanie_bfs(wozek.obecnyStan, docelowy_stan) + wezel = wyszukiwanie.wyszukiwanie_bfs(wozek.obecnyStan, docelowy_stan, grid_points) sciezka = wyszukiwanie.znajdz_sciezke(wezel) wozek.przemiesc_wozek_po_sciezce(sciezka) diff --git a/wyszukiwanie.py b/wyszukiwanie.py index 367adb1..dd83e14 100644 --- a/wyszukiwanie.py +++ b/wyszukiwanie.py @@ -1,13 +1,4 @@ -class SearchSpace: - def __init__(self): - self.grid = [['1'] * 10 for _ in range(10)] # create a 10x10 grid of cells - for r, c in [(2, 2), (2, 3), (3, 2), (3, 3), (8, 2), (8, 3), (9, 2), (9, 3), - (2, 8), (2, 9), (3, 8), (3, 9), (8, 8), (8, 9), (9, 8), (9, 9)]: - self.grid[r][c] = 'X' # set the cells with a shelf to not passable - - def is_passable(self, x, y): - return 0 <= x < 10 and 0 <= y < 10 and self.grid[y][x] != 'X' - +from grid import GridCellType class Stan: def __init__(self, x, y, kierunek): @@ -21,7 +12,7 @@ class Wezel: self.stan = stan self.rodzic = rodzic -def nastepnik(wezel, licznik): +def nastepnik(wezel, licznik, search_grid): # gora -> prawo -> dol -> lewo | obrot w prawo # gora -> lewo -> dol -> prawo | obrot w lewo # 0 gora 1 prawo 2 dol 3 lewo @@ -44,11 +35,14 @@ def nastepnik(wezel, licznik): # sprawdzenie czy nie wyjdzie poza plansze if 0 <= x <= 910 and 0 <= y <= 910: - wezly.append(ruch_w_przod) + x1 = x / 70 + y1 = y / 70 + if search_grid.grid[(x1,y1)] is GridCellType.FREE: + wezly.append(ruch_w_przod) return wezly -def wyszukiwanie_bfs(stan_poczatkowy, stan_docelowy): +def wyszukiwanie_bfs(stan_poczatkowy, stan_docelowy, search_grid): pierwszy_wezel = Wezel(stan_poczatkowy, 0) fringe = [pierwszy_wezel] odwiedzone = [pierwszy_wezel] @@ -61,7 +55,7 @@ def wyszukiwanie_bfs(stan_poczatkowy, stan_docelowy): mapa[licznik] = wezel if stan_docelowy.x == wezel.stan.x and stan_docelowy.y == wezel.stan.y: return wezel - lista1 = nastepnik(wezel, licznik) + lista1 = nastepnik(wezel, licznik, search_grid) for obecny_wezel in lista1: flag_juz_odwiedzony = 0 for odwiedzony_wezel in odwiedzone: