コード例 #1
0
ファイル: HoldemGame.cs プロジェクト: Kar98/MiniCasino
        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!");
        }
コード例 #2
0
ファイル: HoldemGame.cs プロジェクト: Kar98/MiniCasino
        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);
            }
        }
コード例 #3
0
ファイル: HoldemGame.cs プロジェクト: Kar98/MiniCasino
        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;
        }