diff --git a/game/Cargo.lock b/game/Cargo.lock
index 1ee3696e3a1240ca4be8b5d413abd7a754451481..b06f418b7e05548f7e8662ca32c6dfff5f1f8409 100644
--- a/game/Cargo.lock
+++ b/game/Cargo.lock
@@ -354,7 +354,7 @@ dependencies = [
  "fastrand 1.9.0",
  "js-sys",
  "notify",
- "parking_lot 0.12.1",
+ "parking_lot",
  "serde",
  "thiserror",
  "wasm-bindgen",
@@ -378,7 +378,7 @@ dependencies = [
  "bevy_transform",
  "bevy_utils",
  "oboe",
- "parking_lot 0.12.1",
+ "parking_lot",
  "rodio",
 ]
 
@@ -712,7 +712,7 @@ dependencies = [
  "erased-serde",
  "glam",
  "once_cell",
- "parking_lot 0.12.1",
+ "parking_lot",
  "serde",
  "smallvec",
  "smol_str",
@@ -770,7 +770,7 @@ dependencies = [
  "ktx2",
  "naga",
  "naga_oil",
- "parking_lot 0.12.1",
+ "parking_lot",
  "regex",
  "ruzstd",
  "serde",
@@ -1321,7 +1321,7 @@ dependencies = [
  "ndk-context",
  "oboe",
  "once_cell",
- "parking_lot 0.12.1",
+ "parking_lot",
  "wasm-bindgen",
  "wasm-bindgen-futures",
  "web-sys",
@@ -1485,7 +1485,7 @@ checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"
 dependencies = [
  "cfg-if",
  "libc",
- "redox_syscall 0.3.5",
+ "redox_syscall",
  "windows-sys 0.48.0",
 ]
 
@@ -1567,6 +1567,7 @@ name = "game"
 version = "0.1.0"
 dependencies = [
  "bevy",
+ "rand",
 ]
 
 [[package]]
@@ -2462,7 +2463,7 @@ version = "0.3.46"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8378ac0dfbd4e7895f2d2c1f1345cab3836910baf3a300b000d04250f0c8428f"
 dependencies = [
- "redox_syscall 0.3.5",
+ "redox_syscall",
 ]
 
 [[package]]
@@ -2486,17 +2487,6 @@ version = "2.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067"
 
-[[package]]
-name = "parking_lot"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99"
-dependencies = [
- "instant",
- "lock_api",
- "parking_lot_core 0.8.6",
-]
-
 [[package]]
 name = "parking_lot"
 version = "0.12.1"
@@ -2504,21 +2494,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
 dependencies = [
  "lock_api",
- "parking_lot_core 0.9.8",
-]
-
-[[package]]
-name = "parking_lot_core"
-version = "0.8.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
-dependencies = [
- "cfg-if",
- "instant",
- "libc",
- "redox_syscall 0.2.16",
- "smallvec",
- "winapi",
+ "parking_lot_core",
 ]
 
 [[package]]
@@ -2529,7 +2505,7 @@ checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
 dependencies = [
  "cfg-if",
  "libc",
- "redox_syscall 0.3.5",
+ "redox_syscall",
  "smallvec",
  "windows-targets 0.48.5",
 ]
@@ -2596,6 +2572,12 @@ dependencies = [
  "unicode-xid",
 ]
 
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
 [[package]]
 name = "proc-macro-crate"
 version = "1.3.1"
@@ -2636,6 +2618,36 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "17fd96390ed3feda12e1dfe2645ed587e0bea749e319333f104a33ff62f77a0b"
 
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
 [[package]]
 name = "range-alloc"
 version = "0.1.3"
@@ -2654,15 +2666,6 @@ version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb"
 
-[[package]]
-name = "redox_syscall"
-version = "0.2.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
-dependencies = [
- "bitflags 1.3.2",
-]
-
 [[package]]
 name = "redox_syscall"
 version = "0.3.5"
@@ -3292,7 +3295,7 @@ dependencies = [
  "js-sys",
  "log",
  "naga",
- "parking_lot 0.11.2",
+ "parking_lot",
  "profiling",
  "raw-window-handle",
  "smallvec",
@@ -3317,7 +3320,7 @@ dependencies = [
  "codespan-reporting",
  "log",
  "naga",
- "parking_lot 0.11.2",
+ "parking_lot",
  "profiling",
  "raw-window-handle",
  "rustc-hash",
@@ -3356,7 +3359,7 @@ dependencies = [
  "metal",
  "naga",
  "objc",
- "parking_lot 0.11.2",
+ "parking_lot",
  "profiling",
  "range-alloc",
  "raw-window-handle",
@@ -3642,7 +3645,7 @@ dependencies = [
  "orbclient",
  "percent-encoding",
  "raw-window-handle",
- "redox_syscall 0.3.5",
+ "redox_syscall",
  "wasm-bindgen",
  "wayland-scanner",
  "web-sys",
diff --git a/game/Cargo.toml b/game/Cargo.toml
index cf168c635497a9a6a897d4686aa8b177ab411b69..553af2ec4fce778e8a9540db206642001e94116c 100644
--- a/game/Cargo.toml
+++ b/game/Cargo.toml
@@ -7,6 +7,7 @@ edition = "2021"
 
 [dependencies]
 bevy = "0.11.3"
+rand = "0.8"
 
 # Enable a small amount of optimization in debug mode
 [profile.dev]
diff --git a/game/assets/FiraSans-Bold.ttf b/game/assets/FiraSans-Bold.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..e3593fb0f3bd412542237820f34fbe74308bfada
Binary files /dev/null and b/game/assets/FiraSans-Bold.ttf differ
diff --git a/prof_png/pixil-frame-0 (2).png b/game/assets/enemy.png
similarity index 100%
rename from prof_png/pixil-frame-0 (2).png
rename to game/assets/enemy.png
diff --git a/game/src/main.rs b/game/src/main.rs
index 616956da9233e8694d2d9b051764cb68486bcb86..bd0c5a1f8c64ed98b12053b19a773b588df0b457 100644
--- a/game/src/main.rs
+++ b/game/src/main.rs
@@ -1,8 +1,33 @@
 use bevy::prelude::*;
+use rand::Rng;
 
 #[derive(Component)]
 struct Player;
 
+#[derive(Component)]
+struct Health {
+    current: u32,
+    max: u32,
+}
+
+#[derive(Component)]
+struct CombatText;
+
+
+#[derive(Component)]
+struct Attack {
+    damage: u32,
+}
+
+#[derive(Component)]
+struct Enemy;
+
+#[derive(Component)]
+struct CollisionBox {
+    width: f32,
+    height: f32,
+}
+
 fn main() {
     App::new()
         .add_plugins(
@@ -21,11 +46,14 @@ fn main() {
         )
         .add_systems(Startup, setup)
         .add_systems(Update, character_movement)
+        .add_systems(Startup,spawn_enemies)
+        .add_systems(Update,attack_system)
         .run();
 }
 fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
     commands.spawn(Camera2dBundle::default());
 
+
     // Charger l'arrière-plan de la carte
     let map_texture = asset_server.load("mapdebut.png");
     commands.spawn(SpriteBundle {
@@ -73,4 +101,78 @@ fn character_movement(
             transform.translation.x -= 100.0 * time.delta_seconds();
         }
     }
-}
\ No newline at end of file
+}
+
+fn spawn_enemies(mut commands: Commands, asset_server: Res<AssetServer>, mut materials: ResMut<Assets<ColorMaterial>>) {
+    let enemy_texture = asset_server.load("enemy.png");
+
+    // Définir le nombre maximum d'ennemis
+    let max_enemies = 5;
+
+    // Générer une position aléatoire pour chaque ennemi
+    let mut rng = rand::thread_rng();
+    for _ in 0..max_enemies {
+        let x_position = rng.gen_range(-300.0..300.0); // Assurez-vous d'ajuster ces valeurs en fonction de la taille de votre carte
+        let y_position = rng.gen_range(-300.0..300.0);
+
+        commands.spawn(SpriteBundle {
+            sprite: Sprite {
+                custom_size: Some(Vec2::new(50.0, 50.0)),
+                ..default()
+            },
+            transform: Transform {
+                translation: Vec3::new(x_position, y_position, 0.0),
+                ..default()
+            },
+            texture: enemy_texture.clone(),
+            ..default()
+        })
+        .insert(Enemy)
+        //.insert(Health { current: 100, max: 100 })
+        //.insert(Attack { damage: 10 })
+        .insert(CollisionBox { width: 75.0, height: 75.0 });
+    }
+}
+fn attack_system(
+    mut commands: Commands,
+    asset_server: Res<AssetServer>,
+    mut player_query: Query<(&Transform), With<Player>>,
+    mut enemy_query: Query<(&Transform), With<Enemy>>,
+    combat_text_query: Query<Entity, With<CombatText>>, // Query to handle existing combat texts
+) {
+    // Check if the player is near an enemy to show the combat text
+    for (player_transform) in player_query.iter_mut() {
+        let mut in_combat = false;
+        for (enemy_transform) in enemy_query.iter_mut() {
+            if player_transform.translation.distance(enemy_transform.translation) < 60.0 { // Adjust this value based on the size of your collision box
+                in_combat = true;
+                break;
+            }
+        }
+        let has_combat_text = combat_text_query.iter().next().is_some();
+
+        if in_combat && !has_combat_text {
+            // Display the combat text
+            commands.spawn(TextBundle {
+                text: Text {
+                    sections: vec![TextSection {
+                        value: "Combat".to_string(),
+                        style: TextStyle {
+                            font: asset_server.load("FiraSans-Bold.ttf"), // Adjust this font path
+                            font_size: 40.0,
+                            color: Color::WHITE,
+                        },
+                    }],
+                    ..Default::default()
+                },
+                ..Default::default()
+            })
+            .insert(CombatText);
+        } else if !in_combat && has_combat_text {
+            // Remove the combat text
+            for entity in combat_text_query.iter() {
+                commands.entity(entity).despawn();
+            }
+        }
+    }
+}
diff --git a/game/target/.rustc_info.json b/game/target/.rustc_info.json
index 372c905fa4fb953e2fc8b9749d1d481ae62a8b6c..1eec4acb514a284952229f19b13c8ee4cc310a8d 100644
--- a/game/target/.rustc_info.json
+++ b/game/target/.rustc_info.json
@@ -1 +1 @@
-{"rustc_fingerprint":11201075139874679237,"outputs":{"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.73.0 (cc66ad468 2023-10-03)\nbinary: rustc\ncommit-hash: cc66ad468955717ab92600c770da8c1601a4ff33\ncommit-date: 2023-10-03\nhost: x86_64-unknown-linux-gnu\nrelease: 1.73.0\nLLVM version: 17.0.2\n","stderr":""},"14371922958718593042":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/theo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/theo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}}
\ No newline at end of file
+{"rustc_fingerprint":11201075139874679237,"outputs":{"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/theo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"14371922958718593042":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/theo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.73.0 (cc66ad468 2023-10-03)\nbinary: rustc\ncommit-hash: cc66ad468955717ab92600c770da8c1601a4ff33\ncommit-date: 2023-10-03\nhost: x86_64-unknown-linux-gnu\nrelease: 1.73.0\nLLVM version: 17.0.2\n","stderr":""}},"successes":{}}
\ No newline at end of file