private PlayerAction HumanPlay(PokerPlayer player, BetStage bs) { bool awaitResp = true; Console.WriteLine($"Current betting stage : {bs.ToString()}"); Console.WriteLine("Enter 'raise #', 'call', 'hand' or 'fold' for player actions"); Console.WriteLine("Enter 'hand' to view current hand"); while (awaitResp) { var action = WaitForCommand(); action = action.ToLower(); var splitAct = action.Split(' '); if (splitAct.Length == 1) { switch (splitAct[0]) { case "call": var a = Call(player); if (a != PlayerAction.NONE) { return(Call(player)); } break; case "money": LogLine("Chips: " + player.Chips); break; case "fold": return(Fold(player)); case "hand": PrintTableCards(); player.PrintCards(); Console.WriteLine(); break; } } else if (splitAct.Length > 1 && splitAct[0] == "raise") { if (int.TryParse(splitAct[1], out int res)) { var a = Raise(player, res); if (a != PlayerAction.NONE) { return(Raise(player, res)); } } } else { LogLine("Enter a valid value"); } } throw new Exception("No player action performed!"); }
private PlayerAction PlayerAI(PokerPlayer player, BetStage bs) { switch (bs) { case BetStage.INITIAL: return(Call(player)); case BetStage.FLOP: if (r.Next(20) == 1) { return(Raise(player, 20)); } else { return(Call(player)); } case BetStage.TURN: return(Call(player)); case BetStage.RIVER: return(Call(player)); default: Console.WriteLine("Error in player AI"); return(PlayerAction.NONE); } }
private void BettingRound(BetStage bs) { var players = ValidPlayers(); var startingPoint = GetStartingPosition(); var raisePoint = startingPoint; // This is the spot where the person doing the raising is located. players = ReformPlayerList(players, startingPoint); bool betsDone = false; if (bs != BetStage.INITIAL) { raiseSize = 0; } while (betsDone == false) { for (int i = 0; i < players.Count; i++) { if (players[i].BetsPlaced == false) { PlayerAction action; if (players[i].PlayerControlled()) { action = HumanPlay(players[i], bs); } else { action = PlayerAI(players[i], bs); } if (action == PlayerAction.RAISE) { raisePoint = i; SetPlayersBetsToFalseExceptPlayer(players[i]); i = players.Count; //Exit the for and reform the players list. } } } players = ReformPlayerList(players, raisePoint); betsDone = BettingChecks(players); } availablePlayers = players; }