From a732c83f0527707d5bdf7f2ee7bc26eb1f724313 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Sura=C5=BCy=C5=84ski?= Date: Sat, 13 Mar 2021 19:04:01 +0100 Subject: [PATCH] Init - base stuff --- .gitignore | 2 + assets/garbage-truck.png | Bin 0 -> 3795 bytes assets/trashes/can.png | Bin 0 -> 4068 bytes assets/trashes/plastic-bottle.png | Bin 0 -> 2432 bytes requirments.txt | 2 + src/main.py | 133 ++++++++++++++++++++++++++++++ 6 files changed, 137 insertions(+) create mode 100644 .gitignore create mode 100644 assets/garbage-truck.png create mode 100644 assets/trashes/can.png create mode 100644 assets/trashes/plastic-bottle.png create mode 100644 requirments.txt create mode 100644 src/main.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..82195aa --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +venv +.idea \ No newline at end of file diff --git a/assets/garbage-truck.png b/assets/garbage-truck.png new file mode 100644 index 0000000000000000000000000000000000000000..aad13847d5a1b1e0fb23cc193e6d8bf0d64e876b GIT binary patch literal 3795 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 literal 0 HcmV?d00001 diff --git a/requirments.txt b/requirments.txt new file mode 100644 index 0000000..cd9b26e --- /dev/null +++ b/requirments.txt @@ -0,0 +1,2 @@ +pkg-resources==0.0.0 +pygame==2.0.1 diff --git a/src/main.py b/src/main.py new file mode 100644 index 0000000..f2b13b6 --- /dev/null +++ b/src/main.py @@ -0,0 +1,133 @@ +import os +import random +import time +import threading + +import pygame + +FPS = 60 + +WINDOW_HEIGHT = 720 +WINDOW_WIDTH = 1280 +PADDING = 64 + +DEFAULT_ASSET_SIZE = 128 + +TRASHES_COUNT = 4 + +WHITE_COLOR = (255, 255, 255) + +TRASH_BOTTLE = "TRASH_BOTTLE" +TRASH_CAN = "TRASH_CAN" + + +class Trash: + def __init__(self): + self.generate_random_trash() + self.get_random_coordinates() + + def generate_random_trash(self): + random_index = random.randint(1, 2) + + if random_index == 1: + self.type = TRASH_BOTTLE + asset_path = os.path.join(os.path.dirname(__file__), '..', 'assets', 'trashes', 'plastic-bottle.png') + else: + self.type = TRASH_CAN + asset_path = os.path.join(os.path.dirname(__file__), '..', 'assets', 'trashes', 'can.png') + + self.asset = pygame.image.load(asset_path) + coordinates = self.get_random_coordinates() + self.object = pygame.Rect(coordinates["x"], coordinates["y"], DEFAULT_ASSET_SIZE, DEFAULT_ASSET_SIZE) + + def get_random_coordinates(self): + return { + "x": random.randint(PADDING, WINDOW_WIDTH - PADDING), + "y": random.randint(PADDING, WINDOW_HEIGHT - PADDING) + } + + +class Truck: + def __init__(self): + asset_path = os.path.join(os.path.dirname(__file__), '..', 'assets', 'garbage-truck.png') + self.asset = pygame.image.load(asset_path) + self.object = pygame.Rect(WINDOW_WIDTH // 2, WINDOW_HEIGHT // 2, DEFAULT_ASSET_SIZE, DEFAULT_ASSET_SIZE) + self.velocity = 5 + + def move_up(self): + self.object.y -= self.velocity + + def move_down(self): + self.object.y += self.velocity + + def move_right(self): + self.object.x += self.velocity + + def move_left(self): + self.object.x -= self.velocity + + +class Environment: + def __init__(self): + self.truck = Truck() + self.run = True + self.clock = pygame.time.Clock() + self.WINDOW = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) + self.trashes_list = [] + self.generate_trashes(TRASHES_COUNT) + self.trashes_collected = [] + + while self.run: + self.clock.tick(FPS) + for event in pygame.event.get(): + if event.type == pygame.QUIT: + self.run = False + + self.keys_pressed = pygame.key.get_pressed() + self.draw_objects() + self.handle_keyboard() + self.handle_collisions() + + def draw_objects(self): + self.WINDOW.fill(WHITE_COLOR) + self.draw_trashes() + self.WINDOW.blit(self.truck.asset, (self.truck.object.x, self.truck.object.y)) + pygame.display.update() + + def draw_trashes(self): + for trash in self.trashes_list: + self.WINDOW.blit(trash.asset, (trash.object.x, trash.object.y)) + + def handle_keyboard(self): + if self.keys_pressed[pygame.K_w]: + self.truck.move_up() + if self.keys_pressed[pygame.K_s]: + self.truck.move_down() + if self.keys_pressed[pygame.K_d]: + self.truck.move_right() + if self.keys_pressed[pygame.K_a]: + self.truck.move_left() + + def generate_trashes(self, count): + for i in range(count): + trash = Trash() + self.WINDOW.blit(trash.asset, (trash.object.x, trash.object.y)) + self.trashes_list.append(trash) + + def add_trashes(self): + time.sleep(1) + trash = Trash() + self.WINDOW.blit(trash.asset, (trash.object.x, trash.object.y)) + self.trashes_list.append(trash) + + def handle_collisions(self): + for trash in self.trashes_list: + if self.truck.object.colliderect(trash.object): + self.trashes_collected.append(trash) + self.trashes_list.remove(trash) + timer = threading.Thread(target=self.add_trashes) + timer.daemon = True + timer.start() + + +environment = Environment()