added agent functionalities
BIN
src/dock.png
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 3.2 KiB |
BIN
src/img/dock_left.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
BIN
src/img/package_builders.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
src/img/package_explosive.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
src/img/package_grocery.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.4 KiB |
60
src/main.py
@ -7,28 +7,30 @@ pygame.init()
|
|||||||
WIDTH = 675
|
WIDTH = 675
|
||||||
HEIGHT = 675
|
HEIGHT = 675
|
||||||
size = 75
|
size = 75
|
||||||
|
QTY_OF_PACKAGES = 8
|
||||||
|
|
||||||
IMAGE = pygame.image.load('wozek2.png')
|
IMAGE = pygame.image.load('img/wozek2.png')
|
||||||
BACKGROUND = pygame.transform.scale(pygame.image.load('background.png'), (WIDTH, HEIGHT))
|
BACKGROUND = pygame.transform.scale(pygame.image.load('img/background.png'), (WIDTH, HEIGHT))
|
||||||
DOCK = pygame.transform.scale(pygame.image.load('dock.png'), (75, 75))
|
DOCK = pygame.transform.scale(pygame.image.load('img/dock_left.png'), (75, 75))
|
||||||
|
|
||||||
|
|
||||||
def generate_package(a, b):
|
def generate_package(a, b):
|
||||||
y = random.randint(1, 4)
|
y = random.randint(1, 4)
|
||||||
x = random.randint(10, 150)
|
x = random.randint(10, 150)
|
||||||
if y == 1:
|
if y == 1:
|
||||||
p1 = Package((a, b), x, "Grocery", 'package.png')
|
p1 = Package((a, b), x, "Grocery", 'img/package_grocery.png')
|
||||||
elif y == 2:
|
elif y == 2:
|
||||||
p1 = Package((a, b), x, "Explosive", 'package_explo.png')
|
p1 = Package((a, b), x, "Explosive", 'img/package_explosive.png')
|
||||||
elif y == 3:
|
elif y == 3:
|
||||||
p1 = Package((a, b), x, "Electronic", 'package_electro.png')
|
p1 = Package((a, b), x, "Electronic", 'img/package.png')
|
||||||
elif y == 4:
|
elif y == 4:
|
||||||
p1 = Package((a, b), x, "Builders", 'package_explo.png')
|
p1 = Package((a, b), x, "Builders", 'img/package_builders.png')
|
||||||
return p1
|
return p1
|
||||||
|
|
||||||
|
|
||||||
class Package:
|
class Package:
|
||||||
def __init__(self, pos, content, content_size, pack_image):
|
def __init__(self, pos, content, content_size, pack_image):
|
||||||
|
self.pos = pos
|
||||||
self.content = content
|
self.content = content
|
||||||
self.content_size = content_size
|
self.content_size = content_size
|
||||||
self.image = pygame.transform.scale(pygame.image.load(pack_image), (50, 50))
|
self.image = pygame.transform.scale(pygame.image.load(pack_image), (50, 50))
|
||||||
@ -40,27 +42,40 @@ class Shelf:
|
|||||||
def __init__(self, pos, content, content_size):
|
def __init__(self, pos, content, content_size):
|
||||||
self.content = content
|
self.content = content
|
||||||
self.content_size = content_size
|
self.content_size = content_size
|
||||||
self.image = pygame.transform.scale(pygame.image.load('shelf.png'), (75, 75))
|
self.image = pygame.transform.scale(pygame.image.load('img/shelf.png'), (60, 60))
|
||||||
self.rect = self.image.get_rect(center=pos)
|
self.rect = self.image.get_rect(center=pos)
|
||||||
|
|
||||||
|
|
||||||
class Agent:
|
class Agent:
|
||||||
def __init__(self, pos):
|
def __init__(self, pos):
|
||||||
|
self.pos = pos
|
||||||
self.image = IMAGE
|
self.image = IMAGE
|
||||||
self.rect = self.image.get_rect(center=pos)
|
self.rect = self.image.get_rect(center=pos)
|
||||||
|
|
||||||
def move(self, key):
|
def move(self, key):
|
||||||
if key == pygame.K_UP and self.rect.y - size > 0:
|
if key == pygame.K_UP and self.rect.y - size > 0:
|
||||||
self.rect.move_ip(0, -size)
|
self.rect.move_ip(0, -size)
|
||||||
|
self.pos = (self.pos[0], self.pos[1] - size)
|
||||||
|
|
||||||
if key == pygame.K_DOWN and self.rect.y + size < HEIGHT:
|
if key == pygame.K_DOWN and self.rect.y + size < HEIGHT:
|
||||||
self.rect.move_ip(0, size)
|
self.rect.move_ip(0, size)
|
||||||
|
self.pos = (self.pos[0], self.pos[1] + size)
|
||||||
|
|
||||||
if key == pygame.K_RIGHT and self.rect.x + size < WIDTH:
|
if key == pygame.K_RIGHT and self.rect.x + size < WIDTH:
|
||||||
self.rect.move_ip(size, 0)
|
self.rect.move_ip(size, 0)
|
||||||
|
self.pos = (self.pos[0] + size, self.pos[1])
|
||||||
|
|
||||||
if key == pygame.K_LEFT and self.rect.x - size > 0:
|
if key == pygame.K_LEFT and self.rect.x - size > 0:
|
||||||
self.rect.move_ip(-size, 0)
|
self.rect.move_ip(-size, 0)
|
||||||
|
self.pos = (self.pos[0] - size, self.pos[1])
|
||||||
|
|
||||||
|
def lift_package(self, key):
|
||||||
|
if key == pygame.K_e:
|
||||||
|
for package in Package_list:
|
||||||
|
if package.is_package_up:
|
||||||
|
package.is_package_up = False
|
||||||
|
elif package.pos == agent.pos:
|
||||||
|
package.is_package_up = True
|
||||||
|
|
||||||
|
|
||||||
board = pygame.Surface((WIDTH, HEIGHT), pygame.SRCALPHA) # transparently surface
|
board = pygame.Surface((WIDTH, HEIGHT), pygame.SRCALPHA) # transparently surface
|
||||||
@ -69,17 +84,19 @@ for x in range(9):
|
|||||||
for y in range(9):
|
for y in range(9):
|
||||||
pygame.draw.rect(board, (0, 0, 0), (x * size, y * size, size, size), 3)
|
pygame.draw.rect(board, (0, 0, 0), (x * size, y * size, size, size), 3)
|
||||||
|
|
||||||
agent = Agent((122, 40))
|
agent = Agent((40, 640))
|
||||||
|
|
||||||
|
|
||||||
Shelf_list = [
|
Shelf_list = [
|
||||||
Shelf((187, 187), 'Grocery', 5), Shelf((300, 300), 'Explosive', 5),
|
Shelf((640, 340), 'Explosive', 5), Shelf((565, 340), 'Explosive', 5), Shelf((490, 340), 'Explosive', 5), Shelf((415, 340), 'Explosive', 5),
|
||||||
Shelf((500, 500), 'Electronic', 5), Shelf((400, 440), 'Builders', 5)]
|
Shelf((640, 190), 'Grocery', 5), Shelf((565, 190), 'Grocery', 5), Shelf((490, 190), 'Grocery', 5), Shelf((415, 190), 'Grocery', 5),
|
||||||
|
Shelf((640, 640), 'Builders', 5), Shelf((565, 640), 'Builders', 5), Shelf((490, 640), 'Builders', 5), Shelf((415, 640), 'Builders', 5),
|
||||||
|
Shelf((640, 490), 'Electronic', 5), Shelf((565, 490), 'Electronic', 5), Shelf((490, 490), 'Electronic', 5), Shelf((415, 490), 'Electronic', 5)]
|
||||||
|
|
||||||
screen = pygame.display.set_mode([WIDTH, HEIGHT])
|
screen = pygame.display.set_mode([WIDTH, HEIGHT])
|
||||||
|
|
||||||
Package_list = [
|
Package_list = [
|
||||||
generate_package(40, 40), generate_package(120, 120), generate_package(250, 250)
|
generate_package(40, 40)
|
||||||
]
|
]
|
||||||
|
|
||||||
running = True
|
running = True
|
||||||
@ -91,6 +108,23 @@ while running:
|
|||||||
|
|
||||||
if event.type == pygame.KEYDOWN:
|
if event.type == pygame.KEYDOWN:
|
||||||
agent.move(event.key)
|
agent.move(event.key)
|
||||||
|
agent.lift_package(event.key)
|
||||||
|
|
||||||
|
for package in Package_list:
|
||||||
|
if package.is_package_up:
|
||||||
|
package.rect.move_ip(agent.pos[0] - package.pos[0], agent.pos[1] - package.pos[1])
|
||||||
|
package.pos = agent.pos
|
||||||
|
|
||||||
|
if len(Package_list) < QTY_OF_PACKAGES:
|
||||||
|
|
||||||
|
is_dock_empty = True
|
||||||
|
|
||||||
|
for package in Package_list:
|
||||||
|
if package.pos == (40, 40):
|
||||||
|
is_dock_empty = False
|
||||||
|
|
||||||
|
if is_dock_empty:
|
||||||
|
Package_list.append(generate_package(40, 40))
|
||||||
|
|
||||||
# screen.fill((0, 0, 0))
|
# screen.fill((0, 0, 0))
|
||||||
|
|
||||||
@ -103,8 +137,6 @@ while running:
|
|||||||
for package in Package_list:
|
for package in Package_list:
|
||||||
screen.blit(package.image, package.rect)
|
screen.blit(package.image, package.rect)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
pygame.display.update()
|
pygame.display.update()
|
||||||
|
|
||||||
pygame.quit()
|
pygame.quit()
|
||||||
|
Before Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 307 KiB |
BIN
src/wozek.png
Before Width: | Height: | Size: 3.1 KiB |