grid.py, wozek wymija regaly i miejsce #11
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
|
EKRAN_WYSOKOSC = 980
|
||||||
screen = pygame.display.set_mode((EKRAN_SZEROKOSC, EKRAN_WYSOKOSC))
|
screen = pygame.display.set_mode((EKRAN_SZEROKOSC, EKRAN_WYSOKOSC))
|
||||||
miejsce = pygame.image.load('images/miejsce_paczek.png')
|
miejsce = pygame.image.load('images/miejsce_paczek.png')
|
||||||
|
miejsce = pygame.transform.scale(miejsce, (140, 140))
|
||||||
pygame.display.set_caption("Inteligentny wozek")
|
pygame.display.set_caption("Inteligentny wozek")
|
||||||
icon = pygame.image.load('images/icon.png')
|
icon = pygame.image.load('images/icon.png')
|
||||||
pygame.display.set_icon(icon)
|
pygame.display.set_icon(icon)
|
||||||
@ -49,7 +50,8 @@ def narysuj_siatke():
|
|||||||
|
|
||||||
def odswiez_ekran(wozek):
|
def odswiez_ekran(wozek):
|
||||||
screen.fill((51, 51, 51)) # removes object trail
|
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_siatke()
|
||||||
narysuj_paczki(wozek)
|
narysuj_paczki(wozek)
|
||||||
narysuj_regaly()
|
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
|
from wozek import Wozek
|
||||||
import wyszukiwanie
|
import wyszukiwanie
|
||||||
import ekran
|
import ekran
|
||||||
|
from grid import SearchGrid
|
||||||
pygame.init()
|
pygame.init()
|
||||||
|
|
||||||
|
|
||||||
@ -19,12 +19,13 @@ def main():
|
|||||||
if event.type == pygame.MOUSEBUTTONDOWN:
|
if event.type == pygame.MOUSEBUTTONDOWN:
|
||||||
# lewy przycisk myszy
|
# lewy przycisk myszy
|
||||||
if event.button == 1:
|
if event.button == 1:
|
||||||
|
grid_points = SearchGrid()
|
||||||
x = pygame.mouse.get_pos()[0]
|
x = pygame.mouse.get_pos()[0]
|
||||||
y = pygame.mouse.get_pos()[1]
|
y = pygame.mouse.get_pos()[1]
|
||||||
wiersz = ekran.sprawdz_ktory_wiersz(x)
|
wiersz = ekran.sprawdz_ktory_wiersz(x)
|
||||||
kolumna = ekran.sprawdz_ktora_kolumna(y)
|
kolumna = ekran.sprawdz_ktora_kolumna(y)
|
||||||
docelowy_stan = wyszukiwanie.Stan(wiersz * 70, kolumna * 70, 0)
|
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)
|
sciezka = wyszukiwanie.znajdz_sciezke(wezel)
|
||||||
wozek.przemiesc_wozek_po_sciezce(sciezka)
|
wozek.przemiesc_wozek_po_sciezce(sciezka)
|
||||||
|
|
||||||
|
@ -1,13 +1,4 @@
|
|||||||
class SearchSpace:
|
from grid import GridCellType
|
||||||
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'
|
|
||||||
|
|
||||||
|
|
||||||
class Stan:
|
class Stan:
|
||||||
def __init__(self, x, y, kierunek):
|
def __init__(self, x, y, kierunek):
|
||||||
@ -21,7 +12,7 @@ class Wezel:
|
|||||||
self.stan = stan
|
self.stan = stan
|
||||||
self.rodzic = rodzic
|
self.rodzic = rodzic
|
||||||
|
|
||||||
def nastepnik(wezel, licznik):
|
def nastepnik(wezel, licznik, search_grid):
|
||||||
# gora -> prawo -> dol -> lewo | obrot w prawo
|
# gora -> prawo -> dol -> lewo | obrot w prawo
|
||||||
# gora -> lewo -> dol -> prawo | obrot w lewo
|
# gora -> lewo -> dol -> prawo | obrot w lewo
|
||||||
# 0 gora 1 prawo 2 dol 3 lewo
|
# 0 gora 1 prawo 2 dol 3 lewo
|
||||||
@ -44,11 +35,14 @@ def nastepnik(wezel, licznik):
|
|||||||
|
|
||||||
# sprawdzenie czy nie wyjdzie poza plansze
|
# sprawdzenie czy nie wyjdzie poza plansze
|
||||||
if 0 <= x <= 910 and 0 <= y <= 910:
|
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
|
return wezly
|
||||||
|
|
||||||
def wyszukiwanie_bfs(stan_poczatkowy, stan_docelowy):
|
def wyszukiwanie_bfs(stan_poczatkowy, stan_docelowy, search_grid):
|
||||||
pierwszy_wezel = Wezel(stan_poczatkowy, 0)
|
pierwszy_wezel = Wezel(stan_poczatkowy, 0)
|
||||||
fringe = [pierwszy_wezel]
|
fringe = [pierwszy_wezel]
|
||||||
odwiedzone = [pierwszy_wezel]
|
odwiedzone = [pierwszy_wezel]
|
||||||
@ -61,7 +55,7 @@ def wyszukiwanie_bfs(stan_poczatkowy, stan_docelowy):
|
|||||||
mapa[licznik] = wezel
|
mapa[licznik] = wezel
|
||||||
if stan_docelowy.x == wezel.stan.x and stan_docelowy.y == wezel.stan.y:
|
if stan_docelowy.x == wezel.stan.x and stan_docelowy.y == wezel.stan.y:
|
||||||
return wezel
|
return wezel
|
||||||
lista1 = nastepnik(wezel, licznik)
|
lista1 = nastepnik(wezel, licznik, search_grid)
|
||||||
for obecny_wezel in lista1:
|
for obecny_wezel in lista1:
|
||||||
flag_juz_odwiedzony = 0
|
flag_juz_odwiedzony = 0
|
||||||
for odwiedzony_wezel in odwiedzone:
|
for odwiedzony_wezel in odwiedzone:
|
||||||
|
Loading…
Reference in New Issue
Block a user