// zwraca informację czy wygrał lewy gracz private static GameState SimulateGame(int timeInMs, double firstParam, double secondParam) { var leftMcts = new Mcts(timeInMs, firstParam); var rightMcts = new Mcts(timeInMs, secondParam); // wygenerowanie ruchu pierwszego gracza int leftPLayerMove = new Random(DateTime.Now.Millisecond).Next() % 7; int rightPlayerMove; while (true) { // wykonanie ruchu pierwszego gracza dla pierwszego parametru leftMcts.MakeMove(leftPLayerMove); if (leftMcts.IsEnd) { return(leftMcts.GetBoard().State); } // wykonanie ruchu pierwszego gracza dla drugiego parametru rightMcts.MakeMove(leftPLayerMove); if (rightMcts.IsEnd) { return(rightMcts.GetBoard().State); } // wygenerowanie ruchu drugiego gracza rightPlayerMove = rightMcts.GenerateMove(); // wykonanie ruchu drugiego gracza dla pierwszego parametru leftMcts.MakeMove(rightPlayerMove); if (leftMcts.IsEnd) { return(leftMcts.GetBoard().State); } // wykonanie ruchu drugiego gracza dla drugiego parametru rightMcts.MakeMove(rightPlayerMove); if (rightMcts.IsEnd) { return(rightMcts.GetBoard().State); } leftPLayerMove = leftMcts.GenerateMove(); } }
private static GameState SimulateGame(Mcts lefMcts, Mcts righMcts) { // wygenerowanie ruchu pierwszego gracza int leftPLayerMove; int rightPlayerMove; while (true) { leftPLayerMove = lefMcts.GenerateMove(); // wykonanie ruchu pierwszego gracza dla pierwszego parametru lefMcts.MakeMove(leftPLayerMove); if (lefMcts.IsEnd) { return(lefMcts.GetBoard().State); } // wykonanie ruchu pierwszego gracza dla drugiego parametru righMcts.MakeMove(leftPLayerMove); if (righMcts.IsEnd) { return(righMcts.GetBoard().State); } // wygenerowanie ruchu drugiego gracza rightPlayerMove = righMcts.GenerateMove(); // wykonanie ruchu drugiego gracza dla pierwszego parametru lefMcts.MakeMove(rightPlayerMove); if (lefMcts.IsEnd) { return(lefMcts.GetBoard().State); } // wykonanie ruchu drugiego gracza dla drugiego parametru righMcts.MakeMove(rightPlayerMove); if (righMcts.IsEnd) { return(righMcts.GetBoard().State); } } }