srodowisko update&reprezentacja wiedzy
@ -4,7 +4,7 @@
|
|||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="jdk" jdkName="Python 3.9" jdkType="Python SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (AI_wozek_widlowy)" project-jdk-type="Python SDK" />
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
|
||||||
</project>
|
</project>
|
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
45
Environment.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
import numpy as np
|
||||||
|
from Shelf import Shelf
|
||||||
|
from Grid import Grid
|
||||||
|
WINDOW_X = 1400
|
||||||
|
WINDOW_Y = 750
|
||||||
|
RECT_SIZE = 50
|
||||||
|
|
||||||
|
|
||||||
|
class Environment:
|
||||||
|
def __init__(self, window):
|
||||||
|
self.window = window
|
||||||
|
self.grid = Grid(self.window)
|
||||||
|
self.list_of_coordinates = self.compute_coordinates_of_shelves()
|
||||||
|
self.shelves = self.create_shelves()
|
||||||
|
|
||||||
|
# fills surface with color, draws grid&shelves
|
||||||
|
def draw_itself(self):
|
||||||
|
self.window.fill((70, 77, 87))
|
||||||
|
self.draw_shelves()
|
||||||
|
self.grid.draw_grid()
|
||||||
|
|
||||||
|
# computes shelves coordinates according to window size, might change later
|
||||||
|
def compute_coordinates_of_shelves(self):
|
||||||
|
y = 0
|
||||||
|
y1 = WINDOW_Y - 6*RECT_SIZE
|
||||||
|
arr = []
|
||||||
|
for x in range(2*RECT_SIZE, WINDOW_X - 2*RECT_SIZE, 3*RECT_SIZE):
|
||||||
|
arr.append(x)
|
||||||
|
arr.append(y)
|
||||||
|
arr.append(x)
|
||||||
|
arr.append(y1)
|
||||||
|
list_of_coordinates = np.array(arr).reshape(int(len(arr)/2), 2)
|
||||||
|
return list_of_coordinates
|
||||||
|
|
||||||
|
# creating list of shelves
|
||||||
|
def create_shelves(self):
|
||||||
|
shelves = []
|
||||||
|
for row in self.list_of_coordinates:
|
||||||
|
shelf = Shelf(self.window, row[0], row[1])
|
||||||
|
shelves.append(shelf)
|
||||||
|
return shelves
|
||||||
|
|
||||||
|
def draw_shelves(self):
|
||||||
|
for shelf in self.shelves:
|
||||||
|
shelf.draw()
|
22
Grid.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import pygame
|
||||||
|
WINDOW_X = 1400
|
||||||
|
WINDOW_Y = 750
|
||||||
|
RECT_SIZE = 50
|
||||||
|
|
||||||
|
|
||||||
|
class Grid:
|
||||||
|
def __init__(self, window):
|
||||||
|
self.window = window
|
||||||
|
|
||||||
|
# function to draw a grid, it draws a line every 50px(RECT_SIZE) for both x and y axis
|
||||||
|
def draw_grid(self):
|
||||||
|
num_of_columns = int(WINDOW_X / RECT_SIZE)
|
||||||
|
num_of_rows = int(WINDOW_Y / RECT_SIZE)
|
||||||
|
x = 0
|
||||||
|
y = 0
|
||||||
|
for i in range(num_of_columns):
|
||||||
|
x += RECT_SIZE
|
||||||
|
pygame.draw.line(self.window, (255, 255, 255), (x, 0), (x, WINDOW_Y))
|
||||||
|
for i in range(num_of_rows):
|
||||||
|
y += RECT_SIZE
|
||||||
|
pygame.draw.line(self.window, (255, 255, 255), (0, y), (WINDOW_X, y))
|
30
Package.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import numpy as np
|
||||||
|
import glob2
|
||||||
|
import pygame
|
||||||
|
import random
|
||||||
|
RECT_SIZE = 50
|
||||||
|
|
||||||
|
|
||||||
|
class Package:
|
||||||
|
def __init__(self, window):
|
||||||
|
self.window = window
|
||||||
|
self.length = np.random.randint(1, 3) * RECT_SIZE -1
|
||||||
|
self.width = RECT_SIZE-1
|
||||||
|
self.color = list(np.random.choice(range(256), size=3))
|
||||||
|
self.x = 1251
|
||||||
|
self.y = 351
|
||||||
|
# self.mark = random.choice(['fragile', 'dont turn around', 'keep dry', 'glass'])
|
||||||
|
self.mark_image = self.get_marking_photo()
|
||||||
|
self.block = pygame.Rect(self.x, self.y, self.width, self.length)
|
||||||
|
|
||||||
|
def get_marking_photo(self):
|
||||||
|
file_path_type = ["resources/package_markings/*.jpg"]
|
||||||
|
images = glob2.glob(random.choice(file_path_type))
|
||||||
|
random_image = random.choice(images)
|
||||||
|
print(random_image)
|
||||||
|
return random_image
|
||||||
|
|
||||||
|
def draw(self):
|
||||||
|
pygame.draw.rect(self.window, self.color, self.block)
|
||||||
|
pygame.display.flip()
|
||||||
|
|
36
Program.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
import pygame
|
||||||
|
from pygame.locals import *
|
||||||
|
from Truck import Truck
|
||||||
|
|
||||||
|
|
||||||
|
WINDOW_X = 1400
|
||||||
|
WINDOW_Y = 750
|
||||||
|
RECT_SIZE = 50
|
||||||
|
|
||||||
|
|
||||||
|
class Program:
|
||||||
|
def __init__(self):
|
||||||
|
pygame.init()
|
||||||
|
self.window = pygame.display.set_mode((WINDOW_X, WINDOW_Y)) # decides window's size
|
||||||
|
self.track = Truck(self.window)
|
||||||
|
self.track.draw()
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
running = True
|
||||||
|
while running:
|
||||||
|
for event in pygame.event.get(): # integrating with keyboard
|
||||||
|
if event.type == KEYDOWN:
|
||||||
|
if event.key == K_LEFT:
|
||||||
|
self.track.move_left()
|
||||||
|
|
||||||
|
if event.key == K_RIGHT:
|
||||||
|
self.track.move_right()
|
||||||
|
|
||||||
|
if event.key == K_UP:
|
||||||
|
self.track.move_up()
|
||||||
|
|
||||||
|
if event.key == K_DOWN:
|
||||||
|
self.track.move_down()
|
||||||
|
|
||||||
|
elif event.type == QUIT:
|
||||||
|
running = False
|
16
Shelf.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import pygame
|
||||||
|
RECT_SIZE = 50
|
||||||
|
|
||||||
|
|
||||||
|
class Shelf:
|
||||||
|
def __init__(self, window, x, y):
|
||||||
|
self.window = window
|
||||||
|
self.color = (143, 68, 33)
|
||||||
|
self.width = RECT_SIZE
|
||||||
|
self.length = 6*RECT_SIZE
|
||||||
|
self.x = x
|
||||||
|
self.y = y
|
||||||
|
self.block = pygame.Rect(self.x, self.y, self.width, self.length)
|
||||||
|
|
||||||
|
def draw(self):
|
||||||
|
pygame.draw.rect(self.window, self.color, self.block)
|
52
Truck.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
|
||||||
|
import pygame
|
||||||
|
from Environment import Environment
|
||||||
|
from Package import Package
|
||||||
|
RECT_SIZE = 50
|
||||||
|
|
||||||
|
|
||||||
|
class Truck:
|
||||||
|
def __init__(self, window, ):
|
||||||
|
self.window = window
|
||||||
|
self.image = pygame.image.load("resources/truck.jpeg").convert()
|
||||||
|
self.x = 701 # (x,y) - position of the truck
|
||||||
|
self.y = 401
|
||||||
|
self.has_package = False
|
||||||
|
self.environment = Environment(window)
|
||||||
|
self.package = Package(self.window)
|
||||||
|
|
||||||
|
# drawing the truck
|
||||||
|
def draw(self):
|
||||||
|
self.environment.draw_itself()
|
||||||
|
self.package.draw()
|
||||||
|
self.window.blit(self.image, (self.x, self.y))
|
||||||
|
pygame.display.flip()
|
||||||
|
|
||||||
|
# moving the truck
|
||||||
|
def move_right(self):
|
||||||
|
self.x += RECT_SIZE
|
||||||
|
self.draw()
|
||||||
|
|
||||||
|
def move_left(self):
|
||||||
|
self.x -= RECT_SIZE
|
||||||
|
self.draw()
|
||||||
|
|
||||||
|
def move_up(self):
|
||||||
|
self.y -= RECT_SIZE
|
||||||
|
self.draw()
|
||||||
|
|
||||||
|
def move_down(self):
|
||||||
|
self.y += RECT_SIZE
|
||||||
|
self.draw()
|
||||||
|
|
||||||
|
# def collision_with_shelves(self,x,y):
|
||||||
|
# for row in self.environment.compute_coordinates_of_shelves():
|
||||||
|
# if self.is_collision(x, y,row[0],row[1]):
|
||||||
|
# return True
|
||||||
|
# return False
|
||||||
|
#
|
||||||
|
# def is_collision(self, x1, y1, x2, y2):
|
||||||
|
# if x1 >= x2 and x1 <= x2 + RECT_SIZE:
|
||||||
|
# if y1 >= y2 and y1 <= y2 + 6*RECT_SIZE:
|
||||||
|
# return True
|
||||||
|
#
|
BIN
__pycache__/Environment.cpython-39.pyc
Normal file
BIN
__pycache__/Grid.cpython-39.pyc
Normal file
BIN
__pycache__/Package.cpython-39.pyc
Normal file
BIN
__pycache__/Program.cpython-39.pyc
Normal file
BIN
__pycache__/Shelf.cpython-39.pyc
Normal file
BIN
__pycache__/Truck.cpython-39.pyc
Normal file
BIN
resources/package_markings/1.jpg
Normal file
After Width: | Height: | Size: 7.9 KiB |
BIN
resources/package_markings/Etykieta-Logistyczna-Uwaga-szklo.jpg
Normal file
After Width: | Height: | Size: 138 KiB |
BIN
resources/package_markings/c3e8808cd8efcfd26c23fbf88704676d.jpg
Normal file
After Width: | Height: | Size: 23 KiB |
BIN
resources/package_markings/image002.jpg
Normal file
After Width: | Height: | Size: 7.7 KiB |
BIN
resources/package_markings/indeks.jpg
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
resources/package_markings/ma001.jpg
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
resources/package_markings/ma002.jpg
Normal file
After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 3.5 KiB |
106
run.py
@ -1,108 +1,4 @@
|
|||||||
import pygame
|
from Program import Program
|
||||||
from pygame.locals import *
|
|
||||||
|
|
||||||
WINDOW_X = 1350
|
|
||||||
WINDOW_Y = 850
|
|
||||||
RECT_SIZE = 50
|
|
||||||
|
|
||||||
|
|
||||||
class Truck:
|
|
||||||
def __init__(self, window, ):
|
|
||||||
self.window = window
|
|
||||||
self.image = pygame.image.load("resources/truck.jpeg").convert()
|
|
||||||
self.x = 701 # (x,y) - position of the truck
|
|
||||||
self.y = 401
|
|
||||||
self.grid = Grid(self.window)
|
|
||||||
self.shelves = Shelves(window)
|
|
||||||
|
|
||||||
# drawing the truck
|
|
||||||
def draw(self):
|
|
||||||
self.grid.redraw()
|
|
||||||
self.shelves.draw_shelves()
|
|
||||||
self.window.blit(self.image, (self.x, self.y))
|
|
||||||
pygame.display.flip()
|
|
||||||
|
|
||||||
# moving the truck
|
|
||||||
def move_right(self):
|
|
||||||
self.x += RECT_SIZE
|
|
||||||
self.draw()
|
|
||||||
|
|
||||||
def move_left(self):
|
|
||||||
self.x -= RECT_SIZE
|
|
||||||
self.draw()
|
|
||||||
|
|
||||||
def move_up(self):
|
|
||||||
self.y -= RECT_SIZE
|
|
||||||
self.draw()
|
|
||||||
|
|
||||||
def move_down(self):
|
|
||||||
self.y += RECT_SIZE
|
|
||||||
self.draw()
|
|
||||||
|
|
||||||
|
|
||||||
class Grid:
|
|
||||||
def __init__(self, window):
|
|
||||||
self.window = window
|
|
||||||
|
|
||||||
# function to draw a grid, it draws a line every 50px(RECT_SIZE) for both x and y axis
|
|
||||||
def draw_grid(self):
|
|
||||||
num_of_columns = int(WINDOW_X / RECT_SIZE)
|
|
||||||
num_of_rows = int(WINDOW_Y / RECT_SIZE)
|
|
||||||
x = 0
|
|
||||||
y = 0
|
|
||||||
for i in range(num_of_columns):
|
|
||||||
x += RECT_SIZE
|
|
||||||
pygame.draw.line(self.window, (255, 255, 255), (x, 0), (x, WINDOW_Y))
|
|
||||||
for i in range(num_of_rows):
|
|
||||||
y += RECT_SIZE
|
|
||||||
pygame.draw.line(self.window, (255, 255, 255), (0, y), (WINDOW_X, y))
|
|
||||||
|
|
||||||
# filling a background with color and grid
|
|
||||||
def redraw(self):
|
|
||||||
self.window.fill((70, 77, 87))
|
|
||||||
self.draw_grid()
|
|
||||||
|
|
||||||
|
|
||||||
class Shelves:
|
|
||||||
def __init__(self, window):
|
|
||||||
self.window = window
|
|
||||||
|
|
||||||
def draw_shelves(self):
|
|
||||||
width = RECT_SIZE - 1
|
|
||||||
length = 6*RECT_SIZE
|
|
||||||
for i in range(2*RECT_SIZE+1, WINDOW_X - 2*RECT_SIZE, 3*RECT_SIZE):
|
|
||||||
pygame.draw.rect(self.window, (143, 68, 33), pygame.Rect(i, 0, width, length))
|
|
||||||
pygame.draw.rect(self.window, (143, 68, 33), pygame.Rect(i, (WINDOW_Y - 6*RECT_SIZE)+1, width, length))
|
|
||||||
|
|
||||||
|
|
||||||
class Program:
|
|
||||||
def __init__(self):
|
|
||||||
pygame.init()
|
|
||||||
self.window = pygame.display.set_mode((WINDOW_X, WINDOW_Y)) # decides window's size
|
|
||||||
self.track = Truck(self.window)
|
|
||||||
self.track.draw()
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
running = True
|
|
||||||
|
|
||||||
while running:
|
|
||||||
for event in pygame.event.get(): # integrating with keyboard
|
|
||||||
if event.type == KEYDOWN:
|
|
||||||
if event.key == K_LEFT:
|
|
||||||
self.track.move_left()
|
|
||||||
|
|
||||||
if event.key == K_RIGHT:
|
|
||||||
self.track.move_right()
|
|
||||||
|
|
||||||
if event.key == K_UP:
|
|
||||||
self.track.move_up()
|
|
||||||
|
|
||||||
if event.key == K_DOWN:
|
|
||||||
self.track.move_down()
|
|
||||||
|
|
||||||
elif event.type == QUIT:
|
|
||||||
running = False
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
program = Program()
|
program = Program()
|
||||||
|