diff --git a/game/src/combat.rs b/game/src/combat.rs
index a4b06b6f07e75471884d6fda5b04933a07219ff3..5c39bb1587d6b92c58b7bcea63d738d3b34e260d 100644
--- a/game/src/combat.rs
+++ b/game/src/combat.rs
@@ -14,14 +14,12 @@ impl Plugin for CombatPlugin {
         app.add_systems(Update, button_system);
         app.add_state::<CombatState>();
         app.add_systems(OnEnter(CombatState::ETurn), enemy_attack);
-        app.add_systems(OnEnter(CombatState::PTurn), player_attack);
         app.add_systems(Update, combat_outcome);
         app.add_systems(OnExit(GameState::Combat), exit_combat);
+        app.add_systems(OnEnter(CombatState::PrepareAttack), update_hp);
     }
 }
 
-static ATTACKNO: AtomicUsize = AtomicUsize::new(0);
-
 #[derive(Clone, Copy, Default, Eq, PartialEq, Debug, Hash, States)]
 pub enum CombatState {
     #[default]
@@ -46,13 +44,17 @@ const PRESSED_BUTTON: Color = Color::rgb(0.35, 0.75, 0.35);
 #[derive(Component)]
 struct OnMainCombat;
 
+#[derive(Component)]
+struct CombatText;
+
 pub fn spawn_combat(
     mut commands: Commands,
     asset_server: Res<AssetServer>,
     window_query: Query<&mut Window, With<PrimaryWindow>>,
-    player_query: Query<(&mut Transform, &Player)>,
+    player_query: Query<(&Player)>,
+    enemy_query: Query<&Enemy>,
 ) {
-    let player = player_query.get_single().unwrap();
+    let players = player_query.get_single();
     let button_style = Style {
         width: Val::Px(150.0),
         height: Val::Px(65.0),
@@ -65,14 +67,9 @@ pub fn spawn_combat(
     };
 
     let window = window_query.get_single().unwrap();
-
+    //spawn combat assets
     commands.spawn((
         SpriteBundle {
-            // sprite: Sprite {
-            //     color: Color::rgb(0.0, 0.0, 0.0),
-            //     custom_size: Some(Vec2::new(window.width(), window.height())),
-            //     ..default()
-            // },
             transform: Transform {
                 translation: Vec3 {
                     z: 3.0,
@@ -115,7 +112,7 @@ pub fn spawn_combat(
         },
         OnMainCombat,
     ));
-
+    //spawn combat ui
     commands
         .spawn((
             NodeBundle {
@@ -149,23 +146,71 @@ pub fn spawn_combat(
                     ..default()
                 })
                 .with_children(|parent| {
-                    for capacite in &player.1.moveset {
-                        parent
-                            .spawn((
-                                ButtonBundle {
-                                    style: button_style.clone(),
-                                    background_color: NORMAL_BUTTON.into(),
+                    if let Ok(player) = players {
+                        for capacite in &player.moveset {
+                            parent
+                                .spawn((
+                                    ButtonBundle {
+                                        style: button_style.clone(),
+                                        background_color: NORMAL_BUTTON.into(),
+                                        ..default()
+                                    },
+                                    BTNACTION[i],
+                                ))
+                                .with_children(|parent| {
+                                    parent.spawn(TextBundle::from_section(
+                                        &capacite.name,
+                                        TextStyle { ..default() },
+                                    ));
+                                });
+                            i += 1;
+                        }
+                    }
+                })
+                .with_children(|parent| {
+                    if let Ok(player) = players {
+                        parent.spawn((
+                            TextBundle {
+                                text: Text {
+                                    sections: vec![TextSection {
+                                        value: format!("HP Player {}", player.hp),
+                                        style: TextStyle {
+                                            color: Color::GREEN,
+                                            font_size: 20.0,
+                                            ..default()
+                                        },
+                                        ..default()
+                                    }],
                                     ..default()
                                 },
-                                BTNACTION[i],
-                            ))
-                            .with_children(|parent| {
-                                parent.spawn(TextBundle::from_section(
-                                    &capacite.name,
-                                    TextStyle { ..default() },
-                                ));
-                            });
-                        i += 1;
+                                ..default()
+                            },
+                            CombatText,
+                        ));
+                    }
+                })
+                .with_children(|parent| {
+                    for enemy in &enemy_query {
+                        if enemy.tag == true {
+                            parent.spawn((
+                                TextBundle {
+                                    text: Text {
+                                        sections: vec![TextSection {
+                                            value: format!("HP Enemy {}", enemy.hp),
+                                            style: TextStyle {
+                                                color: Color::RED,
+                                                font_size: 20.0,
+                                                ..default()
+                                            },
+                                            ..default()
+                                        }],
+                                        ..default()
+                                    },
+                                    ..default()
+                                },
+                                CombatText,
+                            ));
+                        }
                     }
                 });
         });
@@ -184,28 +229,41 @@ fn button_system(
     >,
     mut text_query: Query<&mut Text>,
     mut combat_state: ResMut<NextState<CombatState>>,
+    mut players: Query<&mut Player>,
+    mut enemies: Query<&mut Enemy>,
 ) {
     for (interaction, mut color, mut border_color, children, btnaction) in &mut interaction_query {
         let mut text = text_query.get_mut(children[0]).unwrap();
         match *interaction {
             Interaction::Pressed => {
-                match btnaction {
-                    BtnAction::Cap1 => {
-                        ATTACKNO.store(0, Ordering::Relaxed);
-                        println!("button cap1 pressed");
-                        combat_state.set(CombatState::PTurn);
-                    }
-                    BtnAction::Cap2 => {
-                        ATTACKNO.store(1, Ordering::Relaxed);
-                        combat_state.set(CombatState::PTurn);
-                    }
-                    BtnAction::Cap3 => {
-                        ATTACKNO.store(2, Ordering::Relaxed);
-                        combat_state.set(CombatState::PTurn);
-                    }
-                    BtnAction::Cap4 => {
-                        ATTACKNO.store(3, Ordering::Relaxed);
-                        combat_state.set(CombatState::PTurn);
+                for mut enemy in &mut enemies {
+                    println!("enemy tag is{}", enemy.tag);
+                    if enemy.tag == true {
+                        for player in &players {
+                            match btnaction {
+                                BtnAction::Cap1 => {
+                                    println!("button cap1 pressed");
+                                    enemy.hp -= player.moveset[0].degat;
+                                    println!("enemi prend {} degat", player.moveset[0].degat);
+                                }
+                                BtnAction::Cap2 => {
+                                    println!("button cap1 pressed");
+                                    enemy.hp -= player.moveset[1].degat;
+                                    println!("enemi prend {} degat", player.moveset[1].degat);
+                                }
+                                BtnAction::Cap3 => {
+                                    println!("button cap1 pressed");
+                                    enemy.hp -= player.moveset[2].degat;
+                                    println!("enemi prend {} degat", player.moveset[2].degat);
+                                }
+                                BtnAction::Cap4 => {
+                                    println!("button cap1 pressed");
+                                    enemy.hp -= player.moveset[3].degat;
+                                    println!("enemi prend {} degat", player.moveset[0].degat);
+                                }
+                            }
+                        }
+                        combat_state.set(CombatState::ETurn);
                     }
                 }
                 *color = PRESSED_BUTTON.into();
@@ -223,41 +281,49 @@ fn button_system(
     }
 }
 
-fn player_attack(
-    mut enemies: Query<(&mut Enemy)>,
-    mut players: Query<(&Player)>,
+fn enemy_attack(
+    mut enemies: Query<(&Enemy)>,
+    mut players: Query<(&mut Player)>,
     mut combat_state: ResMut<NextState<CombatState>>,
 ) {
-    println!("entered player_attack()");
-    for mut enemy in &mut enemies {
-        println!("enemy tag is{}", enemy.tag);
+    for (mut enemy) in &enemies {
         if enemy.tag == true {
-            for player in &players {
-                enemy.hp -= player.moveset[ATTACKNO.load(Ordering::Relaxed)].degat;
+            for (mut player) in &mut players {
+                player.hp -= enemy.nbdegat;
                 println!(
-                    "enemi prend {} degat",
-                    player.moveset[ATTACKNO.load(Ordering::Relaxed)].degat
+                    "joueur prend {} degats, joueur a {} hp",
+                    enemy.nbdegat, player.hp
                 );
             }
         }
     }
-    combat_state.set(CombatState::ETurn);
+    combat_state.set(CombatState::PrepareAttack);
 }
 
-fn enemy_attack(
-    mut enemies: Query<(&Enemy)>,
-    mut players: Query<(&mut Player)>,
-    mut combat_state: ResMut<NextState<CombatState>>,
+fn update_hp(
+    enemies: Query<&Enemy>,
+    players: Query<&Player>,
+    mut entity_hp: Query<(&mut Text, &CombatText)>,
 ) {
-    for (mut enemy) in &enemies {
-        if enemy.tag == true {
-            for (mut player) in &mut players {
-                player.hp -= enemy.nbdegat;
-                println!("joueur prend {} degats", enemy.nbdegat);
+    for (mut ehp, et) in &mut entity_hp {
+        for player in &players {
+            for enemy in &enemies {
+                if enemy.tag == true {
+                    if ehp.sections[0].style.color == Color::RED {
+                        ehp.sections[0].value = format!("Enemy HP: {}", enemy.hp);
+                    } else {
+                        ehp.sections[0].value = format!("Player HP: {}", player.hp);
+                    }
+                    println!("enemy hp is {}", enemy.hp);
+                }
             }
         }
     }
-    combat_state.set(CombatState::PrepareAttack);
+    //for (mut php, pt) in &mut player_hp {
+    //    for player in &players {
+    //        php.sections[0].value = format!("Player HP: {}", player.hp);
+    //    }
+    //}
 }
 
 fn combat_outcome(
@@ -284,8 +350,13 @@ fn combat_outcome(
     }
 }
 
-fn exit_combat(mut combat_ui: Query<(Entity, &Transform, &OnMainCombat)>, mut commands: Commands) {
+fn exit_combat(
+    mut combat_ui: Query<(Entity, &Transform, &OnMainCombat)>,
+    mut commands: Commands,
+    mut game_state: ResMut<NextState<GameState>>,
+) {
     for (ui_id, _transform, _onmaincombat) in &combat_ui {
         commands.entity(ui_id).despawn_recursive();
     }
+    game_state.set(GameState::GameOver);
 }
diff --git a/game/src/main.rs b/game/src/main.rs
index f2f9259ebb2b02613416614cb608c303250e0822..436a7bbc27032ba77eccfdcff66f90cd41b80364 100644
--- a/game/src/main.rs
+++ b/game/src/main.rs
@@ -33,6 +33,7 @@ pub enum GameState {
     #[default]
     Overworld,
     Combat,
+    GameOver,
 }
 fn setup(mut commands: Commands) {
     commands.spawn(Camera2dBundle::default());