コード例 #1
0
        private static void CalculateNotForwardNearestMoves(EnemyTank enemyTank)
        {
            if (!AppSettings.EnableEnemyTankNotForwardNearestMoves)
            {
                return;
            }

            var notForwardDirections = BaseMobile.ValidDirections.Where(x => x != enemyTank.Direction).ToList();

            foreach (var direction in notForwardDirections)
            {
                var nextPoint = enemyTank.GetNextPoints(enemyTank.Point, direction).First();
                var nextCell  = Field.GetCell(nextPoint);

                if (nextCell.CanMove)
                {
                    nextCell.AddPrediction(1, PredictionType.EnemyMove, item: enemyTank);
                }
            }
        }
コード例 #2
0
        private static void CalculateEnemyMovePredictions(EnemyTank enemyTank)
        {
            var thisCell = Field.GetCell(enemyTank.Point);

            thisCell.AddPrediction(1, PredictionType.EnemyMove, item: enemyTank);

            CalculateNotForwardNearestMoves(enemyTank);

            var predictionStartPoint = enemyTank.Point;

            for (var depth = 1; depth <= AppSettings.EnemyTankMovePredictionDepth; depth++)
            {
                var nextPoint = enemyTank.GetNextPoints(predictionStartPoint).First();
                var nextCell  = Field.GetCell(nextPoint);

                if (nextCell.CanMove)
                {
                    nextCell.AddPrediction(depth, PredictionType.EnemyMove, item: enemyTank);
                    predictionStartPoint = nextPoint;
                }
            }
        }