示例#1
0
        private static void Move(GameClientBattlecity gcb)
        {
            var r    = new Random();
            var done = false;

            switch (r.Next(5))
            {
            case 0:
                if (!gcb.IsBarrierAt(gcb.PlayerX, gcb.PlayerY - 1))
                {
                    gcb.SendActions(gcb.Up());
                    done = true;
                }
                break;

            case 1:
                if (!gcb.IsBarrierAt(gcb.PlayerX + 1, gcb.PlayerY))
                {
                    gcb.SendActions(gcb.Right());
                    done = true;
                }
                break;

            case 2:
                if (!gcb.IsBarrierAt(gcb.PlayerX, gcb.PlayerY + 1))
                {
                    gcb.SendActions(gcb.Down());
                    done = true;
                }
                break;

            case 3:
                if (!gcb.IsBarrierAt(gcb.PlayerX - 1, gcb.PlayerY))
                {
                    gcb.SendActions(gcb.Left());
                    done = true;
                }
                break;

            case 4:
                gcb.SendActions(gcb.Act());
                done = true;
                break;
            }
            if (done == false)
            {
                gcb.SendActions(gcb.Blank());
            }
        }
示例#2
0
        private static bool ActAvailableEnemy()
        {
            var       done          = false;
            const int maxObserveLen = Configuration.ActLen;

            for (int x = G.PlayerX + 1; x < Math.Min(G.Map.GetLength(0), G.PlayerX + maxObserveLen); x++)
            {
                if (G.IsAnyOfAt(x, G.PlayerY, EnemyTankElements))
                {
                    G.SendActions(G.Right() + "," + G.Act());
                    S.ActRight++;
                    done = true;
                }

                if (G.IsBarrierAt(x, G.PlayerY) || G.IsOutOf(x, G.PlayerY))
                {
                    break;
                }
            }
            for (int x = G.PlayerX - 1; x >= Math.Max(0, G.PlayerX - maxObserveLen); x--)
            {
                if (G.IsAnyOfAt(x, G.PlayerY, EnemyTankElements))
                {
                    G.SendActions(G.Left() + "," + G.Act());
                    S.ActLeft++;
                    done = true;
                }

                if (G.IsBarrierAt(x, G.PlayerY))
                {
                    break;
                }
            }
            for (int y = G.PlayerY + 1; y < Math.Min(G.Map.GetLength(1), G.PlayerY + maxObserveLen); y++)
            {
                if (G.IsAnyOfAt(G.PlayerX, y, EnemyTankElements))
                {
                    G.SendActions(G.Down() + "," + G.Act());
                    S.ActDown++;
                    done = true;
                }

                if (G.IsBarrierAt(G.PlayerX, y))
                {
                    break;
                }
            }
            for (int y = G.PlayerY - 1; y >= Math.Max(0, G.PlayerY - maxObserveLen); y--)
            {
                if (G.IsAnyOfAt(G.PlayerX, y, EnemyTankElements))
                {
                    G.SendActions(G.Up() + "," + G.Act());
                    S.ActUp++;
                    done = true;
                }

                if (G.IsBarrierAt(G.PlayerX, y))
                {
                    break;
                }
            }

            if (done)
            {
                S.ActCooldown = 4;
            }

            return(done);
        }