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
|
||||
HEIGHT = 675
|
||||
size = 75
|
||||
QTY_OF_PACKAGES = 8
|
||||
|
||||
IMAGE = pygame.image.load('wozek2.png')
|
||||
BACKGROUND = pygame.transform.scale(pygame.image.load('background.png'), (WIDTH, HEIGHT))
|
||||
DOCK = pygame.transform.scale(pygame.image.load('dock.png'), (75, 75))
|
||||
IMAGE = pygame.image.load('img/wozek2.png')
|
||||
BACKGROUND = pygame.transform.scale(pygame.image.load('img/background.png'), (WIDTH, HEIGHT))
|
||||
DOCK = pygame.transform.scale(pygame.image.load('img/dock_left.png'), (75, 75))
|
||||
|
||||
|
||||
def generate_package(a, b):
|
||||
y = random.randint(1, 4)
|
||||
x = random.randint(10, 150)
|
||||
if y == 1:
|
||||
p1 = Package((a, b), x, "Grocery", 'package.png')
|
||||
p1 = Package((a, b), x, "Grocery", 'img/package_grocery.png')
|
||||
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:
|
||||
p1 = Package((a, b), x, "Electronic", 'package_electro.png')
|
||||
p1 = Package((a, b), x, "Electronic", 'img/package.png')
|
||||
elif y == 4:
|
||||
p1 = Package((a, b), x, "Builders", 'package_explo.png')
|
||||
p1 = Package((a, b), x, "Builders", 'img/package_builders.png')
|
||||
return p1
|
||||
|
||||
|
||||
class Package:
|
||||
def __init__(self, pos, content, content_size, pack_image):
|
||||
self.pos = pos
|
||||
self.content = content
|
||||
self.content_size = content_size
|
||||
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):
|
||||
self.content = content
|
||||
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)
|
||||
|
||||
|
||||
class Agent:
|
||||
def __init__(self, pos):
|
||||
self.pos = pos
|
||||
self.image = IMAGE
|
||||
self.rect = self.image.get_rect(center=pos)
|
||||
|
||||
def move(self, key):
|
||||
if key == pygame.K_UP and self.rect.y - size > 0:
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
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
|
||||
@ -69,17 +84,19 @@ for x in range(9):
|
||||
for y in range(9):
|
||||
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((187, 187), 'Grocery', 5), Shelf((300, 300), 'Explosive', 5),
|
||||
Shelf((500, 500), 'Electronic', 5), Shelf((400, 440), 'Builders', 5)]
|
||||
Shelf((640, 340), 'Explosive', 5), Shelf((565, 340), 'Explosive', 5), Shelf((490, 340), 'Explosive', 5), Shelf((415, 340), 'Explosive', 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])
|
||||
|
||||
Package_list = [
|
||||
generate_package(40, 40), generate_package(120, 120), generate_package(250, 250)
|
||||
generate_package(40, 40)
|
||||
]
|
||||
|
||||
running = True
|
||||
@ -91,6 +108,23 @@ while running:
|
||||
|
||||
if event.type == pygame.KEYDOWN:
|
||||
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))
|
||||
|
||||
@ -103,8 +137,6 @@ while running:
|
||||
for package in Package_list:
|
||||
screen.blit(package.image, package.rect)
|
||||
|
||||
|
||||
|
||||
pygame.display.update()
|
||||
|
||||
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 |