public void BuyPhase(IGame game, ITurn turn, IPlayer player) { foreach (ICard card in player.Hand) { if ((card.Type & CardType.Treasure) == CardType.Treasure) turn.PlayTreasure(card); } while (turn.Buys > 0) { if (turn.Treasure >= 8 && game.HasAvailable(Game.Base.Cards.Province)) turn.BuyCard(Game.Base.Cards.Province); else if (turn.Treasure >= 6 && game.HasAvailable(Game.Base.Cards.Gold)) turn.BuyCard(Game.Base.Cards.Gold); else if (turn.Treasure >= 3 && game.HasAvailable(Game.Base.Cards.Silver)) turn.BuyCard(Game.Base.Cards.Silver); else break; } }
public void BuyPhase(IGame game, ITurn turn, IPlayer player) { foreach (ICard card in player.Hand) { if ((card.Type & CardType.Treasure) == CardType.Treasure) turn.PlayTreasure(card); } while (turn.Buys > 0) { bool bought = true; if (turn.Treasure >= 8 && game.HasAvailable(Game.Base.Cards.Province)) turn.BuyCard(Game.Base.Cards.Province); else if (turn.Treasure >= 6 && game.HasAvailable(Game.Base.Cards.Gold)) turn.BuyCard(Game.Base.Cards.Gold); else if (turn.Treasure >= 5 && game.HasAvailable(Game.Base.Cards.Mine) && (Count(player, "Mine") / Count(player, "Cards")) < TuningParameters.Get<double>("MineRatio", 0)) { turn.BuyCard(Game.Base.Cards.Mine); Increment(player, "Mine"); } else if (turn.Treasure >= 5 && game.HasAvailable(Game.Base.Cards.Market) && (Count(player, "Market") / Count(player, "Cards")) < TuningParameters.Get<double>("MarketRatio", 0)) { turn.BuyCard(Game.Base.Cards.Market); Increment(player, "Market"); } else if (turn.Treasure >= 4 && game.HasAvailable(Game.Base.Cards.Smithy) && (Count(player, "Smithy") / Count(player, "Cards")) < TuningParameters.Get<double>("SmithyRatio", 0)) { turn.BuyCard(Game.Base.Cards.Smithy); Increment(player, "Smithy"); } else if (turn.Treasure >= 4 && game.HasAvailable(Game.Base.Cards.Militia) && (Count(player, "Militia") / Count(player, "Cards")) < TuningParameters.Get<double>("MilitiaRatio", 0)) { turn.BuyCard(Game.Base.Cards.Militia); Increment(player, "Militia"); } else if (turn.Treasure >= 3 && game.HasAvailable(Game.Base.Cards.Village) && (Count(player, "Village") / Count(player, "Cards")) < TuningParameters.Get<double>("VillageRatio", 0)) { turn.BuyCard(Game.Base.Cards.Village); Increment(player, "Village"); } else if (turn.Treasure >= 3 && game.HasAvailable(Game.Base.Cards.Woodcutter) && (Count(player, "Woodcutter") / Count(player, "Cards")) < TuningParameters.Get<double>("WoodcutterRatio", 0)) { turn.BuyCard(Game.Base.Cards.Woodcutter); Increment(player, "Woodcutter"); } else if (turn.Treasure >= 3 && game.HasAvailable(Game.Base.Cards.Silver)) turn.BuyCard(Game.Base.Cards.Silver); else if (turn.Treasure >= 2 && game.HasAvailable(Game.Base.Cards.Cellar) && (Count(player, "Cellar") / Count(player, "Cards")) < TuningParameters.Get<double>("CellarRatio", 0)) { turn.BuyCard(Game.Base.Cards.Cellar); Increment(player, "Cellar"); } else if (turn.Treasure >= 2 && game.HasAvailable(Game.Base.Cards.Moat) && (Count(player, "Moat") / Count(player, "Cards")) < TuningParameters.Get<double>("MoatRatio", 0)) { turn.BuyCard(Game.Base.Cards.Moat); Increment(player, "Moat"); } else if (turn.Treasure >= 2 && game.HasAvailable(Game.Base.Cards.Estate)) turn.BuyCard(Game.Base.Cards.Estate); else bought = false; if (bought) { Increment(player, "Cards"); continue; } else break; } }