correction du bug de changement de direction qui permettait de faire un 180 degre en un deplacement, ce qui est interdit (cela provoquerai une mort instantanee)

This commit is contained in:
2025-10-17 00:24:17 +02:00
parent 62e6fa11c3
commit 97479a4f24
2 changed files with 7 additions and 4 deletions

View File

@@ -10,7 +10,7 @@ pub mod resources;
pub mod sound; pub mod sound;
pub mod visuals; pub mod visuals;
use crate::components::{Direction, GridPosition, Head}; use crate::components::{Direction, GridPosition, Head, PreviousPosition};
use crate::food_gen::food_spawn; use crate::food_gen::food_spawn;
use crate::movement::{change_direction, move_head}; use crate::movement::{change_direction, move_head};
@@ -43,7 +43,8 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
// on charge la tete du serpent a la position voulu // on charge la tete du serpent a la position voulu
commands.spawn(( commands.spawn((
Head, Head,
GridPosition::new(10, 10), GridPosition::new(0, 0),
PreviousPosition::new(0, 0),
Direction::new(Direction::Up), Direction::new(Direction::Up),
Sprite::from_image(asset_server.load("head.png")), Sprite::from_image(asset_server.load("head.png")),
Transform::from_xyz(0.0, 0.0, 1.0), Transform::from_xyz(0.0, 0.0, 1.0),

View File

@@ -40,11 +40,13 @@ pub fn change_direction(
pub fn move_head( pub fn move_head(
time: Res<Time>, time: Res<Time>,
mut timer: ResMut<MoveTimer>, mut timer: ResMut<MoveTimer>,
mut query_head: Query<(&mut GridPosition, &Direction), With<Head>>, mut query_head: Query<(&mut GridPosition, &mut PreviousPosition, &Direction), With<Head>>,
) { ) {
// si le timer atteint zero, la tete avance de 20 (la taille d'une case) dans la direction actuelle de la tete // si le timer atteint zero, la tete avance de 20 (la taille d'une case) dans la direction actuelle de la tete
if timer.0.tick(time.delta()).just_finished() { if timer.0.tick(time.delta()).just_finished() {
for (mut position, direction) in &mut query_head { for (mut position, mut previous_position, direction) in &mut query_head {
previous_position.x = position.x;
previous_position.y = position.y;
match direction { match direction {
Direction::Up => position.y += 20, Direction::Up => position.y += 20,
Direction::Down => position.y -= 20, Direction::Down => position.y -= 20,