public void Test1()
        {
            var ai    = new ConnectClosestMinesAi();
            var state = new State {
                punter = 0, punters = 1, map = MapLoader.LoadMap(Path.Combine(TestContext.CurrentContext.TestDirectory, @"..\..\..\..\maps\sample.json")).Map
            };

            ai.Setup(state, new Services(state));
            var moveDecision = ai.GetNextMove(state, new Services(state));

            Assert.That(moveDecision.move, Is.EqualTo(Move.Claim(0, 5, 3)));
            state.map = state.map.ApplyMove(moveDecision.move);
            state.turns.Add(new TurnState());
            moveDecision = ai.GetNextMove(state, new Services(state));
            Assert.That(moveDecision.move, Is.EqualTo(Move.Claim(0, 1, 3)));
            state.map = state.map.ApplyMove(moveDecision.move);
            state.turns.Add(new TurnState());
            moveDecision = ai.GetNextMove(state, new Services(state));
            Assert.That(moveDecision.move, Is.EqualTo(Move.Claim(0, 0, 1)));
        }
        public void Show()
        {
            var form    = new Form();
            var painter = new MapPainter();
            var map     = MapLoader.LoadMap(Path.Combine(TestContext.CurrentContext.TestDirectory, @"..\..\..\..\maps\sample.json"));

            var ai        = new ConnectClosestMinesAi();
            var simulator = new GameSimulator(map.Map, new Settings());

            simulator.StartGame(new List <IAi> {
                ai
            });
            var gameState = simulator.NextMove();

            painter.Map = gameState.CurrentMap;

            var panel = new ScaledViewPanel(painter)
            {
                Dock = DockStyle.Fill
            };

            form.Controls.Add(panel);
            form.ShowDialog();
        }