private static void StartNewRound() { foreach (var card in CutCards) { Deck.Cards.Push(card); } foreach (var card in FloppedCards) { Deck.Cards.Push(card); } Deck.Cards = Shuffle(Deck.Cards); Round.NewRound(); foreach (var player in Round.Players) { DealHand(player); } PlayerActionEventArgs args = new PlayerActionEventArgs { }; PokerEventsMediator.OnUpdateGraphics(null, args); t1 = new Thread(StartBets); t1.Start(); }
private static void DealCards(object sender, EventArgs e) { switch (stage) { case 0: DealFlop(); break; case 1: DealOneCard(); break; case 2: DealOneCard(); break; } FlopEventArgs flopArgs = new FlopEventArgs { FloppedCards = FloppedCards }; PokerEventsMediator.OnFlop(null, flopArgs); if (stage <= 2) { t1 = new Thread(StartBets); t1.Start(); Clock.InitClock(15); } else if (stage > 2) { //show hands, calculate winner Clock.StopClock(); } }
public static void IncreasePot(int amount, int playerNr) { Pot += amount; Players[playerNr].Chips -= amount; BetEventArgs args = new BetEventArgs { BetAmount = amount, PlaceAtTable = playerNr }; PokerEventsMediator.OnBet(null, args); }
public static void StartBets() { int placeAtTable = 0; LastBet = 0; for (int i = 0; i < Round.Players.Count; i++) { Clock.InitClock(15); action = PlayerAction.Wait; PlayerDataEventArgs args = new PlayerDataEventArgs { Chips = Round.Players[i].Chips, PlaceAtTable = placeAtTable++, LastBet = LastBet }; PokerEventsMediator.OnStartBet(null, args); while (action == PlayerAction.Wait) { Thread.Sleep(10); } switch (action) { case PlayerAction.Check: break; case PlayerAction.Bet: Round.IncreasePot(PlayerBet, i); LastBet = PlayerBet - LastBet; if (PlayerBet > LastBet) { //start new betting round where index 0 = next player } break; case PlayerAction.Fold: Round.Players.RemoveAt(i--); break; } } PokerEventsMediator.OnBetsStageEnded(null, EventArgs.Empty); stage++; }