public void PlayersCloseBlindAndThenFold() { Game g = new Game(new GamePreferences()); GameLogger logger = g.GetLogger(); UserProfile Niv = new UserProfile("Niv", "123"); UserProfile Omer = new UserProfile("Omer", "456"); UserProfile Naor = new UserProfile("Naor", "789"); PlayingUser nivPlayer = new PlayingUser(Niv.Username, 1000, g); PlayingUser OPlayer = new PlayingUser(Omer.Username, 1000, g); PlayingUser NPlayer = new PlayingUser(Naor.Username, 1000, g); g.addPlayer(nivPlayer); g.addPlayer(OPlayer); g.addPlayer(NPlayer); nivPlayer.SetFakeUserInput(new Queue <string>(new[] { "5", "0", "Fold" })); OPlayer.SetFakeUserInput(new Queue <string>(new[] { "0", "0", "Fold" })); NPlayer.SetFakeUserInput(new Queue <string>(new[] { "10", "100" })); g.StartGame(); Assert.AreEqual(1020, NPlayer.GetCredit()); }
public void CheckGameReplay_29Moves() { Game g = new Game(new GamePreferences()); GameLogger logger = g.GetLogger(); UserProfile Niv = new UserProfile("Niv", "123"); UserProfile Omer = new UserProfile("Omer", "456"); UserProfile Naor = new UserProfile("Naor", "789"); UserProfile Koren = new UserProfile("Koren", "9"); UserProfile Ohad = new UserProfile("Ohad", "8"); PlayingUser nivPlayer = new PlayingUser(Niv.Username, 1000, g); PlayingUser OPlayer = new PlayingUser(Omer.Username, 1000, g); PlayingUser NPlayer = new PlayingUser(Naor.Username, 1000, g); PlayingUser KPlayer = new PlayingUser(Koren.Username, 1000, g); PlayingUser OhPlayer = new PlayingUser(Ohad.Username, 1000, g); g.addPlayer(nivPlayer); g.addPlayer(OPlayer); g.addPlayer(NPlayer); g.addPlayer(KPlayer); g.addPlayer(OhPlayer); nivPlayer.SetFakeUserInput(new Queue <string>(new[] { "5", "0", "100" })); OPlayer.SetFakeUserInput(new Queue <string>(new[] { "0", "0", "100", "100", "0", "50", "Fold" })); NPlayer.SetFakeUserInput(new Queue <string>(new[] { "10", "100", "100", "100" })); KPlayer.SetFakeUserInput(new Queue <string>(new[] { "10", "100", "100", "100" })); OhPlayer.SetFakeUserInput(new Queue <string>(new[] { "10", "100", "100", "100" })); g.StartGame(); Assert.AreEqual(29, logger.GetMoves().Count); }
public void updateLeagueToUser(PlayingUser playingUser) { UserProfile user = GetUserByName(playingUser.GetUserName()); user.Credit += playingUser.GetCredit(); user.updateStatistics(playingUser); if (user.UserStat.Winnings + user.UserStat.Losses < 10) { return; } League currLeague = user.League; foreach (League league in leagues.Values) { if (league.MinimumRank <= user.Credit && league.MinimumRank + 1000 > user.Credit) { currLeague.removeUser(user); league.addUser(user); user.League = league; return; } } createNewLeague((user.Credit / 1000) * 1000); currLeague.removeUser(user); League l = getLeagueByRank((user.Credit / 1000) * 1000); l.addUser(user); user.League = l; }
public void HeadToHead3Players() { Game g = new Game(new GamePreferences()); GameLogger logger = g.GetLogger(); UserProfile Niv = new UserProfile("Niv", "123"); UserProfile Omer = new UserProfile("Omer", "456"); UserProfile Naor = new UserProfile("Naor", "789"); PlayingUser nivPlayer = new PlayingUser(Niv.Username, 1000, g); PlayingUser OPlayer = new PlayingUser(Omer.Username, 1000, g); PlayingUser NPlayer = new PlayingUser(Naor.Username, 1000, g); g.addPlayer(nivPlayer); g.addPlayer(OPlayer); g.addPlayer(NPlayer); nivPlayer.SetFakeUserInput(new Queue <string>(new[] { "5", "50", "50", "100", "0" })); OPlayer.SetFakeUserInput(new Queue <string>(new[] { "0", "50", "50", "100", "0" })); NPlayer.SetFakeUserInput(new Queue <string>(new[] { "10", "100", "0", "100", "0" })); g.StartGame(); BetMove lastMove = (BetMove)logger.GetMoves().ElementAt(logger.GetMoves().Count - 1); IDictionary <string, int> playerBets = lastMove.GetPlayerBets(); int potSize = 0; foreach (string s in playerBets.Keys) { potSize += playerBets[s]; } Assert.AreEqual(1000 + 420, OPlayer.GetCredit()); }
public void ValidBetMove() { Game g = new Game(new GamePreferences()); GameLogger logger = g.GetLogger(); UserProfile Niv = new UserProfile("Niv", "123"); UserProfile Omer = new UserProfile("Omer", "456"); PlayingUser nivPlayer = new PlayingUser(Niv.Username, 1000, g); PlayingUser OPlayer = new PlayingUser(Omer.Username, 1000, g); g.addPlayer(nivPlayer); g.addPlayer(OPlayer); nivPlayer.SetFakeUserInput(new Queue <string>(new[] { "5", "0" })); OPlayer.SetFakeUserInput(new Queue <string>(new[] { "0" })); g.StartGame(); IDictionary <string, int> playerBets = new Dictionary <string, int>(); playerBets.Add(nivPlayer.GetUserName(), 5); playerBets.Add(OPlayer.GetUserName(), 10); BetMove bm = new BetMove(playerBets, OPlayer, 10); BetMove compareToBetMove = ((BetMove)logger.GetMoves()[2]); //third move in game -> bigblind (first = start game, second = small blind, third=bigblind) foreach (string s in bm.GetPlayerBets().Keys) { int testBet = bm.GetPlayerBets()[s]; int gameBet = compareToBetMove.GetPlayerBets()[s]; Assert.AreEqual(testBet, gameBet); } }
public void GameStartWithLessThanMinimumPlayers() { Assert.Throws(typeof(InvalidOperationException), delegate() { Game g = new Game(new GamePreferences(8, 2, 5, 10, 1, 2, 3, true)); UserProfile Niv = new UserProfile("Niv", "123"); PlayingUser nivPlayer = new PlayingUser(Niv.Username, 1000, g); g.addPlayer(nivPlayer); g.StartGame(); }); }
static void Main(string[] args) { Game g = new Game(new GamePreferences()); GameLogger logger = g.GetLogger(); UserProfile Niv = new UserProfile("Niv", "123"); UserProfile Omer = new UserProfile("Omer", "456"); UserProfile Naor = new UserProfile("Naor", "789"); UserProfile Koren = new UserProfile("Koren", "9"); UserProfile Ohad = new UserProfile("Ohad", "8"); PlayingUser nivPlayer = new PlayingUser(Niv.Username, 1000, g); PlayingUser OPlayer = new PlayingUser(Omer.Username, 1000, g); PlayingUser NPlayer = new PlayingUser(Naor.Username, 1000, g); PlayingUser KPlayer = new PlayingUser(Koren.Username, 1000, g); PlayingUser OhPlayer = new PlayingUser(Ohad.Username, 1000, g); g.addPlayer(nivPlayer); g.addPlayer(OPlayer); g.addPlayer(NPlayer); g.addPlayer(KPlayer); g.addPlayer(OhPlayer); nivPlayer.SetFakeUserInput(new Queue <string>(new[] { "5", "0", "100" })); OPlayer.SetFakeUserInput(new Queue <string>(new[] { "0", "0", "100", "100", "0", "50", "-1" })); NPlayer.SetFakeUserInput(new Queue <string>(new[] { "10", "100", "100", "100" })); KPlayer.SetFakeUserInput(new Queue <string>(new[] { "10", "100", "100", "100" })); OhPlayer.SetFakeUserInput(new Queue <string>(new[] { "10", "100", "100", "100" })); ThreadStart childref = new ThreadStart(g.StartGame); Thread childThread = new Thread(childref); childThread.Start(); OPlayer.SendMessage("hello world"); nivPlayer.SendMessage("Got That!"); //g.StartGame(); int num_of_moves = g.GetLogger().GetMoves().Count; childThread.Join(); Console.Write(""); nivPlayer.SetFakeUserInput(new Queue <string>(new[] { "10", "100", "100", "100" })); OPlayer.SetFakeUserInput(new Queue <string>(new[] { "5", "0", "100" })); NPlayer.SetFakeUserInput(new Queue <string>(new[] { "0", "0", "100", "100", "0", "50", "-1" })); KPlayer.SetFakeUserInput(new Queue <string>(new[] { "10", "100", "100", "100" })); OhPlayer.SetFakeUserInput(new Queue <string>(new[] { "10", "100", "100", "100" })); g.StartGame(); Console.Write(""); }
public List <string> removePlayer(string user, int gameID) { Game game = gc.getGameByID(gameID); if (game == null) { return(null); } PlayingUser player = game.GetPlayers().Where(pu => pu.GetUserName().Equals(user)).First(); //@ToDO: Add try and Catch. This Line throws InValidOperation when there are no players in the game. game.removePlayer(player); return(game.GetPlayers().ConvertAll(x => (SpectatingUser)x).Union(game.GetSpectators()).Select(player1 => player1.GetUserName()).ToList()); }
public bool bet(string user, int gameID, string minimumBet) { Game game = gc.getGameByID(gameID); if (game == null) { return(false); } PlayingUser player = game.GetPlayers().Where(pu => pu.GetUserName().Equals(user)).First(); player.setInput(minimumBet); return(true); }
public void updateStatistics(PlayingUser user) { int Grosssum = (from g in user.GainPerRound where g >= 0 select g).Sum(); int roundsPlayed = userStat.Winnings + userStat.Losses; userStat.Winnings += user.GetRoundsWon(); userStat.Losses += user.GetRoundsLost(); userStat.BiggestWin = (userStat.BiggestWin > user.GetMostWon()) ? userStat.BiggestWin : user.GetMostWon(); userStat.HighestHand = (userStat.HighestHand < user.GetBestHand()) ? userStat.HighestHand : user.GetBestHand(); userStat.BiggestWallet = (Credit > userStat.BiggestWallet) ? Credit : userStat.BiggestWallet; userStat.TotalGrossProfit += Grosssum; UserStat.AvgCashGain = (userStat.AvgCashGain * roundsPlayed + user.GainPerRound.Sum()) / (userStat.Winnings + userStat.Losses); userStat.AvgGrossProfit = userStat.TotalGrossProfit / (userStat.Winnings + userStat.Losses); DBConnection.Instance.updateUserProfile(this); }
public void updateLeagueWhenCreditChange() { gc.createNewLeague(1000); League league1 = gc.getLeagueByRank(0); League league2 = gc.getLeagueByRank(1000); UserProfile user = us.getUser("user"); PlayingUser player = new PlayingUser(user.Username, 5, null); user.Credit = 999; user.UserStat.Losses = 10; Assert.True(league1.isUser(user)); Assert.False(league2.isUser(user)); gc.updateLeagueToUser(player); Assert.False(league1.isUser(user)); Assert.True(league2.isUser(user)); }
public void MoreThanMaxPlayersJoinGame() { Assert.Throws(typeof(InvalidOperationException), delegate() { Game g = new Game(new GamePreferences(2, 2, 1, 2, 1, 1, 1, true)); UserProfile Niv = new UserProfile("Niv", "123"); UserProfile Omer = new UserProfile("Omer", "456"); UserProfile Naor = new UserProfile("Naor", "789"); UserProfile Ohad = new UserProfile("Ohad", "8"); PlayingUser nivPlayer = new PlayingUser(Niv.Username, 1000, g); PlayingUser OPlayer = new PlayingUser(Omer.Username, 1000, g); PlayingUser NPlayer = new PlayingUser(Naor.Username, 1000, g); g.addPlayer(nivPlayer); g.addPlayer(OPlayer); g.addPlayer(NPlayer); }); }
public bool joinGame(Game game, UserProfile u, int credit) { if (credit > u.Credit) { return(false); } if (game.GetGamePref().GetBuyInPolicy() > credit) { return(false); } if (game.GetNumberOfPlayers() == game.GetGamePref().GetMaxPlayers()) { return(false); } PlayingUser playingUser = new PlayingUser(u.Username, credit, game); game.addPlayer(playingUser); u.Credit = u.Credit - credit; return(true); }
public void AllPlayersCheck() { Game g = new Game(new GamePreferences()); GameLogger logger = g.GetLogger(); UserProfile Niv = new UserProfile("Niv", "123"); UserProfile Omer = new UserProfile("Omer", "456"); UserProfile Naor = new UserProfile("Naor", "789"); PlayingUser nivPlayer = new PlayingUser(Niv.Username, 1000, g); PlayingUser OPlayer = new PlayingUser(Omer.Username, 1000, g); PlayingUser NPlayer = new PlayingUser(Naor.Username, 1000, g); g.addPlayer(nivPlayer); g.addPlayer(OPlayer); g.addPlayer(NPlayer); nivPlayer.SetFakeUserInput(new Queue <string>(new[] { "5", "0" })); OPlayer.SetFakeUserInput(new Queue <string>(new[] { "0" })); NPlayer.SetFakeUserInput(new Queue <string>(new[] { "10", "0" })); g.StartGame(); int num_of_moves = g.GetLogger().GetMoves().Count; //game start - 1 //blinds - 2 //bets - 3 //flop - 1 //bets - 3 //river - 1 //bets - 3 //turn - 1 //bets - 3 Assert.AreEqual(19, num_of_moves); }