Réglage du suicide de l'IA (#24)

Reviewed-on: #24
Reviewed-by: Corentin <solois.corentin@gmail.com>
Co-authored-by: Tipragot <contact@tipragot.fr>
Co-committed-by: Tipragot <contact@tipragot.fr>
This commit is contained in:
Tipragot 2024-01-07 10:43:03 +00:00 committed by Corentin
parent 9d80531c2f
commit 0a2a2dda2f
2 changed files with 24 additions and 5 deletions

View file

@ -173,6 +173,10 @@ def move_entity(entity: Entity, movement: Vec2, disable_callback: bool = False):
if normal.y != 0:
movement.y *= -1
entity[Velocity].y *= -1
if entity[Velocity].x == 0:
entity[Velocity].x = 0.01
if entity[Velocity].y == 0:
entity[Velocity].y = 0.01
movement /= entity[Velocity]
if obstacle is not None and not disable_callback:
if not entity.get(
@ -183,6 +187,10 @@ def move_entity(entity: Entity, movement: Vec2, disable_callback: bool = False):
CollisionHandler, CollisionHandler(lambda e, o: True)
).callback(obstacle, entity):
break
if entity[Velocity].x == 0:
entity[Velocity].x = 0.01
if entity[Velocity].y == 0:
entity[Velocity].y = 0.01
movement *= entity[Velocity]
counter += 1

View file

@ -264,9 +264,9 @@ def __spawn_ellements(world: World):
SpriteBundle(
"player_1.png",
0,
Vec2(100, render.HEIGHT / 2),
Vec2(125, render.HEIGHT / 2),
Vec2(44, 250),
Vec2(0.5),
Vec2(1, 0.5),
),
Solid(),
Player1(),
@ -282,9 +282,9 @@ def __spawn_ellements(world: World):
SpriteBundle(
"player_2.png",
0,
Vec2(render.WIDTH - 100, render.HEIGHT / 2),
Vec2(render.WIDTH - 125, render.HEIGHT / 2),
Vec2(44, 250),
Vec2(0.5),
Vec2(0, 0.5),
),
Solid(),
Player2(),
@ -538,11 +538,19 @@ def _update_bot(world: World):
player = world.query(Player1).pop()
# On trouve l'endroit ou la balle va arriver sur le mur de droite
for entity in world.query(RightWall):
entity[Position].x -= 125
for entity in world.query(LeftWall):
entity[Position].x += 125
bot.remove(Solid)
right_wall_ball = __simulate_wall_position(ball, RightWall)
right_touch_height = right_wall_ball[Position].y
right_wall_ball.destroy()
bot.set(Solid())
for entity in world.query(RightWall):
entity[Position].x += 125
for entity in world.query(LeftWall):
entity[Position].x -= 125
# On teste différentes possitions pour voir laquelle la plus éloigné du joueur
# Mais seulement si la balle vas vers la droite car sinon elle touchera le mur
@ -551,7 +559,10 @@ def _update_bot(world: World):
bot_base_y = bot[Position].y
target: float = right_touch_height
better_distance = None
for offset in [-100, -50, 0, 50, 100]:
offsets = [-100, -50, 0, 50, 100]
if bot[Scale].y > 250:
offsets = [-200, -100, -50, 0, 50, 100, 200]
for offset in offsets:
bot[Position].y = right_touch_height + offset
__restrict_to_scene(world)
player.remove(Solid)