Updated test cases and made engine work correctly according to tests
authorJustin Worthe <justin@worthe-it.co.za>
Mon, 25 Jun 2018 18:26:05 +0000 (20:26 +0200)
committerJustin Worthe <justin@worthe-it.co.za>
Mon, 25 Jun 2018 18:26:05 +0000 (20:26 +0200)
I don't think a tesla appeared in this match. I need to contrive a bot
to build one.

243 files changed:
src/engine/command.rs
src/engine/mod.rs
src/input/json.rs
src/strategy/monte_carlo.rs
tests/after_113/Round 003/OpponentCommand.txt [deleted file]
tests/after_113/Round 003/PlayerCommand.txt [deleted file]
tests/after_113/Round 005/PlayerCommand.txt [deleted file]
tests/after_113/Round 007/OpponentCommand.txt [deleted file]
tests/after_113/Round 008/OpponentCommand.txt [deleted file]
tests/after_113/Round 008/PlayerCommand.txt [deleted file]
tests/after_113/Round 009/OpponentCommand.txt [deleted file]
tests/after_113/Round 009/PlayerCommand.txt [deleted file]
tests/after_113/Round 010/OpponentCommand.txt [deleted file]
tests/after_113/Round 010/PlayerCommand.txt [deleted file]
tests/after_113/Round 011/OpponentCommand.txt [deleted file]
tests/after_113/Round 011/PlayerCommand.txt [deleted file]
tests/after_113/Round 012/OpponentCommand.txt [deleted file]
tests/after_113/Round 012/PlayerCommand.txt [deleted file]
tests/after_113/Round 013/OpponentCommand.txt [deleted file]
tests/after_113/Round 013/PlayerCommand.txt [deleted file]
tests/after_113/Round 014/OpponentCommand.txt [deleted file]
tests/after_113/Round 014/PlayerCommand.txt [deleted file]
tests/after_113/Round 015/OpponentCommand.txt [deleted file]
tests/after_113/Round 015/PlayerCommand.txt [deleted file]
tests/after_113/Round 016/OpponentCommand.txt [deleted file]
tests/after_113/Round 016/PlayerCommand.txt [deleted file]
tests/after_113/Round 017/OpponentCommand.txt [deleted file]
tests/after_113/Round 017/PlayerCommand.txt [deleted file]
tests/after_113/Round 018/OpponentCommand.txt [deleted file]
tests/after_113/Round 018/PlayerCommand.txt [deleted file]
tests/after_113/Round 019/OpponentCommand.txt [deleted file]
tests/after_113/Round 019/PlayerCommand.txt [deleted file]
tests/after_113/Round 020/OpponentCommand.txt [deleted file]
tests/after_113/Round 021/OpponentCommand.txt [deleted file]
tests/after_113/Round 022/OpponentCommand.txt [deleted file]
tests/after_113/Round 022/PlayerCommand.txt [deleted file]
tests/after_113/Round 023/OpponentCommand.txt [deleted file]
tests/after_113/Round 023/PlayerCommand.txt [deleted file]
tests/after_113/Round 024/OpponentCommand.txt [deleted file]
tests/after_113/Round 025/OpponentCommand.txt [deleted file]
tests/after_113/Round 025/PlayerCommand.txt [deleted file]
tests/after_113/Round 026/OpponentCommand.txt [deleted file]
tests/after_113/Round 026/PlayerCommand.txt [deleted file]
tests/after_113/Round 027/OpponentCommand.txt [deleted file]
tests/after_113/Round 027/PlayerCommand.txt [deleted file]
tests/after_113/Round 028/PlayerCommand.txt [deleted file]
tests/after_113/Round 029/OpponentCommand.txt [deleted file]
tests/after_113/Round 030/OpponentCommand.txt [deleted file]
tests/after_113/Round 030/PlayerCommand.txt [deleted file]
tests/after_113/Round 031/OpponentCommand.txt [deleted file]
tests/after_113/Round 031/PlayerCommand.txt [deleted file]
tests/after_113/Round 032/OpponentCommand.txt [deleted file]
tests/after_113/Round 033/PlayerCommand.txt [deleted file]
tests/after_113/Round 034/OpponentCommand.txt [deleted file]
tests/after_113/Round 034/PlayerCommand.txt [deleted file]
tests/after_113/Round 035/OpponentCommand.txt [deleted file]
tests/after_113/Round 037/PlayerCommand.txt [deleted file]
tests/after_113/Round 038/PlayerCommand.txt [deleted file]
tests/after_113/Round 039/OpponentCommand.txt [deleted file]
tests/after_113/Round 039/PlayerCommand.txt [deleted file]
tests/after_113/Round 040/OpponentCommand.txt [deleted file]
tests/after_113/Round 040/PlayerCommand.txt [deleted file]
tests/after_113/Round 041/OpponentCommand.txt [deleted file]
tests/after_113/Round 041/PlayerCommand.txt [deleted file]
tests/after_113/Round 042/OpponentCommand.txt [deleted file]
tests/after_113/Round 042/PlayerCommand.txt [deleted file]
tests/after_113/Round 043/PlayerCommand.txt [deleted file]
tests/after_113/Round 044/OpponentCommand.txt [deleted file]
tests/after_113/Round 044/PlayerCommand.txt [deleted file]
tests/after_113/Round 045/PlayerCommand.txt [deleted file]
tests/after_113/Round 046/OpponentCommand.txt [deleted file]
tests/after_113/Round 046/PlayerCommand.txt [deleted file]
tests/after_113/Round 047/PlayerCommand.txt [deleted file]
tests/after_113/Round 049/OpponentCommand.txt [deleted file]
tests/after_113/Round 049/PlayerCommand.txt [deleted file]
tests/after_113/Round 050/PlayerCommand.txt [deleted file]
tests/after_113/Round 051/OpponentCommand.txt [deleted file]
tests/after_113/Round 051/PlayerCommand.txt [deleted file]
tests/after_113/Round 052/OpponentCommand.txt [deleted file]
tests/after_113/Round 052/PlayerCommand.txt [deleted file]
tests/after_113/Round 053/OpponentCommand.txt [deleted file]
tests/after_113/Round 054/PlayerCommand.txt [deleted file]
tests/after_113/Round 055/OpponentCommand.txt [deleted file]
tests/after_113/Round 055/PlayerCommand.txt [deleted file]
tests/after_113/Round 057/OpponentCommand.txt [deleted file]
tests/after_113/Round 057/PlayerCommand.txt [deleted file]
tests/after_113/Round 058/PlayerCommand.txt [deleted file]
tests/after_113/Round 059/OpponentCommand.txt [deleted file]
tests/after_113/Round 059/PlayerCommand.txt [deleted file]
tests/after_113/Round 060/OpponentCommand.txt [deleted file]
tests/after_113/Round 060/PlayerCommand.txt [deleted file]
tests/after_113/Round 061/OpponentCommand.txt [deleted file]
tests/after_113/Round 061/PlayerCommand.txt [deleted file]
tests/after_113/Round 062/OpponentCommand.txt [deleted file]
tests/after_113/Round 062/PlayerCommand.txt [deleted file]
tests/after_113/Round 063/OpponentCommand.txt [deleted file]
tests/after_113/Round 063/PlayerCommand.txt [deleted file]
tests/after_113/Round 064/OpponentCommand.txt [deleted file]
tests/after_113/Round 064/PlayerCommand.txt [deleted file]
tests/after_113/Round 065/OpponentCommand.txt [deleted file]
tests/after_113/Round 066/OpponentCommand.txt [deleted file]
tests/after_113/Round 067/OpponentCommand.txt [deleted file]
tests/after_113/Round 067/PlayerCommand.txt [deleted file]
tests/after_113/Round 068/OpponentCommand.txt [deleted file]
tests/after_113/Round 068/PlayerCommand.txt [deleted file]
tests/after_113/Round 069/OpponentCommand.txt [deleted file]
tests/after_113/Round 069/PlayerCommand.txt [deleted file]
tests/after_113/Round 070/OpponentCommand.txt [deleted file]
tests/after_113/Round 070/PlayerCommand.txt [deleted file]
tests/after_200/Round 000/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 000/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 001/OpponentCommand.txt [moved from tests/after_113/Round 001/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 001/PlayerCommand.txt [moved from tests/after_113/Round 001/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 002/OpponentCommand.txt [moved from tests/after_113/Round 002/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 002/PlayerCommand.txt [moved from tests/after_113/Round 002/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 003/OpponentCommand.txt [moved from tests/after_113/Round 058/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 003/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 004/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 004/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 005/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 005/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 006/OpponentCommand.txt [moved from tests/after_113/Round 004/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 006/PlayerCommand.txt [moved from tests/after_113/Round 004/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 007/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 007/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 008/OpponentCommand.txt [moved from tests/after_113/Round 006/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 008/PlayerCommand.txt [moved from tests/after_113/Round 006/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 009/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 009/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 010/OpponentCommand.txt [moved from tests/after_113/Round 021/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 010/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 011/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 011/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 012/OpponentCommand.txt [moved from tests/after_113/Round 032/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 012/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 013/OpponentCommand.txt [moved from tests/after_113/Round 005/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 013/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 014/OpponentCommand.txt [moved from tests/after_113/Round 024/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 014/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 015/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 015/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 016/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 016/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 017/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 017/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 018/OpponentCommand.txt [moved from tests/after_113/Round 038/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 018/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 019/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 019/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 020/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 020/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 021/OpponentCommand.txt [moved from tests/after_113/Round 036/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 021/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 022/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 022/PlayerCommand.txt [moved from tests/after_113/Round 036/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 023/OpponentCommand.txt [moved from tests/after_113/Round 054/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 023/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 024/OpponentCommand.txt [moved from tests/after_113/Round 000/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 024/PlayerCommand.txt [moved from tests/after_113/Round 020/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 025/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 025/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 026/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 026/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 027/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 027/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 028/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 028/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 029/OpponentCommand.txt [moved from tests/after_113/Round 033/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 029/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 030/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 030/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 031/OpponentCommand.txt [moved from tests/after_113/Round 007/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 031/PlayerCommand.txt [moved from tests/after_113/Round 066/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 032/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 032/PlayerCommand.txt [moved from tests/after_113/Round 047/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 033/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 033/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 034/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 034/PlayerCommand.txt [moved from tests/after_113/Round 029/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 035/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 035/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 036/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 036/PlayerCommand.txt [moved from tests/after_113/Round 048/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 037/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 037/PlayerCommand.txt [moved from tests/after_113/Round 045/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 038/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 038/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 039/OpponentCommand.txt [moved from tests/after_113/Round 065/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 039/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 040/OpponentCommand.txt [moved from tests/after_113/Round 056/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 040/PlayerCommand.txt [moved from tests/after_113/Round 053/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 041/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 041/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 042/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 042/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 043/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 043/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 044/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 044/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 045/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 045/PlayerCommand.txt [moved from tests/after_113/Round 028/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 046/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 046/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 047/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 047/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 048/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 048/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 049/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 049/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 050/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 050/PlayerCommand.txt [moved from tests/after_113/Round 043/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 051/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 051/PlayerCommand.txt [moved from tests/after_113/Round 035/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 052/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 052/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 053/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 053/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 054/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 054/PlayerCommand.txt [moved from tests/after_113/Round 048/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 055/OpponentCommand.txt [moved from tests/after_113/Round 050/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 055/PlayerCommand.txt [moved from tests/after_113/Round 056/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 056/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 056/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 057/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 057/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 058/OpponentCommand.txt [moved from tests/after_113/Round 000/PlayerCommand.txt with 100% similarity]
tests/after_200/Round 058/PlayerCommand.txt [moved from tests/after_113/Round 037/OpponentCommand.txt with 100% similarity]
tests/after_200/Round 059/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 059/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 060/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 060/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 061/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 061/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 062/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 062/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 063/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 063/PlayerCommand.txt [new file with mode: 0644]
tests/after_200/Round 064/OpponentCommand.txt [new file with mode: 0644]
tests/after_200/Round 064/PlayerCommand.txt [new file with mode: 0644]
tests/bigstate.json
tests/live-comparison.rs
tests/monte-carlo-test.rs [new file with mode: 0644]
tests/state0.json

index 7a2594d..bcfc352 100644 (file)
@@ -13,7 +13,7 @@ impl fmt::Display for Command {
         match *self {
             Command::Nothing => write!(f, ""),
             Command::Build(p, b) => write!(f, "{},{},{}", p.x, p.y, b as u8),
-            Command::Deconstruct(p) => write!(f, "3,{},{}", p.x, p.y),
+            Command::Deconstruct(p) => write!(f, "{},{},3", p.x, p.y),
         }
     }
 }
index 15b7a4d..a04f875 100644 (file)
@@ -119,6 +119,11 @@ impl GameState {
             return;
         }
 
+        GameState::perform_construct_command(&mut self.player_unconstructed_buildings, &mut self.player_buildings,  &mut self.player, &mut self.unoccupied_player_cells, settings, player_command, &settings.size);
+        GameState::perform_construct_command(&mut self.opponent_unconstructed_buildings, &mut self.opponent_buildings, &mut self.opponent, &mut self.unoccupied_opponent_cells, settings, opponent_command, &settings.size);
+        GameState::perform_deconstruct_command(&mut self.player_unconstructed_buildings, &mut self.player_buildings,  &mut self.player, &mut self.unoccupied_player_cells, player_command);
+        GameState::perform_deconstruct_command(&mut self.opponent_unconstructed_buildings, &mut self.opponent_buildings, &mut self.opponent, &mut self.unoccupied_opponent_cells, opponent_command);
+        
         GameState::update_construction(&mut self.player_unconstructed_buildings, &mut self.player_buildings, &mut self.player);
         GameState::update_construction(&mut self.opponent_unconstructed_buildings, &mut self.opponent_buildings, &mut self.opponent);
 
@@ -138,47 +143,44 @@ impl GameState {
 
         GameState::add_energy(&mut self.player);
         GameState::add_energy(&mut self.opponent);
-
-        GameState::perform_command(&mut self.player_unconstructed_buildings, &mut self.player_buildings,  &mut self.player, &mut self.unoccupied_player_cells, settings, player_command, &settings.size);
-        GameState::perform_command(&mut self.opponent_unconstructed_buildings, &mut self.opponent_buildings, &mut self.opponent, &mut self.unoccupied_opponent_cells, settings, opponent_command, &settings.size);
         
         GameState::update_status(self);
     }
 
-    fn perform_command(unconstructed_buildings: &mut Vec<UnconstructedBuilding>, buildings: &mut Vec<Building>, player: &mut Player, unoccupied_cells: &mut Vec<Point>, settings: &GameSettings, command: Command, size: &Point) {
-        match command {
-            Command::Nothing => { },
-            Command::Build(p, b) => {
-                let blueprint = settings.building_settings(b);
+    fn perform_construct_command(unconstructed_buildings: &mut Vec<UnconstructedBuilding>, buildings: &mut Vec<Building>, player: &mut Player, unoccupied_cells: &mut Vec<Point>, settings: &GameSettings, command: Command, size: &Point) {
+        if let Command::Build(p, b) = command {
+            let blueprint = settings.building_settings(b);
 
-                // This is used internally. I should not be making
-                // invalid moves!
-                debug_assert!(!buildings.iter().any(|b| b.pos == p));
-                debug_assert!(p.x < size.x && p.y < size.y);
-                debug_assert!(player.energy >= blueprint.price);
+            // This is used internally. I should not be making
+            // invalid moves!
+            debug_assert!(!buildings.iter().any(|b| b.pos == p));
+            debug_assert!(p.x < size.x && p.y < size.y);
+            debug_assert!(player.energy >= blueprint.price);
 
-                player.energy -= blueprint.price;
-                unconstructed_buildings.push(UnconstructedBuilding::new(p, blueprint));
-                
-                let to_remove_index = unoccupied_cells.iter().position(|&pos| pos == p).unwrap();
-                unoccupied_cells.swap_remove(to_remove_index);
-            },
-            Command::Deconstruct(p) => {
-                let to_remove_index = buildings.iter().position(|ref b| b.pos == p);
-                if let Some(i) = to_remove_index {
-                    buildings.swap_remove(i);
-                }
-                let unconstructed_to_remove_index = unconstructed_buildings.iter().position(|ref b| b.pos == p);
-                if let Some(i) = unconstructed_to_remove_index {
-                    unconstructed_buildings.swap_remove(i);
-                }
-                
-                debug_assert!(to_remove_index.is_some() || unconstructed_to_remove_index.is_some());
-                    
-                player.energy += 5;
-                
-                unoccupied_cells.push(p);
-            },
+            player.energy -= blueprint.price;
+            unconstructed_buildings.push(UnconstructedBuilding::new(p, blueprint));
+            
+            let to_remove_index = unoccupied_cells.iter().position(|&pos| pos == p).unwrap();
+            unoccupied_cells.swap_remove(to_remove_index);
+        }
+    }
+    fn perform_deconstruct_command(unconstructed_buildings: &mut Vec<UnconstructedBuilding>, buildings: &mut Vec<Building>, player: &mut Player, unoccupied_cells: &mut Vec<Point>, command: Command) {
+        if let Command::Deconstruct(p) = command {
+            let to_remove_index = buildings.iter().position(|ref b| b.pos == p);
+            let unconstructed_to_remove_index = unconstructed_buildings.iter().position(|ref b| b.pos == p);
+            debug_assert!(to_remove_index.is_some() || unconstructed_to_remove_index.is_some());
+            
+            if let Some(i) = to_remove_index {
+                player.energy_generated -= buildings[i].energy_generated_per_turn;
+                buildings.swap_remove(i);
+            }
+            if let Some(i) = unconstructed_to_remove_index {
+                unconstructed_buildings.swap_remove(i);
+            }
+            
+            player.energy += 5;
+            
+            unoccupied_cells.push(p);
         }
     }
 
@@ -209,7 +211,7 @@ impl GameState {
                     opponent.health = opponent.health.saturating_sub(settings.tesla.weapon_damage);
                 }
                 'player_col_loop: for x in tesla.pos.x+1..tesla.pos.x+(settings.size.x/2)+2 {
-                    for &y in [tesla.pos.y - 1, tesla.pos.y, tesla.pos.y + 1].iter() {
+                    for &y in [tesla.pos.y.saturating_sub(1), tesla.pos.y, tesla.pos.y.saturating_add(1)].iter() {
                         let target_point = Point::new(x, y);
                         for b in 0..opponent_buildings.len() {
                             if opponent_buildings[b].pos == target_point && opponent_buildings[b].health > 0 {
@@ -233,7 +235,7 @@ impl GameState {
                     player.health = player.health.saturating_sub(settings.tesla.weapon_damage);
                 }
                 'opponent_col_loop: for x in tesla.pos.x.saturating_sub((settings.size.x/2)+1)..tesla.pos.x {
-                    for &y in [tesla.pos.y - 1, tesla.pos.y, tesla.pos.y + 1].iter() {
+                    for &y in [tesla.pos.y.saturating_sub(1), tesla.pos.y, tesla.pos.y.saturating_add(1)].iter() {
                         let target_point = Point::new(x, y);
                         for b in 0..player_buildings.len() {
                             if player_buildings[b].pos == target_point && player_buildings[b].health > 0 {
@@ -332,6 +334,18 @@ impl GameState {
         }
         result
     }
+
+    
+    pub fn occupied_player_cells(&self) -> Vec<Point> {
+        self.player_unconstructed_buildings.iter().map(|b| b.pos)
+            .chain(self.player_buildings.iter().map(|b| b.pos))
+            .collect()
+    }
+    pub fn occupied_opponent_cells(&self) -> Vec<Point> {
+        self.opponent_unconstructed_buildings.iter().map(|b| b.pos)
+            .chain(self.opponent_buildings.iter().map(|b| b.pos))
+            .collect()
+    }
 }
 
 impl GameStatus {
@@ -376,7 +390,6 @@ impl Player {
         }
         result
     }
-
 }
 
 impl UnconstructedBuilding {
index 95dbd46..a2f6d8c 100644 (file)
@@ -188,7 +188,7 @@ impl BuildingBlueprint {
         engine::settings::BuildingSettings {
             price: self.price,
             health: self.health,
-            construction_time: self.construction_time-2,
+            construction_time: self.construction_time-1,
             weapon_damage: self.weapon_damage,
             weapon_speed: self.weapon_speed,
             weapon_cooldown_period: self.weapon_cooldown_period,
index 1ea18db..18b8acc 100644 (file)
@@ -76,18 +76,18 @@ fn simulate_to_endstate<R: Rng>(command_score: &mut CommandScore, settings: &Gam
 
 fn random_player_move<R: Rng>(settings: &GameSettings, state: &GameState, rng: &mut R) -> Command {
     let all_buildings = state.player.sensible_buildings(settings);
-    random_move(&settings, &state.unoccupied_player_cells, &all_buildings, rng)
+    random_move(&state.unoccupied_player_cells, &state.occupied_player_cells(), &all_buildings, rng)
 }
 
 fn random_opponent_move<R: Rng>(settings: &GameSettings, state: &GameState, rng: &mut R) -> Command {
     let all_buildings = state.opponent.sensible_buildings(settings);
-    random_move(&settings, &state.unoccupied_opponent_cells, &all_buildings, rng)
+    random_move(&state.unoccupied_opponent_cells, &state.occupied_opponent_cells(), &all_buildings, rng)
 }
 
-fn random_move<R: Rng>(settings: &GameSettings, all_positions: &[Point], all_buildings: &[BuildingType], rng: &mut R) -> Command {
+fn random_move<R: Rng>(free_positions: &[Point], occupied_positions: &[Point], all_buildings: &[BuildingType], rng: &mut R) -> Command {
     
-    let building_command_count = all_positions.len()*all_buildings.len();
-    let deconstruct_count = (settings.size.x as usize * settings.size.y as usize / 2) - all_positions.len();
+    let building_command_count = free_positions.len()*all_buildings.len();
+    let deconstruct_count = occupied_positions.len();
     let nothing_count = 1;
 
     let number_of_commands = building_command_count + deconstruct_count + nothing_count;
@@ -98,12 +98,12 @@ fn random_move<R: Rng>(settings: &GameSettings, all_positions: &[Point], all_bui
         Command::Nothing
     } else if choice_index < building_command_count {
         Command::Build(
-            all_positions[choice_index/all_buildings.len()],
+            free_positions[choice_index/all_buildings.len()],
             all_buildings[choice_index%all_buildings.len()]
         )
     } else {
         Command::Deconstruct(
-            all_positions[choice_index-building_command_count]
+            occupied_positions[choice_index-building_command_count]
         )
     }
 }
@@ -176,11 +176,8 @@ impl CommandScore {
             }
         }
 
-        for building in &state.player_buildings {
-            commands.push(CommandScore::new(Command::Deconstruct(building.pos)));
-        }
-        for building in &state.player_unconstructed_buildings {
-            commands.push(CommandScore::new(Command::Deconstruct(building.pos)));
+        for &position in &state.occupied_player_cells() {
+            commands.push(CommandScore::new(Command::Deconstruct(position)));
         }
 
         commands
diff --git a/tests/after_113/Round 003/OpponentCommand.txt b/tests/after_113/Round 003/OpponentCommand.txt
deleted file mode 100644 (file)
index e61ee5b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,5,2
\ No newline at end of file
diff --git a/tests/after_113/Round 003/PlayerCommand.txt b/tests/after_113/Round 003/PlayerCommand.txt
deleted file mode 100644 (file)
index 4119710..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2,1,2
\ No newline at end of file
diff --git a/tests/after_113/Round 005/PlayerCommand.txt b/tests/after_113/Round 005/PlayerCommand.txt
deleted file mode 100644 (file)
index 7388cff..0000000
+++ /dev/null
@@ -1 +0,0 @@
-4,0,2
\ No newline at end of file
diff --git a/tests/after_113/Round 007/OpponentCommand.txt b/tests/after_113/Round 007/OpponentCommand.txt
deleted file mode 100644 (file)
index 9b9f49b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 008/OpponentCommand.txt b/tests/after_113/Round 008/OpponentCommand.txt
deleted file mode 100644 (file)
index bdb74d0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-No Command
\ No newline at end of file
diff --git a/tests/after_113/Round 008/PlayerCommand.txt b/tests/after_113/Round 008/PlayerCommand.txt
deleted file mode 100644 (file)
index bdb74d0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-No Command
\ No newline at end of file
diff --git a/tests/after_113/Round 009/OpponentCommand.txt b/tests/after_113/Round 009/OpponentCommand.txt
deleted file mode 100644 (file)
index bd4deea..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1,7,1
\ No newline at end of file
diff --git a/tests/after_113/Round 009/PlayerCommand.txt b/tests/after_113/Round 009/PlayerCommand.txt
deleted file mode 100644 (file)
index d9a0acb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2,7,1
\ No newline at end of file
diff --git a/tests/after_113/Round 010/OpponentCommand.txt b/tests/after_113/Round 010/OpponentCommand.txt
deleted file mode 100644 (file)
index 1260cea..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 010/PlayerCommand.txt b/tests/after_113/Round 010/PlayerCommand.txt
deleted file mode 100644 (file)
index ca8db41..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 011/OpponentCommand.txt b/tests/after_113/Round 011/OpponentCommand.txt
deleted file mode 100644 (file)
index 19fbb8f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-4,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 011/PlayerCommand.txt b/tests/after_113/Round 011/PlayerCommand.txt
deleted file mode 100644 (file)
index 5c3de37..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 012/OpponentCommand.txt b/tests/after_113/Round 012/OpponentCommand.txt
deleted file mode 100644 (file)
index 5c3de37..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 012/PlayerCommand.txt b/tests/after_113/Round 012/PlayerCommand.txt
deleted file mode 100644 (file)
index 1260cea..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 013/OpponentCommand.txt b/tests/after_113/Round 013/OpponentCommand.txt
deleted file mode 100644 (file)
index 9b9f49b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 013/PlayerCommand.txt b/tests/after_113/Round 013/PlayerCommand.txt
deleted file mode 100644 (file)
index 4d83fd9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3,1,2
\ No newline at end of file
diff --git a/tests/after_113/Round 014/OpponentCommand.txt b/tests/after_113/Round 014/OpponentCommand.txt
deleted file mode 100644 (file)
index af58f31..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 014/PlayerCommand.txt b/tests/after_113/Round 014/PlayerCommand.txt
deleted file mode 100644 (file)
index 9b9f49b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 015/OpponentCommand.txt b/tests/after_113/Round 015/OpponentCommand.txt
deleted file mode 100644 (file)
index 8ba7f16..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1,5,2
\ No newline at end of file
diff --git a/tests/after_113/Round 015/PlayerCommand.txt b/tests/after_113/Round 015/PlayerCommand.txt
deleted file mode 100644 (file)
index 055ca5b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0,7,1
\ No newline at end of file
diff --git a/tests/after_113/Round 016/OpponentCommand.txt b/tests/after_113/Round 016/OpponentCommand.txt
deleted file mode 100644 (file)
index a943cb9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3,7,1
\ No newline at end of file
diff --git a/tests/after_113/Round 016/PlayerCommand.txt b/tests/after_113/Round 016/PlayerCommand.txt
deleted file mode 100644 (file)
index 1fcc509..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0,5,1
\ No newline at end of file
diff --git a/tests/after_113/Round 017/OpponentCommand.txt b/tests/after_113/Round 017/OpponentCommand.txt
deleted file mode 100644 (file)
index 487bf6a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 017/PlayerCommand.txt b/tests/after_113/Round 017/PlayerCommand.txt
deleted file mode 100644 (file)
index 9f12d31..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 018/OpponentCommand.txt b/tests/after_113/Round 018/OpponentCommand.txt
deleted file mode 100644 (file)
index 055ca5b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0,7,1
\ No newline at end of file
diff --git a/tests/after_113/Round 018/PlayerCommand.txt b/tests/after_113/Round 018/PlayerCommand.txt
deleted file mode 100644 (file)
index 5ff9de4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3,5,2
\ No newline at end of file
diff --git a/tests/after_113/Round 019/OpponentCommand.txt b/tests/after_113/Round 019/OpponentCommand.txt
deleted file mode 100644 (file)
index f23ef17..0000000
+++ /dev/null
@@ -1 +0,0 @@
-4,6,1
\ No newline at end of file
diff --git a/tests/after_113/Round 019/PlayerCommand.txt b/tests/after_113/Round 019/PlayerCommand.txt
deleted file mode 100644 (file)
index 75b785b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-4,7,1
\ No newline at end of file
diff --git a/tests/after_113/Round 020/OpponentCommand.txt b/tests/after_113/Round 020/OpponentCommand.txt
deleted file mode 100644 (file)
index 8bb009c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,1,1
\ No newline at end of file
diff --git a/tests/after_113/Round 021/OpponentCommand.txt b/tests/after_113/Round 021/OpponentCommand.txt
deleted file mode 100644 (file)
index 9477e06..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 022/OpponentCommand.txt b/tests/after_113/Round 022/OpponentCommand.txt
deleted file mode 100644 (file)
index 9f12d31..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 022/PlayerCommand.txt b/tests/after_113/Round 022/PlayerCommand.txt
deleted file mode 100644 (file)
index 323dbb1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,1,1
\ No newline at end of file
diff --git a/tests/after_113/Round 023/OpponentCommand.txt b/tests/after_113/Round 023/OpponentCommand.txt
deleted file mode 100644 (file)
index ad5f821..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 023/PlayerCommand.txt b/tests/after_113/Round 023/PlayerCommand.txt
deleted file mode 100644 (file)
index 4763908..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 024/OpponentCommand.txt b/tests/after_113/Round 024/OpponentCommand.txt
deleted file mode 100644 (file)
index 533b1c8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 025/OpponentCommand.txt b/tests/after_113/Round 025/OpponentCommand.txt
deleted file mode 100644 (file)
index 487bf6a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 025/PlayerCommand.txt b/tests/after_113/Round 025/PlayerCommand.txt
deleted file mode 100644 (file)
index 487bf6a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 026/OpponentCommand.txt b/tests/after_113/Round 026/OpponentCommand.txt
deleted file mode 100644 (file)
index e02c049..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3,6,1
\ No newline at end of file
diff --git a/tests/after_113/Round 026/PlayerCommand.txt b/tests/after_113/Round 026/PlayerCommand.txt
deleted file mode 100644 (file)
index bd4deea..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1,7,1
\ No newline at end of file
diff --git a/tests/after_113/Round 027/OpponentCommand.txt b/tests/after_113/Round 027/OpponentCommand.txt
deleted file mode 100644 (file)
index 323dbb1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,1,1
\ No newline at end of file
diff --git a/tests/after_113/Round 027/PlayerCommand.txt b/tests/after_113/Round 027/PlayerCommand.txt
deleted file mode 100644 (file)
index 5c3de37..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 028/PlayerCommand.txt b/tests/after_113/Round 028/PlayerCommand.txt
deleted file mode 100644 (file)
index 08ecb10..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3,1,1
\ No newline at end of file
diff --git a/tests/after_113/Round 029/OpponentCommand.txt b/tests/after_113/Round 029/OpponentCommand.txt
deleted file mode 100644 (file)
index 8bb009c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,1,1
\ No newline at end of file
diff --git a/tests/after_113/Round 030/OpponentCommand.txt b/tests/after_113/Round 030/OpponentCommand.txt
deleted file mode 100644 (file)
index ac6c42a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,6,1
\ No newline at end of file
diff --git a/tests/after_113/Round 030/PlayerCommand.txt b/tests/after_113/Round 030/PlayerCommand.txt
deleted file mode 100644 (file)
index 26912c7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-4,1,1
\ No newline at end of file
diff --git a/tests/after_113/Round 031/OpponentCommand.txt b/tests/after_113/Round 031/OpponentCommand.txt
deleted file mode 100644 (file)
index 8ac3a56..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1,6,1
\ No newline at end of file
diff --git a/tests/after_113/Round 031/PlayerCommand.txt b/tests/after_113/Round 031/PlayerCommand.txt
deleted file mode 100644 (file)
index a5bd5ef..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 032/OpponentCommand.txt b/tests/after_113/Round 032/OpponentCommand.txt
deleted file mode 100644 (file)
index 9b9f49b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 033/PlayerCommand.txt b/tests/after_113/Round 033/PlayerCommand.txt
deleted file mode 100644 (file)
index 429fd32..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,6,0
\ No newline at end of file
diff --git a/tests/after_113/Round 034/OpponentCommand.txt b/tests/after_113/Round 034/OpponentCommand.txt
deleted file mode 100644 (file)
index 487bf6a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 034/PlayerCommand.txt b/tests/after_113/Round 034/PlayerCommand.txt
deleted file mode 100644 (file)
index 487bf6a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 035/OpponentCommand.txt b/tests/after_113/Round 035/OpponentCommand.txt
deleted file mode 100644 (file)
index 9f12d31..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 037/PlayerCommand.txt b/tests/after_113/Round 037/PlayerCommand.txt
deleted file mode 100644 (file)
index ad5f821..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 038/PlayerCommand.txt b/tests/after_113/Round 038/PlayerCommand.txt
deleted file mode 100644 (file)
index 9f12d31..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 039/OpponentCommand.txt b/tests/after_113/Round 039/OpponentCommand.txt
deleted file mode 100644 (file)
index 79e2fd9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1,3,0
\ No newline at end of file
diff --git a/tests/after_113/Round 039/PlayerCommand.txt b/tests/after_113/Round 039/PlayerCommand.txt
deleted file mode 100644 (file)
index 58897af..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3,6,0
\ No newline at end of file
diff --git a/tests/after_113/Round 040/OpponentCommand.txt b/tests/after_113/Round 040/OpponentCommand.txt
deleted file mode 100644 (file)
index b557a00..0000000
+++ /dev/null
@@ -1 +0,0 @@
-4,3,2
\ No newline at end of file
diff --git a/tests/after_113/Round 040/PlayerCommand.txt b/tests/after_113/Round 040/PlayerCommand.txt
deleted file mode 100644 (file)
index f217f6d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 041/OpponentCommand.txt b/tests/after_113/Round 041/OpponentCommand.txt
deleted file mode 100644 (file)
index 487bf6a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 041/PlayerCommand.txt b/tests/after_113/Round 041/PlayerCommand.txt
deleted file mode 100644 (file)
index 743727a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,6,0
\ No newline at end of file
diff --git a/tests/after_113/Round 042/OpponentCommand.txt b/tests/after_113/Round 042/OpponentCommand.txt
deleted file mode 100644 (file)
index 75b785b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-4,7,1
\ No newline at end of file
diff --git a/tests/after_113/Round 042/PlayerCommand.txt b/tests/after_113/Round 042/PlayerCommand.txt
deleted file mode 100644 (file)
index 487bf6a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 043/PlayerCommand.txt b/tests/after_113/Round 043/PlayerCommand.txt
deleted file mode 100644 (file)
index 533b1c8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 044/OpponentCommand.txt b/tests/after_113/Round 044/OpponentCommand.txt
deleted file mode 100644 (file)
index c27eaf9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,1,2
\ No newline at end of file
diff --git a/tests/after_113/Round 044/PlayerCommand.txt b/tests/after_113/Round 044/PlayerCommand.txt
deleted file mode 100644 (file)
index 9f12d31..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 045/PlayerCommand.txt b/tests/after_113/Round 045/PlayerCommand.txt
deleted file mode 100644 (file)
index 9477e06..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 046/OpponentCommand.txt b/tests/after_113/Round 046/OpponentCommand.txt
deleted file mode 100644 (file)
index 8bb009c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,1,1
\ No newline at end of file
diff --git a/tests/after_113/Round 046/PlayerCommand.txt b/tests/after_113/Round 046/PlayerCommand.txt
deleted file mode 100644 (file)
index 1260cea..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 047/PlayerCommand.txt b/tests/after_113/Round 047/PlayerCommand.txt
deleted file mode 100644 (file)
index ac6c42a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,6,1
\ No newline at end of file
diff --git a/tests/after_113/Round 049/OpponentCommand.txt b/tests/after_113/Round 049/OpponentCommand.txt
deleted file mode 100644 (file)
index 7ae20d1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,5,0
\ No newline at end of file
diff --git a/tests/after_113/Round 049/PlayerCommand.txt b/tests/after_113/Round 049/PlayerCommand.txt
deleted file mode 100644 (file)
index ad5f821..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 050/PlayerCommand.txt b/tests/after_113/Round 050/PlayerCommand.txt
deleted file mode 100644 (file)
index 9b9f49b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 051/OpponentCommand.txt b/tests/after_113/Round 051/OpponentCommand.txt
deleted file mode 100644 (file)
index a81a341..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,6,1
\ No newline at end of file
diff --git a/tests/after_113/Round 051/PlayerCommand.txt b/tests/after_113/Round 051/PlayerCommand.txt
deleted file mode 100644 (file)
index 9477e06..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 052/OpponentCommand.txt b/tests/after_113/Round 052/OpponentCommand.txt
deleted file mode 100644 (file)
index 4763908..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 052/PlayerCommand.txt b/tests/after_113/Round 052/PlayerCommand.txt
deleted file mode 100644 (file)
index c41707e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,1
\ No newline at end of file
diff --git a/tests/after_113/Round 053/OpponentCommand.txt b/tests/after_113/Round 053/OpponentCommand.txt
deleted file mode 100644 (file)
index 239b17a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1,4,2
\ No newline at end of file
diff --git a/tests/after_113/Round 054/PlayerCommand.txt b/tests/after_113/Round 054/PlayerCommand.txt
deleted file mode 100644 (file)
index 9b9f49b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 055/OpponentCommand.txt b/tests/after_113/Round 055/OpponentCommand.txt
deleted file mode 100644 (file)
index a81a341..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,6,1
\ No newline at end of file
diff --git a/tests/after_113/Round 055/PlayerCommand.txt b/tests/after_113/Round 055/PlayerCommand.txt
deleted file mode 100644 (file)
index 1084f37..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,6,1
\ No newline at end of file
diff --git a/tests/after_113/Round 057/OpponentCommand.txt b/tests/after_113/Round 057/OpponentCommand.txt
deleted file mode 100644 (file)
index c4e7948..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 057/PlayerCommand.txt b/tests/after_113/Round 057/PlayerCommand.txt
deleted file mode 100644 (file)
index ad5f821..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 058/PlayerCommand.txt b/tests/after_113/Round 058/PlayerCommand.txt
deleted file mode 100644 (file)
index c41707e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,1
\ No newline at end of file
diff --git a/tests/after_113/Round 059/OpponentCommand.txt b/tests/after_113/Round 059/OpponentCommand.txt
deleted file mode 100644 (file)
index aa178b0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-3,3,0
\ No newline at end of file
diff --git a/tests/after_113/Round 059/PlayerCommand.txt b/tests/after_113/Round 059/PlayerCommand.txt
deleted file mode 100644 (file)
index 9477e06..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 060/OpponentCommand.txt b/tests/after_113/Round 060/OpponentCommand.txt
deleted file mode 100644 (file)
index 9f12d31..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 060/PlayerCommand.txt b/tests/after_113/Round 060/PlayerCommand.txt
deleted file mode 100644 (file)
index 5c3de37..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 061/OpponentCommand.txt b/tests/after_113/Round 061/OpponentCommand.txt
deleted file mode 100644 (file)
index a7c241f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0,7,0
\ No newline at end of file
diff --git a/tests/after_113/Round 061/PlayerCommand.txt b/tests/after_113/Round 061/PlayerCommand.txt
deleted file mode 100644 (file)
index 743727a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,6,0
\ No newline at end of file
diff --git a/tests/after_113/Round 062/OpponentCommand.txt b/tests/after_113/Round 062/OpponentCommand.txt
deleted file mode 100644 (file)
index 9033ecb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-4,5,2
\ No newline at end of file
diff --git a/tests/after_113/Round 062/PlayerCommand.txt b/tests/after_113/Round 062/PlayerCommand.txt
deleted file mode 100644 (file)
index 9477e06..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 063/OpponentCommand.txt b/tests/after_113/Round 063/OpponentCommand.txt
deleted file mode 100644 (file)
index 455ac78..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2,5,1
\ No newline at end of file
diff --git a/tests/after_113/Round 063/PlayerCommand.txt b/tests/after_113/Round 063/PlayerCommand.txt
deleted file mode 100644 (file)
index f217f6d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 064/OpponentCommand.txt b/tests/after_113/Round 064/OpponentCommand.txt
deleted file mode 100644 (file)
index 9b9f49b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 064/PlayerCommand.txt b/tests/after_113/Round 064/PlayerCommand.txt
deleted file mode 100644 (file)
index 9477e06..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 065/OpponentCommand.txt b/tests/after_113/Round 065/OpponentCommand.txt
deleted file mode 100644 (file)
index 1260cea..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 066/OpponentCommand.txt b/tests/after_113/Round 066/OpponentCommand.txt
deleted file mode 100644 (file)
index 9b9f49b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 067/OpponentCommand.txt b/tests/after_113/Round 067/OpponentCommand.txt
deleted file mode 100644 (file)
index 5c3de37..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 067/PlayerCommand.txt b/tests/after_113/Round 067/PlayerCommand.txt
deleted file mode 100644 (file)
index 533b1c8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-2,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 068/OpponentCommand.txt b/tests/after_113/Round 068/OpponentCommand.txt
deleted file mode 100644 (file)
index 9b9f49b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 068/PlayerCommand.txt b/tests/after_113/Round 068/PlayerCommand.txt
deleted file mode 100644 (file)
index ad5f821..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 069/OpponentCommand.txt b/tests/after_113/Round 069/OpponentCommand.txt
deleted file mode 100644 (file)
index 1260cea..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 069/PlayerCommand.txt b/tests/after_113/Round 069/PlayerCommand.txt
deleted file mode 100644 (file)
index 9477e06..0000000
+++ /dev/null
@@ -1 +0,0 @@
-6,6,2
\ No newline at end of file
diff --git a/tests/after_113/Round 070/OpponentCommand.txt b/tests/after_113/Round 070/OpponentCommand.txt
deleted file mode 100644 (file)
index 9b9f49b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,7,2
\ No newline at end of file
diff --git a/tests/after_113/Round 070/PlayerCommand.txt b/tests/after_113/Round 070/PlayerCommand.txt
deleted file mode 100644 (file)
index ad5f821..0000000
+++ /dev/null
@@ -1 +0,0 @@
-7,6,2
\ No newline at end of file
diff --git a/tests/after_200/Round 000/OpponentCommand.txt b/tests/after_200/Round 000/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..ea9e316
--- /dev/null
@@ -0,0 +1 @@
+6,1,2
\ No newline at end of file
diff --git a/tests/after_200/Round 000/PlayerCommand.txt b/tests/after_200/Round 000/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..ea9e316
--- /dev/null
@@ -0,0 +1 @@
+6,1,2
\ No newline at end of file
diff --git a/tests/after_200/Round 003/PlayerCommand.txt b/tests/after_200/Round 003/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..ab857c9
--- /dev/null
@@ -0,0 +1 @@
+7,1,2
\ No newline at end of file
diff --git a/tests/after_200/Round 004/OpponentCommand.txt b/tests/after_200/Round 004/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..5720dc8
--- /dev/null
@@ -0,0 +1 @@
+6,1,3
\ No newline at end of file
diff --git a/tests/after_200/Round 004/PlayerCommand.txt b/tests/after_200/Round 004/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..5720dc8
--- /dev/null
@@ -0,0 +1 @@
+6,1,3
\ No newline at end of file
diff --git a/tests/after_200/Round 005/OpponentCommand.txt b/tests/after_200/Round 005/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..87d322f
--- /dev/null
@@ -0,0 +1 @@
+3,0,2
\ No newline at end of file
diff --git a/tests/after_200/Round 005/PlayerCommand.txt b/tests/after_200/Round 005/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..87d322f
--- /dev/null
@@ -0,0 +1 @@
+3,0,2
\ No newline at end of file
diff --git a/tests/after_200/Round 007/OpponentCommand.txt b/tests/after_200/Round 007/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..49dd99d
--- /dev/null
@@ -0,0 +1 @@
+1,2,2
\ No newline at end of file
diff --git a/tests/after_200/Round 007/PlayerCommand.txt b/tests/after_200/Round 007/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..49dd99d
--- /dev/null
@@ -0,0 +1 @@
+1,2,2
\ No newline at end of file
diff --git a/tests/after_200/Round 009/OpponentCommand.txt b/tests/after_200/Round 009/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..f3c8f77
--- /dev/null
@@ -0,0 +1 @@
+2,2,2
\ No newline at end of file
diff --git a/tests/after_200/Round 009/PlayerCommand.txt b/tests/after_200/Round 009/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..f3c8f77
--- /dev/null
@@ -0,0 +1 @@
+2,2,2
\ No newline at end of file
diff --git a/tests/after_200/Round 010/PlayerCommand.txt b/tests/after_200/Round 010/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..67f6e86
--- /dev/null
@@ -0,0 +1 @@
+7,3,2
\ No newline at end of file
diff --git a/tests/after_200/Round 011/OpponentCommand.txt b/tests/after_200/Round 011/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..c919a0e
--- /dev/null
@@ -0,0 +1 @@
+7,1,3
\ No newline at end of file
diff --git a/tests/after_200/Round 011/PlayerCommand.txt b/tests/after_200/Round 011/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..c919a0e
--- /dev/null
@@ -0,0 +1 @@
+7,1,3
\ No newline at end of file
diff --git a/tests/after_200/Round 012/PlayerCommand.txt b/tests/after_200/Round 012/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..addc906
--- /dev/null
@@ -0,0 +1 @@
+4,3,1
\ No newline at end of file
diff --git a/tests/after_200/Round 013/PlayerCommand.txt b/tests/after_200/Round 013/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..8e935c8
--- /dev/null
@@ -0,0 +1 @@
+6,3,2
\ No newline at end of file
diff --git a/tests/after_200/Round 014/PlayerCommand.txt b/tests/after_200/Round 014/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..17d7db2
--- /dev/null
@@ -0,0 +1 @@
+5,3,2
\ No newline at end of file
diff --git a/tests/after_200/Round 015/OpponentCommand.txt b/tests/after_200/Round 015/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..601aa29
--- /dev/null
@@ -0,0 +1 @@
+2,5,2
\ No newline at end of file
diff --git a/tests/after_200/Round 015/PlayerCommand.txt b/tests/after_200/Round 015/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..601aa29
--- /dev/null
@@ -0,0 +1 @@
+2,5,2
\ No newline at end of file
diff --git a/tests/after_200/Round 016/OpponentCommand.txt b/tests/after_200/Round 016/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..85eacdb
--- /dev/null
@@ -0,0 +1 @@
+3,2,2
\ No newline at end of file
diff --git a/tests/after_200/Round 016/PlayerCommand.txt b/tests/after_200/Round 016/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..85eacdb
--- /dev/null
@@ -0,0 +1 @@
+3,2,2
\ No newline at end of file
diff --git a/tests/after_200/Round 017/OpponentCommand.txt b/tests/after_200/Round 017/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..67f6e86
--- /dev/null
@@ -0,0 +1 @@
+7,3,2
\ No newline at end of file
diff --git a/tests/after_200/Round 017/PlayerCommand.txt b/tests/after_200/Round 017/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..67f6e86
--- /dev/null
@@ -0,0 +1 @@
+7,3,2
\ No newline at end of file
diff --git a/tests/after_200/Round 018/PlayerCommand.txt b/tests/after_200/Round 018/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..4a9590d
--- /dev/null
@@ -0,0 +1 @@
+0,7,2
\ No newline at end of file
diff --git a/tests/after_200/Round 019/OpponentCommand.txt b/tests/after_200/Round 019/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..ccd082b
--- /dev/null
@@ -0,0 +1 @@
+6,2,1
\ No newline at end of file
diff --git a/tests/after_200/Round 019/PlayerCommand.txt b/tests/after_200/Round 019/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..10532f2
--- /dev/null
@@ -0,0 +1 @@
+0,2,1
\ No newline at end of file
diff --git a/tests/after_200/Round 020/OpponentCommand.txt b/tests/after_200/Round 020/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..d9d71ea
--- /dev/null
@@ -0,0 +1 @@
+4,2,1
\ No newline at end of file
diff --git a/tests/after_200/Round 020/PlayerCommand.txt b/tests/after_200/Round 020/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..49c1201
--- /dev/null
@@ -0,0 +1 @@
+7,2,1
\ No newline at end of file
diff --git a/tests/after_200/Round 021/PlayerCommand.txt b/tests/after_200/Round 021/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..ccd082b
--- /dev/null
@@ -0,0 +1 @@
+6,2,1
\ No newline at end of file
diff --git a/tests/after_200/Round 022/OpponentCommand.txt b/tests/after_200/Round 022/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..ccd082b
--- /dev/null
@@ -0,0 +1 @@
+6,2,1
\ No newline at end of file
diff --git a/tests/after_200/Round 023/PlayerCommand.txt b/tests/after_200/Round 023/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..b7adddf
--- /dev/null
@@ -0,0 +1 @@
+5,4,2
\ No newline at end of file
diff --git a/tests/after_200/Round 025/OpponentCommand.txt b/tests/after_200/Round 025/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..cb47d55
--- /dev/null
@@ -0,0 +1 @@
+0,3,1
\ No newline at end of file
diff --git a/tests/after_200/Round 025/PlayerCommand.txt b/tests/after_200/Round 025/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..ad5a4bc
--- /dev/null
@@ -0,0 +1 @@
+3,4,2
\ No newline at end of file
diff --git a/tests/after_200/Round 026/OpponentCommand.txt b/tests/after_200/Round 026/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..a030ed4
--- /dev/null
@@ -0,0 +1 @@
+6,4,1
\ No newline at end of file
diff --git a/tests/after_200/Round 026/PlayerCommand.txt b/tests/after_200/Round 026/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..cb47d55
--- /dev/null
@@ -0,0 +1 @@
+0,3,1
\ No newline at end of file
diff --git a/tests/after_200/Round 027/OpponentCommand.txt b/tests/after_200/Round 027/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..734a249
--- /dev/null
@@ -0,0 +1 @@
+7,4,2
\ No newline at end of file
diff --git a/tests/after_200/Round 027/PlayerCommand.txt b/tests/after_200/Round 027/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..5ee21e6
--- /dev/null
@@ -0,0 +1 @@
+4,4,1
\ No newline at end of file
diff --git a/tests/after_200/Round 028/OpponentCommand.txt b/tests/after_200/Round 028/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..6643b0d
--- /dev/null
@@ -0,0 +1 @@
+5,4,1
\ No newline at end of file
diff --git a/tests/after_200/Round 028/PlayerCommand.txt b/tests/after_200/Round 028/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..a01c7f4
--- /dev/null
@@ -0,0 +1 @@
+7,4,1
\ No newline at end of file
diff --git a/tests/after_200/Round 029/PlayerCommand.txt b/tests/after_200/Round 029/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..b7adddf
--- /dev/null
@@ -0,0 +1 @@
+5,4,2
\ No newline at end of file
diff --git a/tests/after_200/Round 030/OpponentCommand.txt b/tests/after_200/Round 030/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..17d7db2
--- /dev/null
@@ -0,0 +1 @@
+5,3,2
\ No newline at end of file
diff --git a/tests/after_200/Round 030/PlayerCommand.txt b/tests/after_200/Round 030/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..a7503e5
--- /dev/null
@@ -0,0 +1 @@
+7,3,1
\ No newline at end of file
diff --git a/tests/after_200/Round 032/OpponentCommand.txt b/tests/after_200/Round 032/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..a030ed4
--- /dev/null
@@ -0,0 +1 @@
+6,4,1
\ No newline at end of file
diff --git a/tests/after_200/Round 033/OpponentCommand.txt b/tests/after_200/Round 033/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..bb03eca
--- /dev/null
@@ -0,0 +1 @@
+5,3,1
\ No newline at end of file
diff --git a/tests/after_200/Round 033/PlayerCommand.txt b/tests/after_200/Round 033/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..a030ed4
--- /dev/null
@@ -0,0 +1 @@
+6,4,1
\ No newline at end of file
diff --git a/tests/after_200/Round 034/OpponentCommand.txt b/tests/after_200/Round 034/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..3fde4e2
--- /dev/null
@@ -0,0 +1 @@
+1,2,3
\ No newline at end of file
diff --git a/tests/after_200/Round 035/OpponentCommand.txt b/tests/after_200/Round 035/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..3ca9676
--- /dev/null
@@ -0,0 +1 @@
+7,3,0
\ No newline at end of file
diff --git a/tests/after_200/Round 035/PlayerCommand.txt b/tests/after_200/Round 035/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..b0f2a85
--- /dev/null
@@ -0,0 +1 @@
+6,4,2
\ No newline at end of file
diff --git a/tests/after_200/Round 036/OpponentCommand.txt b/tests/after_200/Round 036/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..3177984
--- /dev/null
@@ -0,0 +1 @@
+2,3,1
\ No newline at end of file
diff --git a/tests/after_200/Round 037/OpponentCommand.txt b/tests/after_200/Round 037/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..4a8cf07
--- /dev/null
@@ -0,0 +1 @@
+4,0,1
\ No newline at end of file
diff --git a/tests/after_200/Round 038/OpponentCommand.txt b/tests/after_200/Round 038/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..72ca43d
--- /dev/null
@@ -0,0 +1 @@
+0,5,2
\ No newline at end of file
diff --git a/tests/after_200/Round 038/PlayerCommand.txt b/tests/after_200/Round 038/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..ddc7f56
--- /dev/null
@@ -0,0 +1 @@
+7,5,1
\ No newline at end of file
diff --git a/tests/after_200/Round 039/PlayerCommand.txt b/tests/after_200/Round 039/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..16ddcd7
--- /dev/null
@@ -0,0 +1 @@
+7,0,1
\ No newline at end of file
diff --git a/tests/after_200/Round 041/OpponentCommand.txt b/tests/after_200/Round 041/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..ddc7f56
--- /dev/null
@@ -0,0 +1 @@
+7,5,1
\ No newline at end of file
diff --git a/tests/after_200/Round 041/PlayerCommand.txt b/tests/after_200/Round 041/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..3ab3f32
--- /dev/null
@@ -0,0 +1 @@
+5,0,1
\ No newline at end of file
diff --git a/tests/after_200/Round 042/OpponentCommand.txt b/tests/after_200/Round 042/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..d17d619
--- /dev/null
@@ -0,0 +1 @@
+5,0,2
\ No newline at end of file
diff --git a/tests/after_200/Round 042/PlayerCommand.txt b/tests/after_200/Round 042/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..87d322f
--- /dev/null
@@ -0,0 +1 @@
+3,0,2
\ No newline at end of file
diff --git a/tests/after_200/Round 043/OpponentCommand.txt b/tests/after_200/Round 043/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..67f6e86
--- /dev/null
@@ -0,0 +1 @@
+7,3,2
\ No newline at end of file
diff --git a/tests/after_200/Round 043/PlayerCommand.txt b/tests/after_200/Round 043/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..3d765f0
--- /dev/null
@@ -0,0 +1 @@
+5,5,1
\ No newline at end of file
diff --git a/tests/after_200/Round 044/OpponentCommand.txt b/tests/after_200/Round 044/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..6c57709
--- /dev/null
@@ -0,0 +1 @@
+1,7,2
\ No newline at end of file
diff --git a/tests/after_200/Round 044/PlayerCommand.txt b/tests/after_200/Round 044/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..3dee0c6
--- /dev/null
@@ -0,0 +1 @@
+6,3,1
\ No newline at end of file
diff --git a/tests/after_200/Round 045/OpponentCommand.txt b/tests/after_200/Round 045/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..93ec9b2
--- /dev/null
@@ -0,0 +1 @@
+6,5,1
\ No newline at end of file
diff --git a/tests/after_200/Round 046/OpponentCommand.txt b/tests/after_200/Round 046/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..67f6e86
--- /dev/null
@@ -0,0 +1 @@
+7,3,2
\ No newline at end of file
diff --git a/tests/after_200/Round 046/PlayerCommand.txt b/tests/after_200/Round 046/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..93ec9b2
--- /dev/null
@@ -0,0 +1 @@
+6,5,1
\ No newline at end of file
diff --git a/tests/after_200/Round 047/OpponentCommand.txt b/tests/after_200/Round 047/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..d17d619
--- /dev/null
@@ -0,0 +1 @@
+5,0,2
\ No newline at end of file
diff --git a/tests/after_200/Round 047/PlayerCommand.txt b/tests/after_200/Round 047/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..16ddcd7
--- /dev/null
@@ -0,0 +1 @@
+7,0,1
\ No newline at end of file
diff --git a/tests/after_200/Round 048/OpponentCommand.txt b/tests/after_200/Round 048/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..bb03eca
--- /dev/null
@@ -0,0 +1 @@
+5,3,1
\ No newline at end of file
diff --git a/tests/after_200/Round 048/PlayerCommand.txt b/tests/after_200/Round 048/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..addc906
--- /dev/null
@@ -0,0 +1 @@
+4,3,1
\ No newline at end of file
diff --git a/tests/after_200/Round 049/OpponentCommand.txt b/tests/after_200/Round 049/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..8e935c8
--- /dev/null
@@ -0,0 +1 @@
+6,3,2
\ No newline at end of file
diff --git a/tests/after_200/Round 049/PlayerCommand.txt b/tests/after_200/Round 049/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..67f6e86
--- /dev/null
@@ -0,0 +1 @@
+7,3,2
\ No newline at end of file
diff --git a/tests/after_200/Round 050/OpponentCommand.txt b/tests/after_200/Round 050/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..4dd67d5
--- /dev/null
@@ -0,0 +1 @@
+1,0,2
\ No newline at end of file
diff --git a/tests/after_200/Round 051/OpponentCommand.txt b/tests/after_200/Round 051/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..c602c71
--- /dev/null
@@ -0,0 +1 @@
+2,0,0
\ No newline at end of file
diff --git a/tests/after_200/Round 052/OpponentCommand.txt b/tests/after_200/Round 052/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..8e935c8
--- /dev/null
@@ -0,0 +1 @@
+6,3,2
\ No newline at end of file
diff --git a/tests/after_200/Round 052/PlayerCommand.txt b/tests/after_200/Round 052/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..0d2a91c
--- /dev/null
@@ -0,0 +1 @@
+3,4,3
\ No newline at end of file
diff --git a/tests/after_200/Round 053/OpponentCommand.txt b/tests/after_200/Round 053/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..704840c
--- /dev/null
@@ -0,0 +1 @@
+3,3,3
\ No newline at end of file
diff --git a/tests/after_200/Round 053/PlayerCommand.txt b/tests/after_200/Round 053/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..6643b0d
--- /dev/null
@@ -0,0 +1 @@
+5,4,1
\ No newline at end of file
diff --git a/tests/after_200/Round 054/OpponentCommand.txt b/tests/after_200/Round 054/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..ebfc684
--- /dev/null
@@ -0,0 +1 @@
+0,4,0
\ No newline at end of file
diff --git a/tests/after_200/Round 056/OpponentCommand.txt b/tests/after_200/Round 056/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..c7d9109
--- /dev/null
@@ -0,0 +1 @@
+5,2,2
\ No newline at end of file
diff --git a/tests/after_200/Round 056/PlayerCommand.txt b/tests/after_200/Round 056/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..9c6b08d
--- /dev/null
@@ -0,0 +1 @@
+3,6,3
\ No newline at end of file
diff --git a/tests/after_200/Round 057/OpponentCommand.txt b/tests/after_200/Round 057/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..4a9590d
--- /dev/null
@@ -0,0 +1 @@
+0,7,2
\ No newline at end of file
diff --git a/tests/after_200/Round 057/PlayerCommand.txt b/tests/after_200/Round 057/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..885148a
--- /dev/null
@@ -0,0 +1 @@
+6,4,3
\ No newline at end of file
diff --git a/tests/after_200/Round 059/OpponentCommand.txt b/tests/after_200/Round 059/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..c163991
--- /dev/null
@@ -0,0 +1 @@
+0,7,3
\ No newline at end of file
diff --git a/tests/after_200/Round 059/PlayerCommand.txt b/tests/after_200/Round 059/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..c163991
--- /dev/null
@@ -0,0 +1 @@
+0,7,3
\ No newline at end of file
diff --git a/tests/after_200/Round 060/OpponentCommand.txt b/tests/after_200/Round 060/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..f069b31
--- /dev/null
@@ -0,0 +1 @@
+0,6,3
\ No newline at end of file
diff --git a/tests/after_200/Round 060/PlayerCommand.txt b/tests/after_200/Round 060/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..5cbd497
--- /dev/null
@@ -0,0 +1 @@
+7,7,3
\ No newline at end of file
diff --git a/tests/after_200/Round 061/OpponentCommand.txt b/tests/after_200/Round 061/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..80a0b9a
--- /dev/null
@@ -0,0 +1 @@
+0,4,3
\ No newline at end of file
diff --git a/tests/after_200/Round 061/PlayerCommand.txt b/tests/after_200/Round 061/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..589fe67
--- /dev/null
@@ -0,0 +1 @@
+6,7,3
\ No newline at end of file
diff --git a/tests/after_200/Round 062/OpponentCommand.txt b/tests/after_200/Round 062/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..70a041a
--- /dev/null
@@ -0,0 +1 @@
+5,3,3
\ No newline at end of file
diff --git a/tests/after_200/Round 062/PlayerCommand.txt b/tests/after_200/Round 062/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..66cb3b1
--- /dev/null
@@ -0,0 +1 @@
+5,7,3
\ No newline at end of file
diff --git a/tests/after_200/Round 063/OpponentCommand.txt b/tests/after_200/Round 063/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..cb0f20e
--- /dev/null
@@ -0,0 +1 @@
+4,3,3
\ No newline at end of file
diff --git a/tests/after_200/Round 063/PlayerCommand.txt b/tests/after_200/Round 063/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..e7cde1b
--- /dev/null
@@ -0,0 +1 @@
+7,6,3
\ No newline at end of file
diff --git a/tests/after_200/Round 064/OpponentCommand.txt b/tests/after_200/Round 064/OpponentCommand.txt
new file mode 100644 (file)
index 0000000..8a8e05d
--- /dev/null
@@ -0,0 +1 @@
+2,3,3
\ No newline at end of file
diff --git a/tests/after_200/Round 064/PlayerCommand.txt b/tests/after_200/Round 064/PlayerCommand.txt
new file mode 100644 (file)
index 0000000..4e89ade
--- /dev/null
@@ -0,0 +1 @@
+5,5,3
\ No newline at end of file
index dd15670..2ad555f 100644 (file)
@@ -1 +1,1498 @@
-{"gameDetails":{"round":0,"mapWidth":20,"mapHeight":10,"roundIncomeEnergy":5,"buildingPrices":{"ENERGY":20,"ATTACK":30,"DEFENSE":30},"buildingsStats":{"ENERGY":{"health":5,"constructionTime":2,"price":20,"weaponDamage":0,"weaponSpeed":0,"weaponCooldownPeriod":0,"energyGeneratedPerTurn":3,"destroyMultiplier":1,"constructionScore":1},"ATTACK":{"health":5,"constructionTime":2,"price":30,"weaponDamage":5,"weaponSpeed":1,"weaponCooldownPeriod":3,"energyGeneratedPerTurn":0,"destroyMultiplier":1,"constructionScore":1},"DEFENSE":{"health":20,"constructionTime":4,"price":30,"weaponDamage":0,"weaponSpeed":0,"weaponCooldownPeriod":0,"energyGeneratedPerTurn":0,"destroyMultiplier":1,"constructionScore":1}}},"players":[{"playerType":"A","energy":20,"health":100,"hitsTaken":0,"score":0},{"playerType":"B","energy":20,"health":100,"hitsTaken":0,"score":0}],"gameMap":[[{"x":0,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":5,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":6,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":7,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":8,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":9,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":10,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":11,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":12,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":13,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":14,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":15,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":16,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":17,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":18,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":19,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"}],[{"x":0,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":5,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":6,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":7,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":8,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":9,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":10,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":11,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":12,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":13,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":14,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":15,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":16,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":17,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":18,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":19,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"}],[{"x":0,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":5,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":6,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":7,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":8,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":9,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":10,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":11,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":12,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":13,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":14,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":15,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":16,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":17,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":18,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":19,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"}],[{"x":0,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":5,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":6,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":7,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":8,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":9,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":10,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":11,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":12,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":13,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":14,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":15,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":16,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":17,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":18,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":19,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"}],[{"x":0,"y":4,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":4,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":4,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":4,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":4,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":5,"y":4,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":6,"y":4,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":7,"y":4,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":8,"y":4,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":9,"y":4,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":10,"y":4,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":11,"y":4,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":12,"y":4,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":13,"y":4,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":14,"y":4,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":15,"y":4,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":16,"y":4,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":17,"y":4,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":18,"y":4,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":19,"y":4,"buildings":[],"missiles":[],"cellOwner":"B"}],[{"x":0,"y":5,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":5,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":5,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":5,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":5,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":5,"y":5,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":6,"y":5,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":7,"y":5,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":8,"y":5,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":9,"y":5,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":10,"y":5,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":11,"y":5,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":12,"y":5,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":13,"y":5,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":14,"y":5,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":15,"y":5,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":16,"y":5,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":17,"y":5,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":18,"y":5,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":19,"y":5,"buildings":[],"missiles":[],"cellOwner":"B"}],[{"x":0,"y":6,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":6,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":6,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":6,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":6,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":5,"y":6,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":6,"y":6,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":7,"y":6,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":8,"y":6,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":9,"y":6,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":10,"y":6,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":11,"y":6,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":12,"y":6,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":13,"y":6,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":14,"y":6,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":15,"y":6,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":16,"y":6,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":17,"y":6,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":18,"y":6,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":19,"y":6,"buildings":[],"missiles":[],"cellOwner":"B"}],[{"x":0,"y":7,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":7,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":7,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":7,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":7,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":5,"y":7,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":6,"y":7,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":7,"y":7,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":8,"y":7,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":9,"y":7,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":10,"y":7,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":11,"y":7,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":12,"y":7,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":13,"y":7,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":14,"y":7,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":15,"y":7,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":16,"y":7,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":17,"y":7,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":18,"y":7,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":19,"y":7,"buildings":[],"missiles":[],"cellOwner":"B"}],[{"x":0,"y":8,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":8,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":8,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":8,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":8,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":5,"y":8,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":6,"y":8,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":7,"y":8,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":8,"y":8,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":9,"y":8,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":10,"y":8,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":11,"y":8,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":12,"y":8,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":13,"y":8,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":14,"y":8,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":15,"y":8,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":16,"y":8,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":17,"y":8,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":18,"y":8,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":19,"y":8,"buildings":[],"missiles":[],"cellOwner":"B"}],[{"x":0,"y":9,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":9,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":9,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":9,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":9,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":5,"y":9,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":6,"y":9,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":7,"y":9,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":8,"y":9,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":9,"y":9,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":10,"y":9,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":11,"y":9,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":12,"y":9,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":13,"y":9,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":14,"y":9,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":15,"y":9,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":16,"y":9,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":17,"y":9,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":18,"y":9,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":19,"y":9,"buildings":[],"missiles":[],"cellOwner":"B"}]]}
+{
+  "gameDetails": {
+    "round": 0,
+    "mapWidth": 20,
+    "mapHeight": 10,
+    "roundIncomeEnergy": 5,
+    "buildingPrices": {
+      "TESLA": 300,
+      "ENERGY": 20,
+      "ATTACK": 30,
+      "DEFENSE": 30
+    },
+    "buildingsStats": {
+      "TESLA": {
+        "health": 5,
+        "constructionTime": 11,
+        "price": 300,
+        "weaponDamage": 20,
+        "weaponSpeed": 0,
+        "weaponCooldownPeriod": 10,
+        "energyGeneratedPerTurn": 0,
+        "destroyMultiplier": 1,
+        "constructionScore": 1
+      },
+      "ENERGY": {
+        "health": 5,
+        "constructionTime": 2,
+        "price": 20,
+        "weaponDamage": 0,
+        "weaponSpeed": 0,
+        "weaponCooldownPeriod": 0,
+        "energyGeneratedPerTurn": 3,
+        "destroyMultiplier": 1,
+        "constructionScore": 1
+      },
+      "ATTACK": {
+        "health": 5,
+        "constructionTime": 2,
+        "price": 30,
+        "weaponDamage": 5,
+        "weaponSpeed": 1,
+        "weaponCooldownPeriod": 3,
+        "energyGeneratedPerTurn": 0,
+        "destroyMultiplier": 1,
+        "constructionScore": 1
+      },
+      "DEFENSE": {
+        "health": 20,
+        "constructionTime": 4,
+        "price": 30,
+        "weaponDamage": 0,
+        "weaponSpeed": 0,
+        "weaponCooldownPeriod": 0,
+        "energyGeneratedPerTurn": 0,
+        "destroyMultiplier": 1,
+        "constructionScore": 1
+      }
+    }
+  },
+  "players": [
+    {
+      "playerType": "A",
+      "energy": 20,
+      "health": 100,
+      "hitsTaken": 0,
+      "score": 0
+    },
+    {
+      "playerType": "B",
+      "energy": 20,
+      "health": 100,
+      "hitsTaken": 0,
+      "score": 0
+    }
+  ],
+  "gameMap": [
+    [
+      {
+        "x": 0,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 5,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 6,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 7,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 8,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 9,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 10,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 11,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 12,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 13,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 14,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 15,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 16,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 17,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 18,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 19,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ],
+    [
+      {
+        "x": 0,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 5,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 6,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 7,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 8,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 9,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 10,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 11,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 12,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 13,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 14,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 15,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 16,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 17,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 18,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 19,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ],
+    [
+      {
+        "x": 0,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 5,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 6,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 7,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 8,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 9,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 10,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 11,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 12,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 13,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 14,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 15,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 16,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 17,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 18,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 19,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ],
+    [
+      {
+        "x": 0,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 5,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 6,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 7,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 8,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 9,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 10,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 11,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 12,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 13,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 14,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 15,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 16,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 17,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 18,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 19,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ],
+    [
+      {
+        "x": 0,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 5,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 6,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 7,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 8,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 9,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 10,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 11,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 12,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 13,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 14,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 15,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 16,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 17,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 18,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 19,
+        "y": 4,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ],
+    [
+      {
+        "x": 0,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 5,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 6,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 7,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 8,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 9,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 10,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 11,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 12,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 13,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 14,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 15,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 16,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 17,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 18,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 19,
+        "y": 5,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ],
+    [
+      {
+        "x": 0,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 5,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 6,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 7,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 8,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 9,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 10,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 11,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 12,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 13,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 14,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 15,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 16,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 17,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 18,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 19,
+        "y": 6,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ],
+    [
+      {
+        "x": 0,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 5,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 6,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 7,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 8,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 9,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 10,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 11,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 12,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 13,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 14,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 15,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 16,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 17,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 18,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 19,
+        "y": 7,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ],
+    [
+      {
+        "x": 0,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 5,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 6,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 7,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 8,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 9,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 10,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 11,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 12,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 13,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 14,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 15,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 16,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 17,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 18,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 19,
+        "y": 8,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ],
+    [
+      {
+        "x": 0,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 5,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 6,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 7,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 8,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 9,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 10,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 11,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 12,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 13,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 14,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 15,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 16,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 17,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 18,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 19,
+        "y": 9,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ]
+  ]
+}
index 621c247..e063959 100644 (file)
@@ -10,7 +10,7 @@ use std::io::prelude::*;
 
 #[test]
 fn it_successfully_simulates_replay() {
-    test_from_replay("tests/after_113", 32);
+    test_from_replay("tests/after_200", 62);
 }
 
 fn test_from_replay(replay_folder: &str, length: usize) {
@@ -37,12 +37,14 @@ fn read_player_command(filename: &str) -> Command {
     }
     else {
         let mut components = content.split(',');
-        Command::Build(
-            Point::new(components.next().unwrap().trim().parse().unwrap(),
-                       components.next().unwrap().trim().parse().unwrap()
-            ),
-            BuildingType::from_u8(components.next().unwrap().trim().parse().unwrap()).unwrap()
-        )
+        let point = Point::new(components.next().unwrap().trim().parse().unwrap(),
+                               components.next().unwrap().trim().parse().unwrap());
+        let action_type = components.next().unwrap().trim().parse().unwrap();
+        if action_type == 3 {
+            Command::Deconstruct(point)
+        } else {
+            Command::Build(point, BuildingType::from_u8(action_type).unwrap())
+        }
     }
 }
 
diff --git a/tests/monte-carlo-test.rs b/tests/monte-carlo-test.rs
new file mode 100644 (file)
index 0000000..479b36d
--- /dev/null
@@ -0,0 +1,19 @@
+extern crate zombot;
+extern crate time;
+use time::{PreciseTime, Duration};
+
+use zombot::*;
+
+const STATE_PATH: &str = "tests/state0.json";
+
+// there are assertions in the game engine, run when it's in debug mode
+#[test]
+fn it_does_a_normal_turn_successfully() {
+    let start_time = PreciseTime::now();
+    let (settings, state) = match input::json::read_state_from_file(STATE_PATH) {
+        Ok(ok) => ok,
+        Err(error) => panic!("Error while parsing JSON file: {}", error)
+    };
+    let max_time = Duration::milliseconds(1950);
+    strategy::monte_carlo::choose_move(&settings, &state, &start_time, max_time);
+}
index fa41459..ef5cd39 100644 (file)
@@ -1 +1,310 @@
-{"gameDetails":{"round":0,"mapWidth":8,"mapHeight":4,"roundIncomeEnergy":5,"buildingPrices":{"ENERGY":20,"ATTACK":30,"DEFENSE":30},"buildingsStats":{"ENERGY":{"health":5,"constructionTime":2,"price":20,"weaponDamage":0,"weaponSpeed":0,"weaponCooldownPeriod":0,"energyGeneratedPerTurn":3,"destroyMultiplier":1,"constructionScore":1},"ATTACK":{"health":5,"constructionTime":2,"price":30,"weaponDamage":5,"weaponSpeed":1,"weaponCooldownPeriod":3,"energyGeneratedPerTurn":0,"destroyMultiplier":1,"constructionScore":1},"DEFENSE":{"health":20,"constructionTime":4,"price":30,"weaponDamage":0,"weaponSpeed":0,"weaponCooldownPeriod":0,"energyGeneratedPerTurn":0,"destroyMultiplier":1,"constructionScore":1}}},"players":[{"playerType":"A","energy":20,"health":100,"hitsTaken":0,"score":0},{"playerType":"B","energy":20,"health":100,"hitsTaken":0,"score":0}],"gameMap":[[{"x":0,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":0,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":5,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":6,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":7,"y":0,"buildings":[],"missiles":[],"cellOwner":"B"}],[{"x":0,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":1,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":5,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":6,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":7,"y":1,"buildings":[],"missiles":[],"cellOwner":"B"}],[{"x":0,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":2,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":5,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":6,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":7,"y":2,"buildings":[],"missiles":[],"cellOwner":"B"}],[{"x":0,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":1,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":2,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":3,"y":3,"buildings":[],"missiles":[],"cellOwner":"A"},{"x":4,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":5,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":6,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"},{"x":7,"y":3,"buildings":[],"missiles":[],"cellOwner":"B"}]]}
+{
+  "gameDetails": {
+    "round": 0,
+    "mapWidth": 8,
+    "mapHeight": 4,
+    "roundIncomeEnergy": 5,
+    "buildingPrices": {
+      "TESLA": 300,
+      "ENERGY": 20,
+      "ATTACK": 30,
+      "DEFENSE": 30
+    },
+    "buildingsStats": {
+      "TESLA": {
+        "health": 5,
+        "constructionTime": 11,
+        "price": 300,
+        "weaponDamage": 20,
+        "weaponSpeed": 0,
+        "weaponCooldownPeriod": 10,
+        "energyGeneratedPerTurn": 0,
+        "destroyMultiplier": 1,
+        "constructionScore": 1
+      },
+      "ENERGY": {
+        "health": 5,
+        "constructionTime": 2,
+        "price": 20,
+        "weaponDamage": 0,
+        "weaponSpeed": 0,
+        "weaponCooldownPeriod": 0,
+        "energyGeneratedPerTurn": 3,
+        "destroyMultiplier": 1,
+        "constructionScore": 1
+      },
+      "ATTACK": {
+        "health": 5,
+        "constructionTime": 2,
+        "price": 30,
+        "weaponDamage": 5,
+        "weaponSpeed": 1,
+        "weaponCooldownPeriod": 3,
+        "energyGeneratedPerTurn": 0,
+        "destroyMultiplier": 1,
+        "constructionScore": 1
+      },
+      "DEFENSE": {
+        "health": 20,
+        "constructionTime": 4,
+        "price": 30,
+        "weaponDamage": 0,
+        "weaponSpeed": 0,
+        "weaponCooldownPeriod": 0,
+        "energyGeneratedPerTurn": 0,
+        "destroyMultiplier": 1,
+        "constructionScore": 1
+      }
+    }
+  },
+  "players": [
+    {
+      "playerType": "A",
+      "energy": 20,
+      "health": 100,
+      "hitsTaken": 0,
+      "score": 0
+    },
+    {
+      "playerType": "B",
+      "energy": 20,
+      "health": 100,
+      "hitsTaken": 0,
+      "score": 0
+    }
+  ],
+  "gameMap": [
+    [
+      {
+        "x": 0,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 5,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 6,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 7,
+        "y": 0,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ],
+    [
+      {
+        "x": 0,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 5,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 6,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 7,
+        "y": 1,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ],
+    [
+      {
+        "x": 0,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 5,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 6,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 7,
+        "y": 2,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ],
+    [
+      {
+        "x": 0,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 1,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 2,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 3,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "A"
+      },
+      {
+        "x": 4,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 5,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 6,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      },
+      {
+        "x": 7,
+        "y": 3,
+        "buildings": [],
+        "missiles": [],
+        "cellOwner": "B"
+      }
+    ]
+  ]
+}