Ejemplo n.º 1
0
 public override void AssignCurrentGame(HeadsupGame game)
 {
     base.AssignCurrentGame(game);
     game.ChangedPhase    += game_ChangedPhase;
     game.PlayerActed     += game_PlayerActed;
     game.OnAfterShowdown += game_OnAfterShowdown;
 }
        public void TestSimpleHandByAlwaysRaiseBots()
        {
            var alwaysRaiseBot1 = new AlwaysMinRaiseBot(new PlayerEntity {
                Id = new Guid()
            });
            var alwaysRaiseBot2 = new AlwaysMinRaiseBot(new PlayerEntity {
                Id = new Guid()
            });
            var players = new List <Player> {
                alwaysRaiseBot1, alwaysRaiseBot2
            };
            var dealer = new DeterministicDealer();

            dealer.HoleCardsPlayer1 = new List <Card> {
                new Card(CardSuit.Diamonds, CardValue.Ten), new Card(CardSuit.Diamonds, CardValue.Nine)
            };
            dealer.HoleCardsPlayer2 = new List <Card> {
                new Card(CardSuit.Clubs, CardValue.Ace), new Card(CardSuit.Clubs, CardValue.Eight)
            };
            dealer.BoardCards = new List <Card> {
                new Card(CardSuit.Diamonds, CardValue.Two),
                new Card(CardSuit.Diamonds, CardValue.Three),
                new Card(CardSuit.Diamonds, CardValue.Four),
                new Card(CardSuit.Spades, CardValue.Jack),
                new Card(CardSuit.Spades, CardValue.Queen)
            };

            var game   = new HeadsupGame(players, dealer);
            var result = game.PlayHand();

            //player 1 wins with a flush
            Assert.IsTrue(result.WinnerId == alwaysRaiseBot1.Id);
            //pot size should be all ins of both bots
            Assert.IsTrue(result.PotSize == HeadsupGame.StackSize * 2);
        }
        public void TestSimpleHandByCallingStationBots()
        {
            var callingStationBot1 = new CallingStationBot(new PlayerEntity {
                Id = Guid.NewGuid()
            });
            var callingStationBot2 = new CallingStationBot(new PlayerEntity {
                Id = Guid.NewGuid()
            });
            var players = new List <Player> {
                callingStationBot1, callingStationBot2
            };
            var dealer = new DeterministicDealer();

            dealer.HoleCardsPlayer1 = new List <Card> {
                new Card(CardSuit.Diamonds, CardValue.Ten), new Card(CardSuit.Diamonds, CardValue.Nine)
            };
            dealer.HoleCardsPlayer2 = new List <Card> {
                new Card(CardSuit.Clubs, CardValue.Ace), new Card(CardSuit.Clubs, CardValue.Eight)
            };
            dealer.BoardCards = new List <Card> {
                new Card(CardSuit.Diamonds, CardValue.Two),
                new Card(CardSuit.Diamonds, CardValue.Three),
                new Card(CardSuit.Diamonds, CardValue.Four),
                new Card(CardSuit.Spades, CardValue.Jack),
                new Card(CardSuit.Spades, CardValue.Queen)
            };

            var game   = new HeadsupGame(players, dealer);
            var result = game.PlayHand();

            //player 1 wins with a flush
            Assert.IsTrue(result.WinnerId == callingStationBot1.Id);
            //small blind calls and both players check until showdown => PotSize must be 2 big blinds
            Assert.IsTrue(result.PotSize == (HeadsupGame.BigBlindSize * 2));
        }
Ejemplo n.º 4
0
        public void Start()
        {
            this.sessionEntity.State = SessionState.Running;
            var players = new List <Player>();

            players.Add(player1);
            players.Add(player2);

            var dealer = new RandomDealer();

            game = new HeadsupGame(players, dealer);

            while (sessionEntity.PlayedHandsCount < sessionEntity.TotalHandsCount && State == SessionState.Running)
            {
                var playedHand = game.PlayHand();
                playedHand.SessionId = this.sessionEntity.Id;
                playedHand.Timestamp = DateTime.Now;

                playedHandRepository.Insert(playedHand);
                this.sessionEntity.PlayedHandsCount++;
                sessionRepository.Update(sessionEntity);
            }

            this.sessionEntity.State = SessionState.Completed;
            sessionRepository.Update(sessionEntity);
        }
        private GameActionEntity Player_ActionRequired(HeadsupGame game, List <ActionType> possibleActions, int amountToCall)
        {
            currentPendingAction = new PendingAction()
            {
                PossibleActions = possibleActions,
                AmountToCall    = amountToCall
            };

            while (currentPlayerAction == null)
            {
                Task.Delay(1000);
            }

            var playerAction = currentPlayerAction;

            currentPlayerAction = null;

            return(playerAction);
        }
        public Session GetHumanSession()
        {
            var humanSessionEntity = sessionRepository.GetAll().FirstOrDefault(x => (x.State == SessionState.Running || x.State == SessionState.Ready) &&
                                                                               (x.PlayerEntity1.Type == PlayerType.Human ||
                                                                                x.PlayerEntity2.Type == PlayerType.Human));

            if (humanSessionEntity != null)
            {
                var session = sessionScheduler.GetSession(humanSessionEntity.Id);
                currentGame = session.Game;
                if (session != null)
                {
                    currentSession = session;
                    if (humanSessionEntity.PlayerEntity1.Type == PlayerType.Human)
                    {
                        currentHumanPlayer              = session.Player1;
                        currentOpponentPlayer           = session.Player2;
                        session.Player1.ActionRequired -= Player_ActionRequired;
                        session.Player1.ActionRequired += Player_ActionRequired;
                    }
                    else
                    {
                        currentHumanPlayer              = session.Player2;
                        currentOpponentPlayer           = session.Player1;
                        session.Player1.ActionRequired -= Player_ActionRequired;
                        session.Player2.ActionRequired += Player_ActionRequired;
                    }
                    return(session);
                }
                else
                {
                    currentSession = null;
                }
            }
            else
            {
                currentSession = null;
            }

            return(currentSession);
        }
Ejemplo n.º 7
0
 public override void AssignCurrentGame(HeadsupGame game)
 {
     base.AssignCurrentGame(game);
     game.ChangedPhase += Game_ChangedPhase;
     game.PlayerActed  += Game_PlayerActed;
 }
 public override void AssignCurrentGame(HeadsupGame game)
 {
     base.AssignCurrentGame(game);
     game.ChangedPhase += game_ChangedPhase;
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Assign Game like this to allow subscriptions in derived classes
 /// </summary>
 /// <param name="game"></param>
 public virtual void AssignCurrentGame(HeadsupGame game)
 {
     this.currentGame = game;
 }