Merge pull request 'added letters' (#25) from added_letters into master

Reviewed-on: s474139/Inteligentny_Wozek#25
This commit is contained in:
Zuzanna Wójcik 2023-06-02 21:16:59 +02:00
commit 9b1d9c1f13
6 changed files with 114 additions and 49 deletions

View File

@ -1,7 +1,7 @@
import pygame import pygame
import plansza import plansza
from regal import Regal from regal import Regal
from packageList import * from itemList import *
EKRAN_SZEROKOSC = 770 EKRAN_SZEROKOSC = 770
EKRAN_WYSOKOSC = 770 EKRAN_WYSOKOSC = 770
@ -14,8 +14,9 @@ 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)
lista_paczek = [] lista_itemow = []
lista_paczek_na_regalach = [] lista_paczek_na_regalach = []
lista_listow_w_skrzynce = []
def narysuj_regaly(): def narysuj_regaly():
global lista_regalow global lista_regalow
@ -62,7 +63,7 @@ def odswiez_ekran(wozek):
screen.blit(miejsce,(plansza.a_pix, plansza.b_pix)) screen.blit(miejsce,(plansza.a_pix, plansza.b_pix))
screen.blit(skrzynka,(plansza.c_pix, plansza.d_pix)) screen.blit(skrzynka,(plansza.c_pix, plansza.d_pix))
narysuj_siatke() narysuj_siatke()
narysuj_paczki(wozek) narysuj_items()
narysuj_paczke_na_regale() narysuj_paczke_na_regale()
narysuj_regaly() narysuj_regaly()
wozek.draw() wozek.draw()
@ -85,17 +86,26 @@ def sprawdz_ktora_kolumna(y):
nr_kolumny = nr_kolumny + 1 nr_kolumny = nr_kolumny + 1
def narysuj_paczki(wozek): def narysuj_items():
for paczka in lista_paczek: for item in lista_itemow:
paczka.narysuj(paczka.x, paczka.y, screen) item.narysuj(item.x, item.y, screen)
def narysuj_paczke_na_regale(): def narysuj_paczke_na_regale():
for paczka in lista_paczek_na_regalach: for paczka in lista_paczek_na_regalach:
if paczka.is_in_move is False: if paczka.is_in_move is False:
paczka.narysuj(paczka.x, paczka.y, screen) paczka.narysuj(paczka.x, paczka.y, screen)
def dodaj_paczki_na_rampe(p1, p2): def narysuj_list_na_skrzynce():
lista_paczek.append(p1) for letter in lista_listow_w_skrzynce:
lista_paczek.append(p2) if letter.is_in_move is False:
letter.narysuj(letter.x, letter.y, screen)
def dodaj_na_rampe(p1, p2, l1, l2):
lista_itemow.append(p1)
lista_itemow.append(p2)
lista_itemow.append(l1)
lista_itemow.append(l2)
p1.update_position(plansza.a_pix, plansza.b_pix) p1.update_position(plansza.a_pix, plansza.b_pix)
p2.update_position(plansza.a_pix, plansza.b_pix) p2.update_position(plansza.a_pix, plansza.b_pix)
l1.update_position(plansza.a_pix, plansza.b_pix)
l2.update_position(plansza.a_pix, plansza.b_pix)

BIN
images/letter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -2,17 +2,17 @@ import pygame
# from paczka import Paczka # from paczka import Paczka
class listOfPackages: class listOfItems:
list = [] list = []
package_group = pygame.sprite.Group() item_group = pygame.sprite.Group()
def add(self, item): def add(self, item):
self.list.append(item) self.list.append(item)
self.package_group.add(item) self.item_group.add(item)
def remove(self): def remove(self):
last_package = self.list.pop() last_item = self.list.pop()
self.package_group.remove(last_package) self.item_group.remove(last_item)
# def zainicjuj_liste_paczek(init_x, init_y): # def zainicjuj_liste_paczek(init_x, init_y):

23
letter.py Normal file
View File

@ -0,0 +1,23 @@
import pygame
letter_pic = pygame.image.load("images/letter.png")
class Letter(pygame.sprite.Sprite):
def __init__(self, id):
super().__init__()
self.id = id
self.image = pygame.transform.scale(letter_pic, (40, 40))
self.rect = self.image.get_rect()
self.x = 430
self.y = 400
self.is_in_move = False
def narysuj(self, x, y, screen):
self.x = x
self.y = y
screen.blit(self.image, (self.x, self.y))
def update_position(self, x, y):
self.x = x
self.y = y
self.rect.topleft = (x, y)

70
main.py
View File

@ -3,10 +3,12 @@ import sys
import joblib import joblib
import pygame import pygame
from paczka import Paczka from paczka import Paczka
from letter import Letter
from wozek import Wozek from wozek import Wozek
import wyszukiwanie import wyszukiwanie
import ekran import ekran
from grid import GridCellType, SearchGrid from grid import GridCellType, SearchGrid
import plansza
from plansza import a_pix, b_pix from plansza import a_pix, b_pix
@ -17,7 +19,9 @@ def main():
wozek = Wozek() wozek = Wozek()
p1 = Paczka('duzy', 12, 'narzedzia', False, True, False, any, any, any, any, any) 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) p2 = Paczka('maly', 1, 'ogród', False, True, False, any, any, any, any, any)
ekran.dodaj_paczki_na_rampe(p1, p2) l1 = Letter(1)
l2 = Letter(2)
ekran.dodaj_na_rampe(p2, l1, p1, l2)
grid_points = SearchGrid() grid_points = SearchGrid()
# Odczyt drzewa z pliku # Odczyt drzewa z pliku
@ -31,43 +35,57 @@ def main():
sys.exit(0) sys.exit(0)
if event.type == pygame.KEYDOWN: if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE: if event.key == pygame.K_SPACE:
## sprawdzenie czy lista z paczkami nie jest pusta
if ekran.lista_paczek: ## wozek jedzie po itemy
## wozek jedzie po paczke wiersz = ekran.sprawdz_ktory_wiersz(a_pix)
wiersz = ekran.sprawdz_ktory_wiersz(a_pix) kolumna = ekran.sprawdz_ktora_kolumna(b_pix)
kolumna = ekran.sprawdz_ktora_kolumna(b_pix) docelowy_stan = wyszukiwanie.Stan(wiersz * 70, kolumna * 70, 1)
docelowy_stan = wyszukiwanie.Stan(wiersz * 70, kolumna * 70, 1)
#wezel = wyszukiwanie.wyszukiwanie_bfs(wozek.obecnyStan, docelowy_stan, grid_points) #wezel = wyszukiwanie.wyszukiwanie_bfs(wozek.obecnyStan, docelowy_stan, grid_points)
wezel = wyszukiwanie.wyszukiwanie_a_star(wozek.obecnyStan, docelowy_stan, grid_points) wezel = wyszukiwanie.wyszukiwanie_a_star(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)
if grid_points.grid[(wiersz, kolumna)] is GridCellType.PLACE: #picks up package ## sprawdzenie czy lista itemow nie jest pusta
if ekran.lista_itemow:
if grid_points.grid[(wiersz, kolumna)] is GridCellType.PLACE: #picks up item
if wozek.ln == 0: if wozek.ln == 0:
wozek.picks_up_package() wozek.picks_up_item()
wozek.dynamic_wozek_picture() wozek.dynamic_wozek_picture()
## wozek jedzie odlozyc paczke na regal przenoszony_item = wozek.storage[-1]
przenoszona_paczka = wozek.storage[-1] if isinstance(przenoszony_item,Paczka):
## wozek jedzie odlozyc paczke na regal
przenoszona_paczka = przenoszony_item
array, reg = przenoszona_paczka.tablica_do_drzewa(przenoszona_paczka.kategoria) array, reg = przenoszona_paczka.tablica_do_drzewa(przenoszona_paczka.kategoria)
predictions = drzewo.predict([array]) predictions = drzewo.predict([array])
if predictions == 0: if predictions == 0:
print('odklada na dolna polke!') 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()
else: else:
print('odklada na gorna polke!') #list przenoszony do skrzynki
docelowy_stan = wyszukiwanie.Stan(plansza.c_pix, plansza.d_pix, 1)
wezel = wyszukiwanie.wyszukiwanie_a_star(wozek.obecnyStan, docelowy_stan, grid_points)
sciezka = wyszukiwanie.znajdz_sciezke(wezel)
wozek.przemiesc_wozek_po_sciezce(sciezka)
docelowy_stan = wyszukiwanie.Stan(reg.numerWiersza * 70, reg.numerKolumny * 70, 1) if wozek.ln != 0: # drops letter
wezel = wyszukiwanie.wyszukiwanie_a_star(wozek.obecnyStan, docelowy_stan, grid_points) wozek.drops_letter(przenoszony_item)
sciezka = wyszukiwanie.znajdz_sciezke(wezel) wozek.dynamic_wozek_picture()
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: if event.type == pygame.MOUSEBUTTONDOWN:
# lewy przycisk myszy # lewy przycisk myszy

View File

@ -1,9 +1,11 @@
import ekran import ekran
import pygame,math import pygame,math
# from packageList import listOfPackages # from packageList import listOfPackages
from ekran import lista_paczek from ekran import lista_itemow
from letter import Letter
import plansza
listOfPackages = lista_paczek listOfPackages = lista_itemow
class Wozek(pygame.sprite.Sprite): class Wozek(pygame.sprite.Sprite):
def __init__(self): def __init__(self):
@ -118,12 +120,18 @@ class Wozek(pygame.sprite.Sprite):
else: else:
self.image = pygame.transform.rotate(self.image, 90) self.image = pygame.transform.rotate(self.image, 90)
def picks_up_package(self): def picks_up_item(self):
paczka_pop = ekran.lista_paczek.pop() item_pop = ekran.lista_itemow.pop()
ekran.lista_paczek_na_regalach.append(paczka_pop) if isinstance(item_pop,Letter):
paczka_pop.is_in_move = True ekran.lista_listow_w_skrzynce.append(item_pop)
self.storage.append(paczka_pop) item_pop.is_in_move = True
self.ln = self.ln + 1 self.storage.append(item_pop)
self.ln = self.ln + 1
else:
ekran.lista_paczek_na_regalach.append(item_pop)
item_pop.is_in_move = True
self.storage.append(item_pop)
self.ln = self.ln + 1
def drops_package(self, paczka, reg, predictions): def drops_package(self, paczka, reg, predictions):
paczka.update_position(reg.numerWiersza*70, reg.numerKolumny*70) paczka.update_position(reg.numerWiersza*70, reg.numerKolumny*70)
@ -132,3 +140,9 @@ class Wozek(pygame.sprite.Sprite):
self.ln = self.ln - 1 self.ln = self.ln - 1
reg.put_package_on_the_regal(paczka, predictions) reg.put_package_on_the_regal(paczka, predictions)
def drops_letter(self, letter):
letter.update_position(plansza.c_pix, plansza.d_pix)
letter.is_in_move = False
self.storage.pop()
self.ln = self.ln - 1