diff --git a/GUI.ozf b/GUI.ozf
deleted file mode 100644
index 85b3ffa7e90e9f1d976b71e15804c358c601d8b8..0000000000000000000000000000000000000000
Binary files a/GUI.ozf and /dev/null differ
diff --git a/Input.oz b/Input.oz
index 555e6e9d18f551fb1ecd46d78e56f04efaa600bd..2a56b7d1c07156f4844815bf406cbac3b228a224 100644
--- a/Input.oz
+++ b/Input.oz
@@ -1,4 +1,7 @@
 functor
+import 
+    OS
+    System
 export
     isTurnByTurn:IsTurnByTurn
     nRow:NRow
@@ -41,6 +44,45 @@ define
     MinDistanceMissile
     MaxDistanceMissile
     GUIDelay
+
+    fun {SumTwoList L1 L2 Acc}
+        case L1#L2 
+        of nil#nil then {List.reverse Acc}
+        [] (H1|T1)#(H2|T2) then 
+            {SumTwoList T1 T2 H1+H2|Acc}
+        end
+    end
+
+    fun{ValidateTwoConsecutiveRows Row1 Row2}
+        Sum={SumTwoList Row1 Row2 nil}
+    in
+        {List.foldL Sum fun{$A I} ({Min ~1*I 0}+1)+A end 0} >= NbPlayers
+    end
+
+    fun{GenerateRow Length Acc}
+        if Length==0 then 
+            Acc 
+        elseif ({OS.rand} mod 3) \= 0 then 
+            {GenerateRow Length-1 0|Acc}
+        else 
+            {GenerateRow Length-1 1|Acc}
+        end
+    end
+
+    fun{GenerateMap NbRow NbColumn Acc}
+        if NbRow==0 then 
+            Acc
+        else NewRow={GenerateRow NbColumn nil} in 
+            case Acc 
+            of nil then 
+                {GenerateMap NbRow-1 NbColumn NewRow|Acc}
+            [] LastRow|T andthen {ValidateTwoConsecutiveRows NewRow LastRow} then 
+                {GenerateMap NbRow-1 NbColumn NewRow|Acc}
+            else
+                {GenerateMap NbRow NbColumn Acc}
+            end 
+        end
+    end
 in 
 
 
@@ -48,43 +90,19 @@ in
    
    IsTurnByTurn = true
 
-%%%% Description of the map %%%%
-   
-    NRow = 10
-    NColumn = 20
-    Map =  [[0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0]
-            [0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
-            [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0]
-            [0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0]
-            [0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0]
-            [0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0]
-            [0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0]
-            [0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0]
-            [0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0]
-            [0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0]]
-
-    /*
-    NRow = 5   
-    NColumn = 5
-    Map =  [[0 0 0 0 1]
-            [0 1 1 0 0]
-            [0 0 0 1 0]
-            [0 0 1 0 0]
-            [0 0 0 0 0]]
-     */
 %%%% Players description %%%%
 
-    NbPlayers = 2
-    Players   = [player020random player020hunter]
-    Colors    = [c(245 88 203) c(255 102 0)]
+    NbPlayers = 6
+    Players   = [player020random player020random player020hunter player020hunter player020hunter player020hunter]
+    Colors    = [c(245 88 203) c(255 102 0) black green blue red]
   
 %%%% Surface time/turns %%%%
 
-    TurnSurface = 5
+    TurnSurface = 3
 
 %%%% Life %%%%
 
-    MaxDamage = 8
+    MaxDamage = 16
 
 %%%% Number of load for each item %%%%
 
@@ -103,4 +121,10 @@ in
 %%%% Waiting time for the GUI between each effect %%%%
     GUIDelay = 100 % ms
 
+%%%% Description of the map %%%%
+   
+NRow = ({OS.rand} mod 5) + (NbPlayers+(NbPlayers div 2))
+NColumn = ({OS.rand} mod 10) + (NbPlayers *2)
+Map =  {GenerateMap NRow NColumn nil}
+
 end
\ No newline at end of file
diff --git a/Input.ozf b/Input.ozf
deleted file mode 100644
index e584f42386dd1d5383f222ec45bcea421cd7c01d..0000000000000000000000000000000000000000
Binary files a/Input.ozf and /dev/null differ
diff --git a/Main.oz b/Main.oz
index a6c3725dae3d0ca4265def1f0a13a58979baad86..49e4434b062f992e57d45d3eb788208b25d6ad61 100644
--- a/Main.oz
+++ b/Main.oz
@@ -212,7 +212,6 @@ define
     end
 
     proc {TurnByTurn Players CurrentIndex}
-        % {System.show 'Turnof'#CurrentIndex}
         %% 1.
         {TurnByTurn1 Players CurrentIndex}
     end
diff --git a/Main.ozf b/Main.ozf
deleted file mode 100644
index 794ced979301e2f32ab41f3c0951a9eeb57c1099..0000000000000000000000000000000000000000
Binary files a/Main.ozf and /dev/null differ
diff --git a/Player020Hunter.oz b/Player020Hunter.oz
index fc1af653ee5851a8419afe6abf20ab59c8057f37..5df8fd2179516d421c121e95eeb5c7c855dad35c 100644
--- a/Player020Hunter.oz
+++ b/Player020Hunter.oz
@@ -144,7 +144,6 @@ define
             State
         [] (missile(Position)|T1)#(Target|T2) then Position=Target in 
             ID=State.id KindFire=missile(Position)
-            {System.show '-----------------Firing a missile at enemy postion'#Position}
             {NewRec {NewRec State chargedItems {List.subtract State.chargedItems T1}} targets T2} 
         end
     end
@@ -331,9 +330,7 @@ define
             {AliveTreatStream T State}
         [] sayMove(ID Direction)|T then NewState in  %% Ignored
             {System.show 'Player'#State.id.id#'received'#sayMove(ID Direction)}
-            {System.show 'Player'#State.id.id#'before enemies:'#State.enemies}
             NewState={HandleSayMove State State.enemies sayMove(ID Direction) nil}
-            {System.show 'Player'#State.id.id#'after enemies:'#State.enemies}
             {AliveTreatStream T NewState}
         [] isDead(Answer)|T then 
             Answer=false
@@ -396,9 +393,11 @@ define
         [] sayDamageTaken(ID Damage LifeLeft)|T then %% Ignore
             {System.show 'Player'#State.id.id#'received'#sayDamageTaken(ID Damage LifeLeft)}
             {AliveTreatStream T State}
-        [] sayDeath(ID)|T then NewState DeadEnemy in %% Ignore
+        [] sayDeath(ID)|T then NewState RemovedDeadEnemy in %% Ignore
+            RemovedDeadEnemy={List.filter State.enemies fun{$ Enemy} Enemy.idNum \= ID.id end}
+            NewState={NewRec State enemies RemovedDeadEnemy}
             {System.show 'Player'#State.id.id#'received'#sayDeath(ID)}
-            {AliveTreatStream T State}
+            {AliveTreatStream T NewState}
         end
     end
 
@@ -407,7 +406,7 @@ define
         elseif Count==MyIDNum then 
             {InitEnemies MyIDNum Count-1 Acc} 
         else NewEnemy in 
-            NewEnemy=enemy(idNum:Count history:nil alive:true)
+            NewEnemy=enemy(idNum:Count history:nil)
             {InitEnemies MyIDNum Count-1 NewEnemy|Acc} 
         end
     end
diff --git a/Player020Hunter.ozf b/Player020Hunter.ozf
deleted file mode 100644
index 89f98e13cf2c721934f106cb338826acb19a1203..0000000000000000000000000000000000000000
Binary files a/Player020Hunter.ozf and /dev/null differ
diff --git a/Player020Random.oz b/Player020Random.oz
index 9794921f4e45c634f0ea885a461e6044b9c0e6fb..b471aeb89b2767b5656d8771f2cbaf2f41fba442 100644
--- a/Player020Random.oz
+++ b/Player020Random.oz
@@ -161,7 +161,7 @@ define
         of nil then 
             ID=State.id Mine=null
             State
-        elseif {OS.rand} mod 5 \= 0 then MineToExplode={GetRandomElement State.placedMines} in 
+        elseif {OS.rand} mod 3 \= 0 then MineToExplode={GetRandomElement State.placedMines} in 
             ID=State.id Mine=MineToExplode
             {NewRec State placedMines {List.subtract State.placedMines MineToExplode}}
         else
diff --git a/Player020Random.ozf b/Player020Random.ozf
deleted file mode 100644
index 1c452ab9da7cb29e258dcc5fecf0c634ead99f05..0000000000000000000000000000000000000000
Binary files a/Player020Random.ozf and /dev/null differ
diff --git a/PlayerManager.ozf b/PlayerManager.ozf
deleted file mode 100644
index 31656590d68a7e4604f247a44860ed78052f9ffb..0000000000000000000000000000000000000000
Binary files a/PlayerManager.ozf and /dev/null differ