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; }
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]; }
public void Deal() { Table.AddCard(Deck.Draw()); Table.AddCard(Deck.Draw()); }
public void AddCardToTable() { Table.AddCard(Deck.Draw()); }