// 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); } } }
private void button1_Click(object sender, EventArgs e) { tableLayoutPanelGamePanel.Controls.Clear(); MCTSLogic = new Mcts(TimeToProcess, ExplorationFactor); string filePath = Path.Combine(Directory.GetCurrentDirectory(), "data.xml"); MCTSLogic.LoadFromXml(filePath); RestartGameState(); if (!IsPlayerStarting) { var move = MCTSLogic.GenerateMove(); MCTSLogic.MakeMove(move); tableLayoutPanelGamePanel.Refresh(); } }