merged bfs with picking up packages
This commit is contained in:
parent
e236cfe6f9
commit
642132e0f4
12
ekran.py
12
ekran.py
@ -1,6 +1,10 @@
|
|||||||
import pygame
|
import pygame
|
||||||
|
|
||||||
|
import packageList
|
||||||
import regal
|
import regal
|
||||||
import wozek
|
import wozek
|
||||||
|
from packageList import *
|
||||||
|
from paczka import Paczka
|
||||||
|
|
||||||
EKRAN_SZEROKOSC = 980
|
EKRAN_SZEROKOSC = 980
|
||||||
EKRAN_WYSOKOSC = 980
|
EKRAN_WYSOKOSC = 980
|
||||||
@ -10,6 +14,7 @@ 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 = packageList.zainicjuj_liste_paczek()
|
||||||
|
|
||||||
def narysuj_regaly():
|
def narysuj_regaly():
|
||||||
regal.Regal(1, 1, 2, 2)
|
regal.Regal(1, 1, 2, 2)
|
||||||
@ -46,6 +51,7 @@ 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))
|
||||||
narysuj_siatke()
|
narysuj_siatke()
|
||||||
|
narysuj_paczki(wozek)
|
||||||
narysuj_regaly()
|
narysuj_regaly()
|
||||||
wozek.draw()
|
wozek.draw()
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
@ -65,3 +71,9 @@ def sprawdz_ktora_kolumna(y):
|
|||||||
if y < i:
|
if y < i:
|
||||||
return nr_kolumny
|
return nr_kolumny
|
||||||
nr_kolumny = nr_kolumny + 1
|
nr_kolumny = nr_kolumny + 1
|
||||||
|
|
||||||
|
|
||||||
|
def narysuj_paczki(wozek):
|
||||||
|
if wozek.ln == 0:
|
||||||
|
for paczka in lista_paczek.list:
|
||||||
|
paczka.narysuj(430, 400, screen)
|
||||||
|
10
etykieta.py
10
etykieta.py
@ -1,16 +1,10 @@
|
|||||||
#from main import pygame
|
|
||||||
import secrets, string
|
import secrets, string
|
||||||
|
|
||||||
class Etykieta:
|
class Etykieta:
|
||||||
def __init__(self, id, nadawca, adres, imie, nazwisko, telefon):
|
def __init__(self, nadawca, adres, imie, nazwisko, telefon):
|
||||||
self.nadawca = nadawca
|
self.nadawca = nadawca
|
||||||
self.adres = adres
|
self.adres = adres
|
||||||
self.imie = imie
|
self.imie = imie
|
||||||
self.nazwisko = nazwisko
|
self.nazwisko = nazwisko
|
||||||
self.telefon = telefon
|
self.telefon = telefon
|
||||||
self.id = ''.join(secrets.choice(string.ascii_uppercase + string.digits) for _ in range(9))
|
self.id = ''.join(secrets.choice(string.ascii_uppercase + string.digits) for _ in range(9))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
141
main.py
141
main.py
@ -1,69 +1,72 @@
|
|||||||
import sys
|
import sys
|
||||||
import pygame
|
import pygame
|
||||||
import regal
|
from wozek import Wozek
|
||||||
import paczka
|
import wyszukiwanie
|
||||||
from wozek import Wozek
|
import ekran
|
||||||
import wyszukiwanie
|
|
||||||
import ekran
|
pygame.init()
|
||||||
pygame.init()
|
|
||||||
# screen = pygame.display.set_mode((980, 980))
|
|
||||||
# miejsce = pygame.image.load('images/miejsce_paczek.png')
|
def main():
|
||||||
#
|
wozek = Wozek()
|
||||||
# pygame.display.set_caption("Inteligentny wozek")
|
|
||||||
# icon = pygame.image.load('images/icon.png')
|
while True:
|
||||||
# pygame.display.set_icon(icon)
|
for event in pygame.event.get():
|
||||||
|
if event.type == pygame.QUIT:
|
||||||
|
sys.exit(0)
|
||||||
def main():
|
if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
|
||||||
wozek = Wozek()
|
sys.exit(0)
|
||||||
while True:
|
if event.type == pygame.MOUSEBUTTONDOWN:
|
||||||
for event in pygame.event.get():
|
# lewy przycisk myszy
|
||||||
if event.type == pygame.QUIT:
|
if event.button == 1:
|
||||||
sys.exit(0)
|
x = pygame.mouse.get_pos()[0]
|
||||||
if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
|
y = pygame.mouse.get_pos()[1]
|
||||||
sys.exit(0)
|
wiersz = ekran.sprawdz_ktory_wiersz(x)
|
||||||
if event.type == pygame.MOUSEBUTTONDOWN:
|
kolumna = ekran.sprawdz_ktora_kolumna(y)
|
||||||
# lewy przycisk myszy
|
docelowy_stan = wyszukiwanie.Stan(wiersz * 70, kolumna * 70, 0)
|
||||||
if event.button == 1:
|
wezel = wyszukiwanie.wyszukiwanie_bfs(wozek.obecnyStan, docelowy_stan)
|
||||||
x = pygame.mouse.get_pos()[0]
|
sciezka = wyszukiwanie.znajdz_sciezke(wezel)
|
||||||
y = pygame.mouse.get_pos()[1]
|
wozek.przemiesc_wozek_po_sciezce(sciezka)
|
||||||
wiersz = ekran.sprawdz_ktory_wiersz(x)
|
|
||||||
kolumna = ekran.sprawdz_ktora_kolumna(y)
|
if event.type == pygame.KEYDOWN:
|
||||||
docelowy_stan = wyszukiwanie.Stan(wiersz*70, kolumna*70, 0)
|
if event.key == pygame.K_DOWN:
|
||||||
wezel = wyszukiwanie.wyszukiwanie_bfs(wozek.obecnyStan, docelowy_stan)
|
wozek.y_change = 1
|
||||||
sciezka = wyszukiwanie.znajdz_sciezke(wezel)
|
if event.key == pygame.K_UP:
|
||||||
wozek.przemiesc_wozek_po_sciezce(sciezka)
|
wozek.y_change = -1
|
||||||
|
if event.key == pygame.K_RIGHT:
|
||||||
if event.type == pygame.KEYDOWN:
|
wozek.x_change = 1
|
||||||
if event.key == pygame.K_DOWN:
|
if event.key == pygame.K_LEFT:
|
||||||
wozek.y_change = 1
|
wozek.x_change = -1
|
||||||
if event.key == pygame.K_UP:
|
|
||||||
wozek.y_change = -1
|
if event.type == pygame.KEYUP:
|
||||||
if event.key == pygame.K_RIGHT:
|
if event.key == pygame.K_DOWN or event.key == pygame.K_UP:
|
||||||
wozek.x_change = 1
|
wozek.y_change = 0
|
||||||
if event.key == pygame.K_LEFT:
|
if event.key == pygame.K_RIGHT or event.key == pygame.K_LEFT:
|
||||||
wozek.x_change = -1
|
wozek.x_change = 0
|
||||||
|
|
||||||
if event.type == pygame.KEYUP:
|
if event.type == pygame.KEYDOWN:
|
||||||
if event.key == pygame.K_DOWN or event.key == pygame.K_UP:
|
if event.key == pygame.K_SPACE:
|
||||||
wozek.y_change = 0
|
if wozek.ln == 0:
|
||||||
if event.key == pygame.K_RIGHT or event.key == pygame.K_LEFT:
|
wozek.load_package()
|
||||||
wozek.x_change = 0
|
wozek.dynamic_wozek_picture()
|
||||||
|
else:
|
||||||
wozek.obecnyStan.x += wozek.x_change
|
wozek.drop_package()
|
||||||
wozek.obecnyStan.y += wozek.y_change
|
wozek.dynamic_wozek_picture()
|
||||||
|
|
||||||
if wozek.obecnyStan.x <= 0:
|
wozek.obecnyStan.x += wozek.x_change
|
||||||
wozek.obecnyStan.x = 0
|
wozek.obecnyStan.y += wozek.y_change
|
||||||
elif wozek.obecnyStan.x >= 916:
|
|
||||||
wozek.obecnyStan.x = 916
|
if wozek.obecnyStan.x <= 0:
|
||||||
if wozek.obecnyStan.y <= 0:
|
wozek.obecnyStan.x = 0
|
||||||
wozek.obecnyStan.y = 0
|
elif wozek.obecnyStan.x >= 916:
|
||||||
elif wozek.obecnyStan.x >= 916:
|
wozek.obecnyStan.x = 916
|
||||||
wozek.obecnyStan.x = 916
|
if wozek.obecnyStan.y <= 0:
|
||||||
|
wozek.obecnyStan.y = 0
|
||||||
ekran.odswiez_ekran(wozek)
|
elif wozek.obecnyStan.x >= 916:
|
||||||
|
wozek.obecnyStan.x = 916
|
||||||
|
|
||||||
if __name__ == "__main__":
|
ekran.odswiez_ekran(wozek)
|
||||||
main()
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
16
packageList.py
Normal file
16
packageList.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
class listOfPackages:
|
||||||
|
list = []
|
||||||
|
|
||||||
|
def add(self, item):
|
||||||
|
self.list.append(item)
|
||||||
|
|
||||||
|
def remove(self):
|
||||||
|
self.list.pop()
|
||||||
|
|
||||||
|
|
||||||
|
def zainicjuj_liste_paczek():
|
||||||
|
from paczka import Paczka
|
||||||
|
packageList = listOfPackages()
|
||||||
|
demo_paczka = Paczka('duzy', 10, any, False, any, any, any, any, any)
|
||||||
|
packageList.add(demo_paczka)
|
||||||
|
return packageList
|
25
paczka.py
25
paczka.py
@ -6,14 +6,29 @@ class Paczka:
|
|||||||
|
|
||||||
def __init__(self, rozmiar, waga, kategoria, czy_krucha, nadawca, adres, imie, nazwisko, telefon):
|
def __init__(self, rozmiar, waga, kategoria, czy_krucha, nadawca, adres, imie, nazwisko, telefon):
|
||||||
self.rozmiar = rozmiar
|
self.rozmiar = rozmiar
|
||||||
|
self.image = pygame.image.load("images/paczka.png")
|
||||||
|
if rozmiar == 'duzy':
|
||||||
|
self.image = pygame.transform.scale(self.image, (50, 50))
|
||||||
|
self.szerokosc = 50
|
||||||
|
self.wysokosc = 50
|
||||||
|
elif rozmiar == 'sredni':
|
||||||
|
self.image = pygame.transform.scale(self.image, (35, 35))
|
||||||
|
self.szerokosc = 35
|
||||||
|
self.wysokosc = 35
|
||||||
|
elif rozmiar == 'maly':
|
||||||
|
self.image = pygame.transform.scale(self.image, (20, 20))
|
||||||
|
self.szerokosc = 20
|
||||||
|
self.wysokosc = 20
|
||||||
|
else:
|
||||||
|
self.image = pygame.transform.scale(self.image, (20, 20))
|
||||||
|
self.szerokosc = 20
|
||||||
|
self.wysokosc = 20
|
||||||
|
self.rozmiar = 'undefined'
|
||||||
self.waga = waga
|
self.waga = waga
|
||||||
self.kategoria = kategoria
|
self.kategoria = kategoria
|
||||||
self.czy_krucha = czy_krucha
|
self.czy_krucha = czy_krucha
|
||||||
self.x = 0
|
self.x = 430
|
||||||
self.y = 0
|
self.y = 400
|
||||||
self.szerokosc = 0
|
|
||||||
self.wysokosc = 0
|
|
||||||
self.image = pygame.image.load("images/paczka.png")
|
|
||||||
self.label = Etykieta(nadawca, adres, imie, nazwisko, telefon)
|
self.label = Etykieta(nadawca, adres, imie, nazwisko, telefon)
|
||||||
|
|
||||||
# zmienia rozmiar obrazka w zaleznosci od rozmiaru
|
# zmienia rozmiar obrazka w zaleznosci od rozmiaru
|
||||||
|
87
wozek.py
87
wozek.py
@ -1,12 +1,13 @@
|
|||||||
import pygame
|
|
||||||
import ekran
|
import ekran
|
||||||
|
import pygame,math
|
||||||
|
from packageList import listOfPackages
|
||||||
|
|
||||||
|
|
||||||
class Wozek():
|
class Wozek():
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.obecnyStan = None
|
self.obecnyStan = None
|
||||||
self.x = 55
|
# self.x = 55
|
||||||
self.y = 55
|
# self.y = 55
|
||||||
self.x_change = 0
|
self.x_change = 0
|
||||||
self.y_change = 0
|
self.y_change = 0
|
||||||
self.height = 64
|
self.height = 64
|
||||||
@ -19,32 +20,48 @@ class Wozek():
|
|||||||
def draw(self):
|
def draw(self):
|
||||||
ekran.screen.blit(self.image, (self.obecnyStan.x, self.obecnyStan.y))
|
ekran.screen.blit(self.image, (self.obecnyStan.x, self.obecnyStan.y))
|
||||||
|
|
||||||
# storage = ["none"] * 10
|
#storage = ["none"] * 10
|
||||||
storage = []
|
storage = []
|
||||||
max_size = 10
|
max_size = 10
|
||||||
|
ln = len(storage)
|
||||||
|
|
||||||
def add_element(element, storage, max_size):
|
def add_element(self, element):
|
||||||
if len(storage) < max_size:
|
if self.ln < self.max_size:
|
||||||
storage.append(element)
|
self.storage.append(element)
|
||||||
|
self.ln=self.ln+1
|
||||||
else:
|
else:
|
||||||
print("I'm full!")
|
print("I'm full!")
|
||||||
|
def remove_element(self):
|
||||||
def remove_element(storage):
|
if self.ln > 0:
|
||||||
if len(storage) > 0:
|
element = self.storage.pop()
|
||||||
place = storage.pop()
|
self.ln=self.ln-1
|
||||||
return place
|
return element
|
||||||
else:
|
else:
|
||||||
print("I'm empty!")
|
print("I'm empty!")
|
||||||
|
|
||||||
def dynamic_wozek_picture(wozek, storage):
|
def dynamic_wozek_picture(self):
|
||||||
if len(storage) == 0:
|
if self.ln == 0:
|
||||||
wozek.image = pygame.image.load("images/pusty_wozek.png")
|
self.image = pygame.image.load("images/pusty_wozek.png")
|
||||||
elif ((len(storage) > 0) and (len(storage) < 4)):
|
elif ((self.ln > 0) and (self.ln < 4)):
|
||||||
wozek.image = pygame.image.load("images/pelny_wozek_1_crate.png")
|
self.image = pygame.image.load("images/pelny_wozek_1_crate.png")
|
||||||
elif ((len(storage) > 3) and (len(storage) < 10)):
|
elif ((self.ln > 3) and (self.ln < 10)):
|
||||||
wozek.image = pygame.image.load("images/pelny_wozek_2_crates.png")
|
self.image = pygame.image.load("images/pelny_wozek_2_crates.png")
|
||||||
elif (len(storage) == 10):
|
elif (self.ln == 10):
|
||||||
wozek.image = pygame.image.load("images/pelny_wozek_full_3_crates.png")
|
self.image = pygame.image.load("images/pelny_wozek_full_3_crates.png")
|
||||||
|
|
||||||
|
|
||||||
|
def load_package(self):
|
||||||
|
for package in listOfPackages.list:
|
||||||
|
dist = math.sqrt((self.obecnyStan.x - package.x)**2 + (self.obecnyStan.y - package.y)**2)
|
||||||
|
if dist <= 50:
|
||||||
|
self.add_element(package)
|
||||||
|
listOfPackages.list.pop()
|
||||||
|
def drop_package(self):
|
||||||
|
package = self.remove_element()
|
||||||
|
if package is not None:
|
||||||
|
listOfPackages.list.append(package)
|
||||||
|
package.x = self.obecnyStan.x+50
|
||||||
|
package.y = self.obecnyStan.y
|
||||||
|
|
||||||
def __zainicjuj_stan_poczatkowy(self):
|
def __zainicjuj_stan_poczatkowy(self):
|
||||||
from wyszukiwanie import Stan
|
from wyszukiwanie import Stan
|
||||||
@ -61,18 +78,18 @@ class Wozek():
|
|||||||
pygame.time.wait(500)
|
pygame.time.wait(500)
|
||||||
|
|
||||||
def ustaw_wozek_w_kierunku(self, kierunek_obecny, kierunek_poprzedni):
|
def ustaw_wozek_w_kierunku(self, kierunek_obecny, kierunek_poprzedni):
|
||||||
if kierunek_poprzedni < kierunek_obecny:
|
if kierunek_poprzedni < kierunek_obecny:
|
||||||
#obrot w lewo
|
# obrot w lewo
|
||||||
if kierunek_poprzedni == 0 and kierunek_obecny == 3:
|
if kierunek_poprzedni == 0 and kierunek_obecny == 3:
|
||||||
self.image = pygame.transform.rotate(self.image, 90)
|
self.image = pygame.transform.rotate(self.image, 90)
|
||||||
# obrot w prawo
|
# obrot w prawo
|
||||||
else:
|
else:
|
||||||
self.image = pygame.transform.rotate(self.image, -90)
|
self.image = pygame.transform.rotate(self.image, -90)
|
||||||
elif kierunek_poprzedni > kierunek_obecny:
|
elif kierunek_poprzedni > kierunek_obecny:
|
||||||
# obrot w prawo
|
# obrot w prawo
|
||||||
if kierunek_poprzedni == 3 and kierunek_obecny == 0:
|
if kierunek_poprzedni == 3 and kierunek_obecny == 0:
|
||||||
self.image = pygame.transform.rotate(self.image, -90)
|
self.image = pygame.transform.rotate(self.image, -90)
|
||||||
# obrot w lewo
|
# obrot w lewo
|
||||||
else:
|
else:
|
||||||
self.image = pygame.transform.rotate(self.image, 90)
|
self.image = pygame.transform.rotate(self.image, 90)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user