Merge pull request 'grid.py, wozek wymija regaly i miejsce' (#11) from bfs_rack into master
Reviewed-on: #11
This commit is contained in:
commit
deb2be3745
BIN
__pycache__/ekran.cpython-311.pyc
Normal file
BIN
__pycache__/ekran.cpython-311.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
__pycache__/grid.cpython-311.pyc
Normal file
BIN
__pycache__/grid.cpython-311.pyc
Normal file
Binary file not shown.
BIN
__pycache__/packageList.cpython-311.pyc
Normal file
BIN
__pycache__/packageList.cpython-311.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
4
ekran.py
4
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()
|
||||
|
25
grid.py
Normal file
25
grid.py
Normal file
@ -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
|
5
main.py
5
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)
|
||||
|
||||
|
@ -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:
|
||||
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:
|
||||
|
Loading…
Reference in New Issue
Block a user