added agent functionalities

This commit is contained in:
SaluSL 2021-03-29 15:17:42 +02:00
parent 22d5772a0a
commit 87f27dac52
13 changed files with 46 additions and 14 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
src/img/dock_left.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
src/img/package_grocery.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

@ -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()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 307 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB