From 26210d7b73f37e30d1b5ca88e2275fd01caf5d72 Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Mon, 14 Oct 2013 19:33:05 +0200 Subject: Initial commit with the Mono Rot Bot --- Entelect.BattleCity.Challenge/GameInProgress.cs | 64 +++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Entelect.BattleCity.Challenge/GameInProgress.cs (limited to 'Entelect.BattleCity.Challenge/GameInProgress.cs') diff --git a/Entelect.BattleCity.Challenge/GameInProgress.cs b/Entelect.BattleCity.Challenge/GameInProgress.cs new file mode 100644 index 0000000..61fa436 --- /dev/null +++ b/Entelect.BattleCity.Challenge/GameInProgress.cs @@ -0,0 +1,64 @@ +using System; +using System.Windows; +using System.Collections.Generic; +using System.Threading; + +namespace Entelect.BattleCity.Challenge +{ + class GameInProgress + { + public static void run(ChallengeService.ChallengeClient service, ChallengeService.state?[][] state) + { + AiAgent agent = new AiAgent(); + + while (true) + { + var game = service.getStatus(); + long currentTick = DateTime.Now.Ticks; + long nextTick = game.nextTickTime.Ticks; + if (currentTick > nextTick) + { + continue; + } + + // AI logic here + Move tank1Move = agent.GetBestMove(state, game, 0); + Move tank2Move = agent.GetBestMove(state, game, 1); + + if (tank1Move != null) + { + service.setActionAsync(tank1Move.Tank, tank1Move.Action); + } + if (tank2Move != null) + { + service.setActionAsync(tank2Move.Tank, tank2Move.Action); + } + + currentTick = DateTime.Now.Ticks; + + long sleepTime = nextTick - currentTick; + if (sleepTime < 0L) + { + Console.Error.WriteLine("ERROR: Gone passed the next tick time"); + } + else + { + Console.WriteLine("Sleeping until {1} for {0}ms", sleepTime, game.nextTickTime.ToString()); + } + + try + { + Thread.Sleep(TimeSpan.FromTicks(sleepTime)); + } + catch (Exception) + { + continue; + } + //while (startTick < nextTick) + //{ + // startTick += (DateTime.Now.Ticks - startTick); + //} + } + } + } +} -- cgit v1.2.3