Add initial game structure with entity, player, and screen management

This commit is contained in:
2026-06-22 15:37:48 +02:00
parent 8990579e06
commit 04a83c5cc2
6 changed files with 109 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
{
"python-envs.defaultEnvManager": "ms-python.python:venv"
}
+41
View File
@@ -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):...
+21
View File
@@ -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()
+9
View File
@@ -0,0 +1,9 @@
import pygame
from game import Game
pygame.init()
game = Game()
game.run()
pygame.quit()
+26
View File
@@ -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
+9
View File
@@ -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