core: split: game and pong

This commit is contained in:
2024-04-05 17:47:17 +02:00
parent c49e721e5a
commit f6f59f8ead
34 changed files with 965 additions and 784 deletions

View File

@ -2,14 +2,16 @@ from __future__ import annotations
from .. import config
from .Position import Position
from .Point import Point
import time
import math
class Ball:
def __init__(self) -> None:
self.size: float
self.position: Point
self.position: Position
self.angle: float
self.speed: float
@ -17,7 +19,7 @@ class Ball:
def reset(self) -> None:
self.size = config.BALL_SIZE
self.position = Point(config.BALL_SPAWN_POS_X + self.size / 2, config.BALL_SPAWN_POS_Y + self.size / 2)
self.position = Position(Point(config.BALL_SPAWN_POS_X + self.size / 2, config.BALL_SPAWN_POS_Y + self.size / 2), time.time())
self.angle = math.pi * 0.3
self.speed = config.BALL_SPEED_START

View File

@ -56,7 +56,7 @@ class Game(AbstractRoom):
polygon.append(Point(x, y))
segments: list[Point] = []
segments: list[Segment] = []
for i in range(nb_sides):
segments.append(Segment(polygon[i], polygon[(i + 1) % nb_sides]))
@ -66,7 +66,7 @@ class Game(AbstractRoom):
nb_players: int = len(players_id)
if (nb_players == 2):
self.players = [Player(self, players_id[0], None, segments[0]), Player(self, players_id[1], None, segments[2])]
self.walls = [Wall(segments[1]), Wall(segments[3])]
self.walls = [Wall(segments[1].start, segments[1].stop), Wall(segments[3].start, segments[3].stop)]
else:
self.players = []
self.walls = []

View File

@ -103,7 +103,7 @@ class Player(Spectator):
self.position = new_position
if (invalid_pos):
self.send("update_paddle", self.to_dict())
self.send("update_player", self.to_dict())
def connect(self, socket: WebsocketConsumer):
self.socket = socket
@ -129,13 +129,13 @@ class Player(Spectator):
data = {
"username": self.username,
"user_id": self.user_id,
"id": self.user_id,
"position": self.position.to_dict(),
"score": [*self.score],
"rail": self.rail.to_dict(),
"is_connected": self.is_connected(),
"isConnected": self.is_connected(),
}
return data

View File

@ -1,22 +1,27 @@
from __future__ import annotations
from .Point import Point
class Position:
def __init__(self, position = 0, time: int = 0) -> None:
def __init__(self, location: int | Point = 0, time: int = 0) -> None:
self.time = time
self.position = position
self.location = location
def copy(self):
return Position(self.position, self.time)
return Position(self.location, self.time)
def to_dict(self):
data: dict = {
"position": self.position,
"time": self.time,
}
try:
data.update({"location": self.location.to_dict()})
except:
data.update({"location": self.location})
return data
def __eq__(self, __value: Position) -> bool:
return (self.position == __value.position)
return (self.location == __value.location)

View File

@ -19,7 +19,7 @@ class Spectator(AbstractRoomMember):
self.game: Game = game
def send_paddle(self, player: Player):
self.send("update_paddle", player.to_dict())
self.send("update_player", player.to_dict())
def send_ball(self, ball: Ball):
self.send("update_ball", ball.to_dict())

View File

@ -1,15 +1,5 @@
from .Segment import Segment
class Wall:
def __init__(self, rail: Segment) -> None:
self.rail: Segment = rail
def to_dict(self) -> dict[str: dict]:
data = {
"rail": self.rail.to_dict(),
}
return data
class Wall(Segment):
pass