Пример #1
0
        public void DoTurn(IPirateGame game)
        {
            BoardStatus   status  = GetBoardStatus(game);
            PirateTactics tactics = AssignTargets(game, status);

            TakeAction(game, tactics);
        }
        private PirateTactics AssignTargets(IPirateGame game, BoardStatus status)
        {
            PirateTactics tactics = new PirateTactics()
            {
                Pirate = status.Pirate
            };

            tactics.Moves = game.GetActionsPerTurn();
            if (status.Script != null)
            {
                tactics.FinalDestination = status.Script.Location;
            }
            else if (!tactics.Pirate.HasTreasure)
            {
                tactics.FinalDestination = status.Treasure.Location;
            }
            else
            {
                tactics.Moves            = 1;
                tactics.FinalDestination = status.Pirate.InitialLocation;
            }
            List <Location> possibleLocations = game.GetSailOptions(tactics.Pirate, tactics.FinalDestination, tactics.Moves);
            List <Location> safeLocations     = GetSafeLocations(game, possibleLocations);

            if (safeLocations.Count > 0)
            {
                tactics.TempDestination = safeLocations[0];
            }
            return(tactics);
        }
Пример #3
0
 private void TakeAction(IPirateGame game, PirateTactics tactics)
 {
     if (TryDefend(game, tactics.Pirate) == true)
     {
         return;
     }
     if (TryAttack(game, tactics.Pirate) == true)
     {
         return;
     }
     game.SetSail(tactics.Pirate, tactics.TempDestination);
 }
Пример #4
0
        private PirateTactics AssignTargets(IPirateGame game, BoardStatus status)
        {
            PirateTactics tactics = new PirateTactics()
            {
                Pirate = status.Pirate
            };

            if (!tactics.Pirate.HasTreasure)
            {
                tactics.Moves            = game.GetActionsPerTurn();
                tactics.FinalDestination = status.Treasure.Location;
            }
            else
            {
                tactics.Moves            = 1;
                tactics.FinalDestination = status.Pirate.InitialLocation;
            }
            List <Location> possibleLocations = game.GetSailOptions(tactics.Pirate, tactics.FinalDestination, tactics.Moves);

            tactics.TempDestination = possibleLocations[0];
            return(tactics);
        }