Exemple #1
0
        private static void RunBridgeGame()
        {
            var set = new BridgeSet();

            var game = new BridgeGame(PlayerPosition.East);

            var players = Enumerable.Range(0, 4).Select(n =>
            {
                var position = (PlayerPosition)n;
                return new Player(position, set.Cards[position]);
            }).ToArray();

            var table = new ConsoleBridgeTable();

            table.ShowTable(set);
            Console.WriteLine();
            Console.WriteLine("Game Started:");
            Console.WriteLine(string.Empty.PadLeft(Console.BufferWidth, '*'));
            while (!game.Finished)
            {
                Console.Write(game.TurnStarter.ToString()[0] + ": ");
                for (int i = 0; i < 4; i++)
                {
                    var player = players.First(p => p.Position == game.Next);
                    var card = player.Play(game);
                    game.RecordOutCard(card);

                    table.ShowCard(card);
                }
                Console.WriteLine();
                Console.ReadLine();
            }
        }
Exemple #2
0
        public Card Play(BridgeGame game)
        {
            if (cards.Count < 1) throw new InvalidOperationException();

            var rnd = new Random();
            Card c;
            if (game.FirstTurnCard == null)
            {
                c = cards[rnd.Next(cards.Count)];
            }
            else
            {
                var type = game.FirstTurnCard.Type;
                if (!groupedCards.ContainsKey(type) || groupedCards[type].Count < 1)    //No cards of the type remaining
                {
                    c = cards[rnd.Next(cards.Count)];
                }
                else
                {
                    c = groupedCards[type][rnd.Next(groupedCards[type].Count)];
                }
            }
            groupedCards[c.Type].Remove(c);
            cards.Remove(c);

            return c;
        }