Exemple #1
0
        /*public static int IcebergEndangermentLevel(this Iceberg berg,bool ByEnemy)
         * {
         *  Player attacker;
         *  if (ByEnemy)
         *  {
         *      attacker = game.GetEnemy();
         *  }
         *  else
         *  {
         *      attacker = game.GetMyself();
         *  }
         *  List<Iceberg> EnemyAndMyself = game.GetEnemyIcebergs().Concat(game.GetMyIcebergs()).ToList();
         *  EnemyAndMyself =
         *  (from Iceberg i in EnemyAndMyself
         *   where !i.Equals(berg)
         *   orderby i.GetTurnsTillArrival(berg)
         *   select i).ToList();
         *  int endangerment = 0;
         *  foreach(Iceberg i in EnemyAndMyself)
         *  {
         *
         *  }
         * }*/
        public static double Eval(this Iceberg berg, Player PrespectivePlayer)
        {
            Iceberg[] bergs =
                (from Iceberg i in PrespectivePlayer.Icebergs
                 where !i.Equals(berg)
                 select i).ToArray();
            int[] penguinsToSend =
                (from Iceberg i in bergs
                 let send = berg.SimplifiedPenguinsToSend(i)
                            where send < i.PenguinAmount
                            select send).ToArray();
            if (penguinsToSend.Length == 0)
            {
                return(int.MaxValue);
            }
            int min = penguinsToSend.Min();

            return((double)min / berg.PenguinsPerTurn);
        }
Exemple #2
0
        public static bool CanAttackSimplified(this Iceberg From, Iceberg To)
        {
            int amount = To.SimplifiedPenguinsToSend(From);

            return(From.PenguinAmount > amount + 1);
        }