From 04a83c5cc266b4c166c0c0849b5bc095a9bcb7a3 Mon Sep 17 00:00:00 2001 From: popkex Date: Mon, 22 Jun 2026 15:37:48 +0200 Subject: [PATCH] Add initial game structure with entity, player, and screen management --- .vscode/settings.json | 3 +++ src/entity.py | 41 +++++++++++++++++++++++++++++++++++++++++ src/game.py | 21 +++++++++++++++++++++ src/main.py | 9 +++++++++ src/player.py | 26 ++++++++++++++++++++++++++ src/screen.py | 9 +++++++++ 6 files changed, 109 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 src/entity.py create mode 100644 src/game.py create mode 100644 src/main.py create mode 100644 src/player.py create mode 100644 src/screen.py diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..cc081ee --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python-envs.defaultEnvManager": "ms-python.python:venv" +} \ No newline at end of file diff --git a/src/entity.py b/src/entity.py new file mode 100644 index 0000000..4c89fb3 --- /dev/null +++ b/src/entity.py @@ -0,0 +1,41 @@ +"""Entité générique comme le joueur ou la balle""" +import pygame +from typing import Tuple +from dataclasses import dataclass +from screen import Screen + +@dataclass +class Pos: + x: int + y: int + +@dataclass +class Velocity: + x: float + y: float + +@dataclass +class Entity: + name: str + pos: Pos + velocity: Velocity + image: pygame.Surface + + screen_manager: Screen + screen: pygame.Surface + + def __init__(self, name:str, origin:Tuple[int, int], image:pygame.Surface, screen_manager:Screen): + self.name:str = name + self.pos = Pos(*origin) + self.velocity = Velocity(0, 0) + + self.image: pygame.Surface = image + self.screen_manager = screen_manager + self.screen: pygame.Surface = screen_manager.get_screen() + + def apply_move(self): + self.pos.x += int(self.velocity.x) + self.pos.y += int(self.velocity.y) + + def draw(self):... + def move(self, event:pygame.event.Event):... \ No newline at end of file diff --git a/src/game.py b/src/game.py new file mode 100644 index 0000000..b73aa63 --- /dev/null +++ b/src/game.py @@ -0,0 +1,21 @@ +import pygame +from screen import Screen +from player import Player + +class Game: + def __init__(self): + self.screen_manager = Screen() + self.screen = self.screen_manager.get_screen() + + self.running = True + + self.player = Player(self.screen_manager) + + def run(self): + while (self.running): + for event in pygame.event.get(): + if event.type == pygame.QUIT: + self.running = False + + self.player.draw() + pygame.display.flip() \ No newline at end of file diff --git a/src/main.py b/src/main.py new file mode 100644 index 0000000..5bdcb9d --- /dev/null +++ b/src/main.py @@ -0,0 +1,9 @@ +import pygame +from game import Game + +pygame.init() + +game = Game() +game.run() + +pygame.quit() \ No newline at end of file diff --git a/src/player.py b/src/player.py new file mode 100644 index 0000000..c94b06c --- /dev/null +++ b/src/player.py @@ -0,0 +1,26 @@ +import pygame +from entity import Entity +from screen import Screen + +class Player(Entity): + def __init__(self, screen_manager: Screen): + size = (150, 5) + color_player = (255, 255, 255, 255) + + image:pygame.Surface = pygame.Surface(size) + image.fill(color_player) + + super().__init__("Player", (50, 50), image, screen_manager) + + def draw(self): + self.screen.blit(self.image, (self.pos.x, self.pos.y)) + + def move(self, event:pygame.event.Event): + if (event.key == pygame.K_z or event.key == pygame.K_UP): + pass + if (event.key == pygame.K_s or event.key == pygame.K_DOWN): + pass + if (event.key == pygame.K_q or event.key == pygame.K_LEFT): + pass + if (event.key == pygame.K_d or event.key == pygame.K_RIGHT): + pass \ No newline at end of file diff --git a/src/screen.py b/src/screen.py new file mode 100644 index 0000000..8f5b405 --- /dev/null +++ b/src/screen.py @@ -0,0 +1,9 @@ +import pygame + +class Screen: + def __init__(self): + self.screen = pygame.display.set_mode((1080, 720)) + pygame.display.set_caption("Pong") + + def get_screen(self): + return self.screen \ No newline at end of file