From 853b025a847a478454b013af1138683ee10a36b0 Mon Sep 17 00:00:00 2001 From: Pawel Felcyn Date: Sun, 12 Mar 2023 16:47:18 +0100 Subject: [PATCH] add stick man movement --- gameContext.py | 9 ++++++++- gameEventHandler.py | 21 ++++++++++++++++++--- main.py | 11 +++++++---- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/gameContext.py b/gameContext.py index c20844b..927dfd7 100644 --- a/gameContext.py +++ b/gameContext.py @@ -1,5 +1,12 @@ +import pygame + class GameContext: + dust_car_speed = 20 dust_car_position_x = 0 dust_car_position_y = 0 stick_man_pygame = None - canvas = None \ No newline at end of file + stick_man_pil = None + canvas = None + +def startup(game_context: GameContext): + game_context.canvas.blit(game_context.stick_man_pygame, (game_context.dust_car_position_x, game_context.dust_car_position_y)) diff --git a/gameEventHandler.py b/gameEventHandler.py index a8aa404..6014365 100644 --- a/gameEventHandler.py +++ b/gameEventHandler.py @@ -2,8 +2,23 @@ import pygame from gameContext import GameContext def handle_game_event(event, game_context: GameContext): - update_canvas(game_context) + dust_car_movement(event, game_context) return -def update_canvas(game_context: GameContext): - game_context.canvas.blit(game_context.stick_man_pygame, (game_context.dust_car_position_x, game_context.dust_car_position_y)) \ No newline at end of file +def dust_car_movement(event, game_context:GameContext): + if event.type != pygame.KEYDOWN: + return + (width, height) = game_context.stick_man_pil.size + if event.key == pygame.K_LEFT: + pygame.draw.rect(game_context.canvas, (0, 0, 0), (game_context.dust_car_position_x, game_context.dust_car_position_y, width, height)) + game_context.dust_car_position_x -= game_context.dust_car_speed + elif event.key == pygame.K_RIGHT: + pygame.draw.rect(game_context.canvas, (0, 0, 0), (game_context.dust_car_position_x, game_context.dust_car_position_y, width, height)) + game_context.dust_car_position_x += game_context.dust_car_speed + elif event.key == pygame.K_UP: + pygame.draw.rect(game_context.canvas, (0, 0, 0), (game_context.dust_car_position_x, game_context.dust_car_position_y, width, height)) + game_context.dust_car_position_y -= game_context.dust_car_speed + elif event.key == pygame.K_DOWN: + pygame.draw.rect(game_context.canvas, (0, 0, 0), (game_context.dust_car_position_x, game_context.dust_car_position_y, width, height)) + game_context.dust_car_position_y += game_context.dust_car_speed + game_context.canvas.blit(game_context.stick_man_pygame, (game_context.dust_car_position_x, game_context.dust_car_position_y)) diff --git a/main.py b/main.py index 62cfd84..e0ff939 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,7 @@ import pygame from gameEventHandler import handle_game_event from gameContext import GameContext +from gameContext import startup from PIL import Image pygame.init() @@ -10,9 +11,11 @@ canvas = pygame.display.set_mode((800, 800)) pygame.display.set_caption("Inteligentna śmieciarka") stick_man_pil = Image.open('imgs/sickMan.jpg') -gameContext = GameContext() -gameContext.stick_man_pygame = pygame.image.frombuffer(stick_man_pil.tobytes(), stick_man_pil.size, 'RGB') -gameContext.canvas = canvas +game_context = GameContext() +game_context.stick_man_pil = stick_man_pil +game_context.stick_man_pygame = pygame.image.frombuffer(stick_man_pil.tobytes(), stick_man_pil.size, 'RGB') +game_context.canvas = canvas +startup(game_context) exit = False @@ -22,6 +25,6 @@ while not exit: if event.type == pygame.QUIT: exit = True else: - handle_game_event(event, gameContext) + handle_game_event(event, game_context) pygame.display.update() \ No newline at end of file