Esempio n. 1
0
        protected void AddProsperityCards(CardBank bank)
        {
            bank.AddCardPile(new UnlimitedSupplyCardPile(() => new Platinum()));

            var colonyPile = new LimitedSupplyCardPile();            
            colonyPile.WithNewCards<Colony>(_numberOfPlayers <= 2 ? 8 : 12);
            bank.AddCardPileWhichEndsTheGameWhenEmpty(colonyPile);
        }
Esempio n. 2
0
        protected void AddProsperityCards(CardBank bank)
        {
            bank.AddCardPile(new UnlimitedSupplyCardPile(() => new Platinum()));

            var colonyPile = new LimitedSupplyCardPile();

            colonyPile.WithNewCards <Colony>(_numberOfPlayers <= 2 ? 8 : 12);
            bank.AddCardPileWhichEndsTheGameWhenEmpty(colonyPile);
        }
        public override void InitializeBank(CardBank bank)
        {
            foreach (string card in _chosenCards)
                bank.AddCardPile(new LimitedSupplyCardPile().WithNewCards(card, GetStartingCount(card)));

            if (_useProsperity)            
                AddProsperityCards(bank);                            

            base.InitializeBank(bank);
        }
        public override void InitializeBank(CardBank bank)
        {
            foreach (var card in mChosenCards)
                bank.AddCardPile(new LimitedSupplyCardPile().WithNewCards(card, 10));

            if (_useProsperity)            
                AddProsperityCards(bank);                            

            base.InitializeBank(bank);
        }
Esempio n. 5
0
        public Game CreateGame(IEnumerable<string> playerNames)
        {
            if(playerNames.Count() != _numberOfPlayers)
                throw new ArgumentException(string.Format("Expected {0} player names.", playerNames));

            var bank = new CardBank();
            InitializeBank(bank);

            var players = playerNames.Select(name => new Player(name, CreateStartingDeck()));
            return new Game(players, bank, new TextGameLog());
        }
 public virtual void InitializeBank(CardBank bank)
 {
     bank.AddCardPile(Gold);
     bank.AddCardPile(Silver);            
     bank.AddCardPileWhichEndsTheGameWhenEmpty(Provinces);
     bank.AddCardPile(Duchies);
     bank.AddCardPile(Potions);
     bank.AddCardPile(Copper);                        
     bank.AddCardPile(Estates);                        
     bank.AddCardPile(Curses);
 }
Esempio n. 7
0
        public virtual void InitializeBank(CardBank bank)
        {
            bank.AddCardPile(Gold);
            bank.AddCardPile(Silver);            
            bank.AddCardPileWhichEndsTheGameWhenEmpty(Provinces);
            bank.AddCardPile(Duchies);            
            bank.AddCardPile(Copper);                        
            bank.AddCardPile(Estates);                        
            bank.AddCardPile(Curses);

            if(bank.Piles.Any(p => p.TopCard.Cost.Potions > 0))
                bank.AddCardPile(Potions);
        }
Esempio n. 8
0
        public override void InitializeBank(CardBank bank)
        {
            foreach (string card in _chosenCards)
            {
                bank.AddCardPile(new LimitedSupplyCardPile().WithNewCards(card, GetStartingCount(card)));
            }

            if (_useProsperity)
            {
                AddProsperityCards(bank);
            }

            base.InitializeBank(bank);
        }
Esempio n. 9
0
        public Game CreateGame(IEnumerable <string> playerNames)
        {
            if (playerNames.Count() != _numberOfPlayers)
            {
                throw new ArgumentException(string.Format("Expected {0} player names.", playerNames));
            }

            var bank = new CardBank();

            InitializeBank(bank);

            var players = playerNames.Select(name => new Player(name, CreateStartingDeck()));

            return(new Game(players, bank, new TextGameLog()));
        }
Esempio n. 10
0
        public virtual void InitializeBank(CardBank bank)
        {
            bank.AddCardPile(Gold);
            bank.AddCardPile(Silver);
            bank.AddCardPileWhichEndsTheGameWhenEmpty(Provinces);
            bank.AddCardPile(Duchies);
            bank.AddCardPile(Copper);
            bank.AddCardPile(Estates);
            bank.AddCardPile(Curses);

            if (bank.Piles.Any(p => p.TopCard.Cost.Potions > 0))
            {
                bank.AddCardPile(Potions);
            }
        }
Esempio n. 11
0
        public Game(IEnumerable<Player> players, CardBank bank, IGameLog log)
        {
            if(!players.Any())
                throw new ArgumentException("There must be at least one player");

            _players = new List<Player>(players);

            Bank = bank;
            Log = log;
            Trash = new TrashPile();

            _gameTurns = GameTurns().GetEnumerator();
            _gameTurns.MoveNext();


        }
Esempio n. 12
0
        private void UpdateBank(CardBank bank)
        {
            var container = flowLayoutPanel1;

            container.Controls.Clear();

            foreach (var pile in bank.Piles)
            {
                var button = new Button();
                button.Width = 200;

                button.Enabled = _turnEnumerator.Current.InBuyStep &&
                                 _turnEnumerator.Current.Buys > 0 &&
                                 _turnEnumerator.Current.MoneyToSpend >= pile.TopCard.Cost &&
                                 !pile.IsEmpty;

                var currentPile = pile;

                if (pile is UnlimitedSupplyCardPile)
                {
                    button.Text   = string.Format("Buy {0} for {1} ", pile.TopCard, pile.TopCard.Cost);
                    button.Click += (sender, args) => { _turnEnumerator.Current.Buy(currentPile); RefreshUI(); };
                }
                else if (pile.IsEmpty)
                {
                    button.Text    = string.Format("Sold out");
                    button.Enabled = false;
                }
                else
                {
                    button.Text   = string.Format("Buy {0} for {1} ({2} remaining)", pile.TopCard, pile.TopCard.Cost, pile.CardCount);
                    button.Click += (sender, args) => { _turnEnumerator.Current.Buy(currentPile); RefreshUI(); };
                }

                container.Controls.Add(button);
            }
        }
Esempio n. 13
0
        private void UpdateBank(CardBank bank)
        {
            var container = flowLayoutPanel1;
            container.Controls.Clear();

            foreach(var pile in bank.Piles)
            {
                var button = new Button();
                button.Width = 200;

                button.Enabled = _turnEnumerator.Current.InBuyStep
                                 && _turnEnumerator.Current.Buys > 0
                                 && _turnEnumerator.Current.MoneyToSpend >= pile.TopCard.Cost
                                 && !pile.IsEmpty;

                var currentPile = pile;

                if(pile is UnlimitedSupplyCardPile)
                {
                    button.Text = string.Format("Buy {0} for {1} ", pile.TopCard, pile.TopCard.Cost);
                    button.Click += (sender, args) => { _turnEnumerator.Current.Buy(currentPile); RefreshUI(); };
                }
                else if(pile.IsEmpty)
                {
                    button.Text = string.Format("Sold out");
                    button.Enabled = false;
                }
                else
                {
                    button.Text = string.Format("Buy {0} for {1} ({2} remaining)", pile.TopCard, pile.TopCard.Cost, pile.CardCount);
                    button.Click += (sender, args) => { _turnEnumerator.Current.Buy(currentPile); RefreshUI(); };
                }

                container.Controls.Add(button);
            }
        }
Esempio n. 14
0
 public GainUtility(IGameLog log, CardBank bank, Player player)
 {
     _log    = log;
     _player = player;
     _bank   = bank;
 }