static void Main(string[] args) { Console.WriteLine("Texas Holdem Nolimit Emulator"); Console.WriteLine("Choose players count (2 or 3):"); int playersCount = 0; while (playersCount == 0) { var k = Console.ReadKey(); switch (k.KeyChar) { case '2': playersCount = 2; break; case '3': playersCount = 3; break; } Console.WriteLine(); } Console.WriteLine("This players availible:"); Console.WriteLine(" - 1. Stupid bot"); Console.WriteLine(" - 2. Tight bot"); Console.WriteLine(" - 3. Player"); List <string> agents = new List <string>(); bool showLog = false; for (int i = 0; i < playersCount; i++) { Console.WriteLine("Choose player {0}:", i + 1); int aCount = agents.Count; while (agents.Count == aCount) { var k = Console.ReadKey(); switch (k.KeyChar) { case '1': agents.Add("StupidBot"); break; case '2': agents.Add("TightBot"); break; case '3': showLog = true; agents.Add("Player"); break; case '4': agents.Add("SuperBot"); break; } Console.WriteLine(); } } int tablesCount = 1; if (showLog == false) { Console.WriteLine("Show game log? (y/n)"); string response = ""; while (response == "") { var k = Console.ReadKey(); switch (k.KeyChar) { case 'y': response = "y"; break; case 'n': response = "n"; break; } Console.WriteLine(); } if (response == "y") { showLog = true; } else { Console.WriteLine("Set tables count to play:"); while (!int.TryParse(Console.ReadLine(), out tablesCount)) { Console.WriteLine("Wrong number. Try again:"); } } } int handsCount = 1000; Parallel.For(0, tablesCount, (int i) => { List <EmulatorPlayer> players = new List <EmulatorPlayer>(); agents.ForEach(a => players.Add(new EmulatorPlayer(GetNewAgentByName(a), 1500 / agents.Count))); StackPlayers sPlayers = new StackPlayers(players); int smallBlind = 10; for (int handNum = 0; handNum < handsCount; handNum++) { if (sPlayers.Count < 2) { if (showLog) { Console.WriteLine("Table is over"); } break; } // Перемещаем баттон, если не первая раздача if (handNum != 0) { sPlayers.MoveButton(); } else { sPlayers.SetRandomButton(); } long handId = i * handsCount + handNum; // Повышаем блайнды if (handNum != 0 && handNum % 100 == 0) { smallBlind += 10; } // Создаем инфо стола TableInfo tInfo = new TableInfo(sPlayers.Players, sPlayers.Button, smallBlind, handId); var log = HandRound(sPlayers, tInfo, showLog); } for (int j = 0; j < sPlayers.Count; j++) { Console.WriteLine(sPlayers[j].Agent.GetName() + " - " + sPlayers[j].Stack); } }); Console.WriteLine("All done."); Console.ReadKey(); }