game: add: speed increment

This commit is contained in:
starnakin 2024-02-21 15:45:21 +01:00
parent dea718320c
commit c7cd9202f4
2 changed files with 6 additions and 5 deletions

View File

@ -11,7 +11,7 @@ MAP_CENTER_Y = MAP_SIZE_Y / 2
WALL_RATIO = 1 WALL_RATIO = 1
BALL_SPEED_INC = 1 BALL_SPEED_INC = 50
BALL_SPEED_START = 170 BALL_SPEED_START = 170
BALL_SIZE = 4 BALL_SIZE = 4
BALL_SPAWN_POS_X = MAP_SIZE_X / 2 BALL_SPAWN_POS_X = MAP_SIZE_X / 2

View File

@ -110,7 +110,7 @@ def get_interception(segment1: Segment, segment2: Segment):
return impact return impact
def get_impact_point(segments: list[Segment], ball: Ball) -> dict: def get_impact_data(segments: list[Segment], ball: Ball) -> dict:
cos: float = round(math.cos(ball.angle), 6) cos: float = round(math.cos(ball.angle), 6)
sin: float = round(math.sin(ball.angle), 6) sin: float = round(math.sin(ball.angle), 6)
@ -224,14 +224,15 @@ async def collision(game: Game, impact_data: dict) -> bool:
if (player_hitted is None): if (player_hitted is None):
angle = wall_collision(game.ball.angle, surface_angle) angle = wall_collision(game.ball.angle, surface_angle)
else: else:
angle = await paddle_collision(game.ball, impact_data.get("impact"), player_hitted, impact_data.get("inc_x"), impact_data.get("inc_y")) angle = await paddle_collision(game.ball, impact_data.get("impact"), player_hitted, impact_data.get("inc_x"), impact_data.get("inc_y"))
if (angle is None): if (angle is None):
return False return False
game.ball.speed += config.BALL_SPEED_INC
game.ball.angle = angle game.ball.angle = angle
return True return True
async def update_ball(game: Game, impact_data: dict) -> None: async def update_ball(game: Game, impact_data: dict) -> None:
@ -245,7 +246,7 @@ async def update_ball(game: Game, impact_data: dict) -> None:
hit: bool = await collision(game, impact_data) hit: bool = await collision(game, impact_data)
if (hit == False): if (hit == False):
await asyncio.sleep(0.1) await asyncio.sleep(0.1) # delay to create frontend animation
game.ball.reset() game.ball.reset()
else: else:
game.ball.position = impact_data.get("impact") game.ball.position = impact_data.get("impact")
@ -258,7 +259,7 @@ async def render(game: Game):
segments: list[Segment] = [player.rail for player in game.players] + [wall.rail for wall in game.walls] segments: list[Segment] = [player.rail for player in game.players] + [wall.rail for wall in game.walls]
impact_data: dict = get_impact_point(segments, game.ball) impact_data: dict = get_impact_data(segments, game.ball)
await update_ball(game, impact_data) await update_ball(game, impact_data)