core: split: game and pong
This commit is contained in:
@ -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
|
||||
|
||||
|
@ -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 = []
|
||||
|
@ -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
|
@ -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)
|
@ -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())
|
||||
|
@ -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
|
Reference in New Issue
Block a user