Пример #1
0
        public void AddExistingPlayer(IPlayer player)
        {
            IPlayer p = new ActivePlayer(player.Name, Table, Players.Count + 1, player.Money);

            p.AddCard(Deck.Draw());
            p.AddCard(Deck.Draw());
            p.TurnAllCards();
            Players.Add(p);
        }
Пример #2
0
 public void PrepareForNextRound()
 {
     foreach (var player in Players)
     {
         player.Folded     = false;
         player.Winner     = false;
         player.PrizeMoney = 0;
         player.Table      = Table;
         player.PokerCards = new List <PokerCard>();
         player.AddCard(Deck.Draw());
         player.AddCard(Deck.Draw());
     }
 }
Пример #3
0
        public void InitGame()
        {
            int dealerIndex;
            int bigBlindIndex;
            int smallBlindIndex;

            ListBots = new List <IPlayer>();
            for (int i = 0; i < 3; i++)
            {
                Table.AddCard(Deck.Draw());
            }
            // De verschillende bots in een lijst plaatsen
            foreach (var player in Players)
            {
                if (player.GetType() == typeof(Bot))
                {
                    ListBots.Add(player);
                }
            }
            // De Big -en Small Blind + de dealer bepalen
            // Kijken of er reeds een dealer is aangesteld,
            // Zoja: schuif de dealer 1 pos nr links, Zonee: Selecteer een random dealer
            if (Players.FirstOrDefault(p => p.IsDealer) == null)
            {
                dealerIndex = new Random().Next(0, Players.Count - 1);
            }
            // Indien er reeds een dealer was in het vorige spel schuift de dealer 1 pos nr links
            else
            {
                dealerIndex = Players.IndexOf(Players.FirstOrDefault(p => p.IsDealer));
                dealerIndex = dealerIndex + 1 == Players.Count ? 0 : dealerIndex + 1;
            }
            smallBlindIndex = dealerIndex + 1 == Players.Count ? 0 : dealerIndex + 1;
            if (Players.Count != 2)
            {
                bigBlindIndex = smallBlindIndex + 1 == Players.Count ? 0 : smallBlindIndex + 1;
            }
            else
            {
                bigBlindIndex = dealerIndex;
            }
            Players[dealerIndex].IsDealer         = true;
            Players[smallBlindIndex].IsSmallBlind = true;
            Players[smallBlindIndex].Bet(5);
            Players[bigBlindIndex].IsBigBlind = true;
            Players[bigBlindIndex].Bet(10);
            StartIndex        = bigBlindIndex + 1 == Players.Count ? 0 : bigBlindIndex + 1;
            ActivePlayer      = Players[StartIndex];
            IndexActivePlayer = StartIndex + 1;
        }
Пример #4
0
        public void AddNewBot(string name)
        {
            if (Players.Count(c => c.Name.Equals(name)) == 1)
            {
                throw new InvalidOperationException("Player with name " + name + " already exist");
            }
            if (name.Trim().Equals(""))
            {
                throw new InvalidOperationException("Name cannot be empty");
            }
            IPlayer p = new Bot(name, Table, Players.Count + 1);

            p.AddCard(Deck.Draw());
            p.AddCard(Deck.Draw());
            p.TurnAllCards();
            Players.Add(p);
        }
Пример #5
0
        public void AddNewPlayer(string name)
        {
            // Als er reeds een actieve player in het spel zit kan er geen meer toegevoegd worden
            if (Players.Count(c => c.GetType() == typeof(ActivePlayer)) == 1)
            {
                throw new InvalidOperationException("There is already a acitvePlayer in the game");
            }
            // Kijken of er al een player met die naam voorkomt. Naam moet uniek zijn
            if (Players.Count(c => c.Name.Equals(name)) == 1)
            {
                throw new InvalidOperationException("Player with name " + name + " already exist");
            }
            if (name.Trim().Equals(""))
            {
                throw new InvalidOperationException("Name cannot be empty");
            }
            // Bij de initialisatie van een player krijgt deze 2 kaarten.
            IPlayer p = new ActivePlayer(name, Table, Players.Count + 1);

            p.AddCard(Deck.Draw());
            p.AddCard(Deck.Draw());
            p.TurnAllCards();
            Players.Add(p);
        }
Пример #6
0
 public void Deal()
 {
     Table.AddCard(Deck.Draw());
     Table.AddCard(Deck.Draw());
 }
Пример #7
0
        public void NextPlayer()
        {
            // Als er nog 1 of minder spelers overblijven is het spel gedaan
            if (Players.Count(p => p.Folded) >= Players.Count - 1)
            {
                EndGame();
            }
            // Eerst wordt er gekeken of de vorige player gefold heeft.
            // Zoja, dan wordt hij overgeslagen.

            while (Players[(IndexActivePlayer) % Players.Count].Folded)
            {
                IndexActivePlayer++;
                RollingIndex++;
            }
            RollingIndex++;



            // Als elke speler aan de beurt is geweest en elke niet gefolde speler heeft evenveel gebet
            int i = Players.Count(p => (p.CurrentBet == Table.CurrentBet && !p.Folded));
            int j = Players.Count(p => !p.Folded);
            int x = Players.Count(p => p.Folded);

            // normaal moet het rollingindex % players.count zijn dit levert problemen op
            if ((RollingIndex >= Players.Count) && (Players.Count(p => (p.CurrentBet == Table.CurrentBet && !p.Folded)) == Players.Count(p => !p.Folded)))
            {
                try
                {
                    Table.CurrentBet = 0;
                    // Na de eerste ronde worden de 3 org kaarten op de tafel omgedraaid
                    if (PreFlop)
                    {
                        Table.TurnAllCards();
                        PreFlop = false;
                    }
                    else
                    {
                        PokerCard card = Deck.Draw();
                        card.TurnCard();
                        Table.AddCard(card);
                    }
                    foreach (var p in Players)
                    {
                        p.CurrentBet = 0;
                    }
                    //IndexActivePlayer = StartIndex;
                    //TODO
                    // ALS P5(SERVER) CHECKT EN P1 BET --> P5 MOET CALLEN = er wordt een loop gemaakt.
                    // Telkens wanneer er een loop wordt gemaakt moet de StartIndex + 1 gedaan worden.
                    RollingIndex = 0;
                    //Wanneer er op een gefolde speler gespawnd wordt, zal deze overgeslagen worden.
                    while (Players[(IndexActivePlayer) % Players.Count].Folded)
                    {
                        IndexActivePlayer++;
                        RollingIndex++;
                    }
                }
                catch (InvalidOperationException)
                {
                    EndGame();
                }
            }
            ActivePlayer = Players[IndexActivePlayer++ % Players.Count];
        }
Пример #8
0
 public void AddCardToTable()
 {
     Table.AddCard(Deck.Draw());
 }