Beispiel #1
0
        public void GamePrefLessMinimalBet()
        {
            object objUser = db.getUserByName("test0");

            Assert.IsInstanceOfType(objUser, typeof(SystemUser));
            SystemUser user = (SystemUser)objUser;

            object objGame = sl.createGame(user.id, "Pot_Limit", 1000, 100, 0, 120, 4, 8, true, false);

            Assert.IsInstanceOfType(objGame, typeof(TexasHoldemGame));
            TexasHoldemGame game = (TexasHoldemGame)objGame;

            Assert.IsTrue(game.gamePreferences.isContain(new MustPreferences(new StartingAmountChipsCedPref(0, null), true)));
            StartingAmountChipsCedPref startingChipsPref = (StartingAmountChipsCedPref)game.gamePreferences.getOptionalPref(new StartingAmountChipsCedPref(0, null));

            Assert.AreEqual(0, startingChipsPref.startingChipsPolicy);

            object objUser1 = db.getUserByName("test1");

            Assert.IsInstanceOfType(objUser, typeof(SystemUser));
            SystemUser user1 = (SystemUser)objUser;

            ReturnMessage m = null;

            game.joinGame(user1, 3);
            for (int i = 0; i < game.players.Length; i++)
            {
                if (game.players[i] != null && game.players[i].systemUserID == user1.id)
                {
                    m = game.bet(game.players[i], 100);
                }
            }

            Assert.IsFalse(m.success);
        }
Beispiel #2
0
        public void TestCreateGameWithPotLimitFail()
        {
            object objUser = db.getUserByName("test0");

            Assert.IsInstanceOfType(objUser, typeof(SystemUser));
            SystemUser user = (SystemUser)objUser;

            object objGame = sl.createGame(user.id, "Pot_Limit", 1000, 100, 15000, 120, 4, 8, true, false);

            Assert.IsInstanceOfType(objGame, typeof(TexasHoldemGame));
            TexasHoldemGame game = (TexasHoldemGame)objGame;

            Assert.IsTrue(game.gamePreferences.isContain(new MustPreferences(new GamePolicyDecPref(GameTypePolicy.Pot_Limit, 1000, null), true)));

            object objUser1 = db.getUserByName("test1");

            Assert.IsInstanceOfType(objUser, typeof(SystemUser));
            SystemUser user1 = (SystemUser)objUser;

            ReturnMessage m = null;

            game.joinGame(user1, 3);
            game.pot = 1000;
            for (int i = 0; i < game.players.Length; i++)
            {
                if (game.players[i] != null && game.players[i].systemUserID == user1.id)
                {
                    m = game.bet(game.players[i], 1500);
                    break;
                }
            }
            Assert.IsFalse(m.success);
        }
        public override ReturnMessage canPerformUserActions(TexasHoldemGame game, SystemUser user, string action)
        {
            //TODO: leave PLayer?
            switch (action)
            {
            case "create":
                if (minPlayers >= 2 && minPlayers <= 9)
                {
                    if (nextDecPref != null)
                    {
                        return(nextDecPref.canPerformUserActions(game, user, action));
                    }
                    else
                    {
                        return(new ReturnMessage(true, ""));
                    }
                }
                else
                {
                    return
                        (new ReturnMessage(false, "Minimal player must be between 2 and 9"));
                }

            default:
                if (nextDecPref != null)
                {
                    return(nextDecPref.canPerformUserActions(game, user, action));
                }
                return(new ReturnMessage(true, ""));
            }
        }
        public override ReturnMessage canPerformUserActions(TexasHoldemGame game, SystemUser user, string action)
        {
            switch (action)
            {
            case "create":
                if (startingChipsPolicy >= 0)
                {
                    if (nextDecPref != null)
                    {
                        return(nextDecPref.canPerformUserActions(game, user, action));
                    }
                    else
                    {
                        return(new ReturnMessage(true, ""));
                    }
                }
                else
                {
                    return
                        (new ReturnMessage(false, "Starting chips policy must be positive"));
                }

            default:
                if (nextDecPref != null)
                {
                    return(nextDecPref.canPerformUserActions(game, user, action));
                }
                return(new ReturnMessage(true, ""));
            }
        }
Beispiel #5
0
        public override ReturnMessage canPerformGameActions(TexasHoldemGame game, int amount, string action)
        {
            switch (action)
            {
            case "Bet":
                if (amount < minimalBet)
                {
                    return(new ReturnMessage(false, "The bet you entered is lower than the minimal bet: " + minimalBet.ToString()));
                }
                else if (nextDecPref != null)
                {
                    return(nextDecPref.canPerformGameActions(game, amount, action));
                }
                else
                {
                    return(new ReturnMessage(true, ""));
                }

            case "Raise":
                if (nextDecPref != null)
                {
                    return(nextDecPref.canPerformGameActions(game, amount, action));
                }
                else
                {
                    return(new ReturnMessage(true, ""));
                }

            default:
                return(new ReturnMessage(false, "Wrong input to the canPerformGameActions."));
            }
        }
Beispiel #6
0
        public void TestCreateGameNoStartingChips()
        {
            object objUser = db.getUserByName("test0");

            Assert.IsInstanceOfType(objUser, typeof(SystemUser));
            SystemUser user = (SystemUser)objUser;

            object objGame = sl.createGame(user.id, "Pot_Limit", 1000, 100, null, 120, 4, 8, true, false);

            Assert.IsInstanceOfType(objGame, typeof(TexasHoldemGame));
            TexasHoldemGame game = (TexasHoldemGame)objGame;

            Assert.IsFalse(game.gamePreferences.isContain(new MustPreferences(new StartingAmountChipsCedPref(0, null), true)));

            object objUser1 = db.getUserByName("test1");

            Assert.IsInstanceOfType(objUser, typeof(SystemUser));
            SystemUser user1 = (SystemUser)objUser;

            int user1Tokens = -1;

            game.joinGame(user1, 3);
            for (int i = 0; i < game.players.Length; i++)
            {
                if (game.players[i] != null && game.players[i].systemUserID == user1.id)
                {
                    user1Tokens = game.players[i].Tokens;
                }
            }

            Assert.AreEqual(1000, user1Tokens);
        }
 public override ReturnMessage canPerformGameActions(TexasHoldemGame game, int amount, string action)
 {
     if (nextDecPref != null)
     {
         return(nextDecPref.canPerformGameActions(game, amount, action));
     }
     return(new ReturnMessage(true, ""));
 }
Beispiel #8
0
 public bool canCall(TexasHoldemGame game, int amount)
 {
     if (real != null)
     {
         return(real.canCall(game, amount));
     }
     return(amount > 0);
 }
Beispiel #9
0
        public void ConstructorShouldThrowArgumentNullExceptionWhenIncorrectSecondPlayer()
        {
            IPlayer secondPlayer      = null;
            var     mockedFirstPlayer = new Mock <IPlayer>();
            var     initialMoney      = 1000;

            Assert.Throws <ArgumentNullException>(
                () => { var twoPlayersGame = new TexasHoldemGame(mockedFirstPlayer.Object, secondPlayer, initialMoney); });
        }
Beispiel #10
0
        public void ConstructorShouldThrowArgumentOutOfRangeExceptionWhenInitialMoneyAreZero()
        {
            var mockedSecondPlayer = new Mock <IPlayer>();
            var mockedFirstPlayer  = new Mock <IPlayer>();
            var initialMoney       = 0;

            Assert.Throws <ArgumentOutOfRangeException>(
                () => { var twoPlayersGame = new TexasHoldemGame(mockedFirstPlayer.Object, mockedSecondPlayer.Object, initialMoney); });
        }
Beispiel #11
0
    public object removeUser(int gameId, int userId)
    {
        TexasHoldemGame game = gameCenter.getGameById(gameId);

        if (game == null)
        {
            return(null);
        }
        return(game.removeUser(userId));
    }
Beispiel #12
0
 public ReturnMessage canPerformGameActions(TexasHoldemGame game, int amount, string action)
 {
     if (firstDecPref != null)
     {
         return(firstDecPref.canPerformGameActions(game, amount, action));
     }
     else
     {
         return(new ReturnMessage(true, ""));
     }
 }
        public override ReturnMessage canPerformGameActions(TexasHoldemGame game, int amount, string action)
        {
            switch (action)
            {
            case "Bet":
            case "Raise":
                switch (gamePolicy)
                {
                case GameTypePolicy.Limit:
                    if (game.currentBet + amount > limit)
                    {
                        return(new ReturnMessage(false, "The entered amount is higher than the limit"));
                    }
                    else if (nextDecPref != null)
                    {
                        return(nextDecPref.canPerformGameActions(game, amount, action));
                    }
                    else
                    {
                        return(new ReturnMessage(true, ""));
                    }

                case GameTypePolicy.No_Limit:
                    if (nextDecPref != null)
                    {
                        return(nextDecPref.canPerformGameActions(game, amount, action));
                    }
                    else
                    {
                        return(new ReturnMessage(true, ""));
                    }

                case GameTypePolicy.Pot_Limit:
                    if (game.currentBet + amount > game.pot)
                    {
                        return(new ReturnMessage(false, "The entered amount is higher than the pot limit"));
                    }
                    else if (nextDecPref != null)
                    {
                        return(nextDecPref.canPerformGameActions(game, amount, action));
                    }
                    else
                    {
                        return(new ReturnMessage(true, ""));
                    }

                default:
                    return(new ReturnMessage(false, "Wrong game policy"));
                }

            default:
                return(new ReturnMessage(false, "Wrong input to the canPerformGameActions."));
            }
        }
Beispiel #14
0
        public void ConstructorShouldThrowArgumentExceptionWhenTwoPlayersHaveEqualNames()
        {
            var mockedFirstPlayer  = new Mock <IPlayer>();
            var mockedSecondPlayer = new Mock <IPlayer>();

            mockedSecondPlayer.SetupGet(x => x.Name).Returns("Player");
            mockedFirstPlayer.SetupGet(x => x.Name).Returns("Player");
            var initialMoney = 1000;

            Assert.Throws <ArgumentException>(
                () => { var twoPlayersGame = new TexasHoldemGame(mockedFirstPlayer.Object, mockedSecondPlayer.Object, initialMoney); });
        }
        public override ReturnMessage canPerformUserActions(TexasHoldemGame game, SystemUser user, string action)
        {
            ReturnMessage m = new ReturnMessage();

            switch (action)
            {
            case "create":
                if (buyInPolicy >= 0)
                {
                    if (nextDecPref != null)
                    {
                        return(nextDecPref.canPerformUserActions(game, user, "create"));
                    }
                    else
                    {
                        return(new ReturnMessage(true, ""));
                    }
                }
                else
                {
                    return(new ReturnMessage(false, "Buy in policy can't be negative"));
                }

            case "join":
                if (user.money >= buyInPolicy)
                {
                    if (nextDecPref != null)
                    {
                        return(nextDecPref.canPerformUserActions(game, user, action));
                    }
                    else
                    {
                        return(new ReturnMessage(true, ""));
                    }
                }
                else
                {
                    return(new ReturnMessage(false, "The user don't have enough money to join the game"));
                }

            case "spectate":
            case "leave":
                if (nextDecPref != null)
                {
                    return(nextDecPref.canPerformUserActions(game, user, action));
                }
                return(new ReturnMessage(true, ""));

            default:
                return(new ReturnMessage(false, "Wrong input to the canPerformUserActions."));
            }
        }
Beispiel #16
0
        public void LeaveSpectatorSuccessTest()
        {
            object g = sl.getGameById(3);

            Assert.IsInstanceOfType(g, typeof(TexasHoldemGame));
            TexasHoldemGame game = (TexasHoldemGame)g;
            SystemUser      user = new SystemUser("Gil", "adfg", null, 0, 0);

            game.joinSpectate(user);
            game.leaveGameSpectator(user);
            CollectionAssert.AreEqual(game.spectators, new List <SystemUser> {
            });
        }
Beispiel #17
0
    //public object GetShowOff(int gameId)
    //{
    //    return gameCenter.GetShowOff(gameId);
    //}


    #endregion

    public void SubscribeToGameState(ObserverAbstract <TcpClient> client, int gameID, bool isSpectator)
    {
        TexasHoldemGame game = gameCenter.getGameById(gameID);

        if (!isSpectator)
        {
            game.gameStatesObserver.Subscribe(client);
        }
        else
        {
            game.spectateObserver.Subscribe(client);
        }
    }
Beispiel #18
0
        public void TestCreateGameWithNoPolicy()
        {
            object objUser = db.getUserByName("test0");

            Assert.IsInstanceOfType(objUser, typeof(SystemUser));
            SystemUser user = (SystemUser)objUser;

            object objGame = sl.createGame(user.id, null, 1000, 100, 15000, 120, 4, 8, true, false);

            Assert.IsInstanceOfType(objGame, typeof(TexasHoldemGame));
            TexasHoldemGame game = (TexasHoldemGame)objGame;

            Assert.IsFalse(game.gamePreferences.isContain(new MustPreferences(new GamePolicyDecPref(GameTypePolicy.Limit, 1000, null), true)));
        }
            public TexasHoldemGameStrings(int row, TexasHoldemGame game)
            {
                Preference pref = game.gamePreferences;

                this.row            = row.ToString();
                gameId              = game.gameId.ToString();
                GamePolicy          = pref.gamePolicy.ToString();
                BuyInPolicy         = pref.buyInPolicy.ToString();
                StartingChipsAmount = pref.startingChipsPolicy.ToString();
                MinimalBet          = pref.minimalBet.ToString();
                MinPlayers          = pref.minPlayers.ToString();
                MaxPlayers          = pref.maxPlayers.ToString();
                IsSpectatingAllowed = pref.isSpectateAllowed.ToString();
                isLeague            = pref.isLeague.ToString();
            }
        public override ReturnMessage canPerformUserActions(TexasHoldemGame game, SystemUser user, string action)
        {
            switch (action)
            {
            case "create":
                if (maxPlayers >= 2 && maxPlayers <= 9)
                {
                    if (nextDecPref != null)
                    {
                        return(nextDecPref.canPerformUserActions(game, user, action));
                    }
                    else
                    {
                        return(new ReturnMessage(true, ""));
                    }
                }
                else
                {
                    return
                        (new ReturnMessage(false, "max players must be between 2 and 9"));
                }

            case "join":
                if (nextDecPref != null)
                {
                    return(nextDecPref.canPerformUserActions(game, user, action));
                }
                else
                {
                    return(new ReturnMessage(true, ""));
                }

            case "spectate":
            case "leave":
                if (nextDecPref != null)
                {
                    return(nextDecPref.canPerformUserActions(game, user, action));
                }
                else
                {
                    return(new ReturnMessage(true, ""));
                }

            default:
                return(new ReturnMessage(false, "Wrong input to the canPerformUserActions."));
            }
        }
Beispiel #21
0
        public void TestCreateGameWithStartingChipsMoreThan0()
        {
            object objUser = db.getUserByName("test0");

            Assert.IsInstanceOfType(objUser, typeof(SystemUser));
            SystemUser user = (SystemUser)objUser;

            object objGame = sl.createGame(user.id, "Pot_Limit", 1000, 100, 200, 120, 4, 8, true, false);

            Assert.IsInstanceOfType(objGame, typeof(TexasHoldemGame));
            TexasHoldemGame game = (TexasHoldemGame)objGame;

            Assert.IsTrue(game.gamePreferences.isContain(new MustPreferences(new StartingAmountChipsCedPref(200, null), true)));
            StartingAmountChipsCedPref startingChipsPref = (StartingAmountChipsCedPref)game.gamePreferences.getOptionalPref(new StartingAmountChipsCedPref(0, null));

            Assert.AreEqual(200, startingChipsPref.startingChipsPolicy);
        }
        public override ReturnMessage canPerformUserActions(TexasHoldemGame game, SystemUser user, string action)
        {
            switch (action)
            {
            case "create":
            {
                switch (gamePolicy)
                {
                case GameTypePolicy.Limit:
                    if (limit >= 0)
                    {
                        if (nextDecPref != null)
                        {
                            return(nextDecPref.canPerformUserActions(game, user, "create"));
                        }
                        else
                        {
                            return(new ReturnMessage(true, ""));
                        }
                    }
                    else
                    {
                        return(new ReturnMessage(false, "The limit must be positive"));
                    }

                default:
                    if (nextDecPref != null)
                    {
                        return(nextDecPref.canPerformUserActions(game, user, "create"));
                    }
                    else
                    {
                        return(new ReturnMessage(true, ""));
                    }
                }
            }

            default:
                if (nextDecPref != null)
                {
                    return(nextDecPref.canPerformUserActions(game, user, action));
                }
                return(new ReturnMessage(true, ""));
            }
        }
Beispiel #23
0
        public void SetUp()
        {
            db = new PeLImpl();

            bool objUser = db.RegisterUser("Hadas", "1234", "shidlhad", null);

            Assert.IsTrue(objUser);

            bool objOther = db.RegisterUser("Gil", "1234", "gilabadi89", null);

            Assert.IsTrue(objOther);

            object objGame = creatGame(db.getUserByName("Hadas").id, "Limit", 1000, 1000, 1000, 100, 2, 9, true, false);

            Assert.IsNotNull(objGame);
            Assert.IsInstanceOfType(objGame, typeof(TexasHoldemGame));
            game = (TexasHoldemGame)objGame;
        }
        public GameWindow(TexasHoldemGame game, int systemUserId, bool isSpectator)
        {
            InitializeComponent();
            this.game         = game;
            this.systemUserId = systemUserId;
            this.isSpectator  = isSpectator;
            initializeScreen();
            updateGame(game);
            betButton.IsEnabled   = false;
            foldButton.IsEnabled  = false;
            checkButton.IsEnabled = false;
            callButton.IsEnabled  = false;

            playButton.IsEnabled  = !isSpectator;
            betButton.IsEnabled   = false;
            foldButton.IsEnabled  = false;
            checkButton.IsEnabled = false;
            callButton.IsEnabled  = false;
        }
        public FitnessInfo Evaluate(IBlackBox phenome)
        {
            var players = new List <IPlayer>();
            var learner = new Learner(RandomProvider.Next(80, 201), phenome);

            players.Add(learner);
            players.Add(new DummyPlayer(RandomProvider.Next(80, 201)));
            players.Add(new SmartPlayer(RandomProvider.Next(80, 201)));
            players.Add(new DummyPlayer(RandomProvider.Next(80, 201)));

            var game = new TexasHoldemGame(players, 300);

            game.Start();

            this.EvaluationCount++;

            var fitness = learner.Fitness();

            return(new FitnessInfo(fitness, fitness));
        }
Beispiel #26
0
        public Agent(NeatGenome genome)
        {
            this.genome = genome;

            var players = new List <IPlayer>();
            var learner = new Learner((IBlackBox)genome.CachedPhenome);

            this.Stats = new Stats(learner);

            players.Add(this.Stats);
            players.Add(new DummyPlayer());
            players.Add(new SmartPlayer());
            players.Add(new DummyPlayer());

            var game = new TexasHoldemGame(players, 100000);

            game.Start();

            this.TotalProfit = learner.Profit;
            this.HandsPlayed = learner.HandsPlayed;
        }
Beispiel #27
0
    public object joinGame(int userId, int gameID, int seatIndex)
    {
        TexasHoldemGame game = gameCenter.getGameById(gameID);
        SystemUser      user = gameCenter.getUserById(userId);

        if (game == null || user == null)
        {
            return(null);
        }

        var response = game.joinGame(user, seatIndex);

        if (response.success)
        {
            return(game);
        }
        else
        {
            Console.WriteLine(response.description);
            return(null);
        }
    }
Beispiel #28
0
    public object spectateActiveGame(int userId, int gameID)
    {
        TexasHoldemGame game = gameCenter.getGameById(gameID);

        if (game == null)
        {
            return(null);
        }
        SystemUser user = gameCenter.getUserById(userId);

        if (user == null)
        {
            return(null);
        }
        var joinSpec = game.joinSpectate(user);

        if (joinSpec.success)
        {
            return(game);
        }
        return(null);
    }
Beispiel #29
0
        public void SetUp()
        {
            db = new PeLImpl();
            for (int i = 0; i < 4; i++)
            {
                db.RegisterUser("test" + i, "" + i, "email" + i, null);
            }
            db.EditUserById(db.getUserByName("test0").id, null, null, null, null, 1000, 10, false);
            db.EditUserById(db.getUserByName("test1").id, null, null, null, null, 0, 15, false);
            db.EditUserById(db.getUserByName("test2").id, null, null, null, null, 700, 20, false);
            db.EditUserById(db.getUserByName("test3").id, null, null, null, null, 1500, 25, false);


            var userList = new List <SystemUser>
            {
                db.getUserByName("test0"),
                db.getUserByName("test1"),
                db.getUserByName("test2"),
                db.getUserByName("test3")
            };

            center = GameCenter.getGameCenter();

            sl     = new SLImpl();
            center = GameCenter.getGameCenter();

            game        = (TexasHoldemGame)sl.createGame(0, "No_limit", 1000, 30, 50, 10, 2, 10, true, false);
            game.gameId = 1;

            game.players[1] = new Player(userList[1].id, userList[1].name, 50, userList[1].rank, new byte[0]);
            game.players[2] = new Player(userList[2].id, userList[2].name, 50, userList[2].rank, new byte[0]);

            for (int i = 0; i < 3; i++)
            {
                game.players[i].playerState = Player.PlayerState.in_round;
            }

            game.currentBlindBet = 20;
        }
Beispiel #30
0
    public object GetGameForPlayers(int userId, int gameID)
    {
        TexasHoldemGame game = gameCenter.getGameById(gameID);

        if (game == null)
        {
            return(null);
        }
        SystemUser user = gameCenter.getUserById(userId);

        if (user == null)
        {
            return(null);
        }
        var joinSpec = game.getGameForPlayer(user);

        if (joinSpec.success)
        {
            return(game);
        }

        return(null);
    }
        public void Main()
        {
            /*  1. Create Texas Holdem game
             *		Big Blind, Small Blind, num of seats, Max and Min buy in
             *  2. Player join table (dealer and cards)
             *  3. Player get a seat (position)
             *  4. Player buy in
             *  5. Blinds are placed
             *  6. 2 x Cards are dealt each player, player can see their own card
             *  7. Betting (folding)
             *  8. Flop
             *  9. Betting
             * 10. Turn
             * 11. Betting
             * 12. River
             * 13. Betting
             * 14. Showdown
             * 15. Payout
             */

            // 1. Create a new Texas Holdem Game. Use default game settings.
            var game = new TexasHoldemGame(new CommonGameSettings());
        }
        public void WhenAddingAPlayerToTheGameASeatIsTaken()
        {
            // Arrange
            var player = new Player();
            var game = new TexasHoldemGame(new CommonGameSettings());

            // Act
            game.AddPlayer(player);
            var addedPlayer = game.Players.ElementAt(0);

            // Assert
            Assert.AreEqual(game.SeatsTaken, 1, "Adding a player should take a seat.");
            Assert.AreSame(addedPlayer, player, "The player should be added to the game.");
        }
        public void WhenMinBuyInEqualsMaxBuyIn()
        {
            // Arrange, Act
            var game = new TexasHoldemGame(new CommonGameSettings() { MinBuyIn = 6, MaxBuyIn = 6 });

            // Assert
            Assert.AreEqual(game.MaxBuyIn, game.MinBuyIn, "The MaxBuyIn should be the same as the MinBuyIn.");
        }
        public void WhenMinBuyInIsLessThanMaxBuyIn()
        {
            // Arrange, Act
            var game = new TexasHoldemGame(new CommonGameSettings() { MinBuyIn = 4, MaxBuyIn = 6 });

            // Assert
            Assert.IsTrue(game.MinBuyIn < game.MaxBuyIn, "The MinBuyIn is allowed to be less than the MaxBuyIn.");
        }