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); }
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); }
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); }