mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 10:54:51 +00:00
Server update with new dev changes (#305)
* merge widgets with development * readd previous game thread code * Revert "readd previous game thread code" This reverts commitd24feef73e. * Revert "Merge remote-tracking branch 'origin/Development' into Development" This reverts commit59d46cb73c, reversing changes made to38681c5db0. * Revert "merge widgets with development" This reverts commit38681c5db0. * Merge 292 into development (#293) Applied template method pattern to abstract player * Added documentation to player classes and improved method names (#295) * mcts v1 * bitboard optimization * bitboard fix & mcts v2 & mcts v3. v3 still in progress and v4 coming soon * main --------- Co-authored-by: ramollia <> Co-authored-by: Stef <stbuwalda@gmail.com> Co-authored-by: Stef <48526421+StefBuwalda@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
230f7480e4
commit
c64a2e2c65
@@ -4,6 +4,50 @@ import org.toop.app.App;
|
||||
|
||||
public final class Main {
|
||||
static void main(String[] args) {
|
||||
App.run(args);
|
||||
App.run(args);
|
||||
// testMCTS(10);
|
||||
}
|
||||
|
||||
// Voor onderzoek
|
||||
// private static void testMCTS(int games) {
|
||||
// var random = new ArtificialPlayer<>(new RandomAI<BitboardReversi>(), "Random AI");
|
||||
// var v1 = new ArtificialPlayer<>(new MCTSAI<BitboardTicTacToe>(10), "MCTS V1 AI");
|
||||
// var v2 = new ArtificialPlayer<>(new MCTSAI2<BitboardTicTacToe>(10), "MCTS V2 AI");
|
||||
// var v2_2 = new ArtificialPlayer<>(new MCTSAI2<BitboardTicTacToe>(100), "MCTS V2_2 AI");
|
||||
// var v3 = new ArtificialPlayer<>(new MCTSAI3<BitboardTicTacToe>(10), "MCTS V3 AI");
|
||||
|
||||
// testAI(games, new Player[]{ v1, v2 });
|
||||
// // testAI(games, new Player[]{ v1, v3 });
|
||||
|
||||
// // testAI(games, new Player[]{ random, v3 });
|
||||
// // testAI(games, new Player[]{ v2, v3 });
|
||||
// testAI(games, new Player[]{ v2, v3 });
|
||||
// // testAI(games, new Player[]{ v3, v2 });
|
||||
// }
|
||||
|
||||
// private static void testAI(int games, Player<BitboardReversi>[] ais) {
|
||||
// int wins = 0;
|
||||
// int ties = 0;
|
||||
|
||||
// for (int i = 0; i < games; i++) {
|
||||
// final BitboardReversi match = new BitboardReversi(ais);
|
||||
|
||||
// while (!match.isTerminal()) {
|
||||
// final int currentAI = match.getCurrentTurn();
|
||||
// final long move = ais[currentAI].getMove(match);
|
||||
|
||||
// match.play(move);
|
||||
// }
|
||||
|
||||
// if (match.getWinner() < 0) {
|
||||
// ties++;
|
||||
// continue;
|
||||
// }
|
||||
|
||||
// wins += match.getWinner() == 0? 1 : 0;
|
||||
// }
|
||||
|
||||
// System.out.printf("Out of %d games, %s won %d -- tied %d -- lost %d, games against %s\n", games, ais[0].getName(), wins, ties, games - wins - ties, ais[1].getName());
|
||||
// System.out.printf("Average win rate was: %.2f\n\n", wins / (float)games);
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -11,17 +11,15 @@ import org.toop.app.widget.popup.ErrorPopup;
|
||||
import org.toop.app.widget.popup.SendChallengePopup;
|
||||
import org.toop.app.widget.view.ServerView;
|
||||
import org.toop.framework.eventbus.EventFlow;
|
||||
import org.toop.framework.game.players.LocalPlayer;
|
||||
import org.toop.framework.game.players.OnlinePlayer;
|
||||
import org.toop.framework.gameFramework.controller.GameController;
|
||||
import org.toop.framework.eventbus.GlobalEventBus;
|
||||
import org.toop.framework.gameFramework.model.player.Player;
|
||||
import org.toop.framework.networking.connection.clients.TournamentNetworkingClient;
|
||||
import org.toop.framework.networking.connection.events.NetworkEvents;
|
||||
import org.toop.framework.networking.connection.types.NetworkingConnector;
|
||||
import org.toop.framework.game.players.ArtificialPlayer;
|
||||
import org.toop.framework.game.players.OnlinePlayer;
|
||||
import org.toop.framework.game.players.ai.RandomAI;
|
||||
import org.toop.framework.networking.server.gateway.NettyGatewayServer;
|
||||
import org.toop.game.players.LocalPlayer;
|
||||
import org.toop.local.AppContext;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -16,7 +16,7 @@ import org.toop.framework.gameFramework.model.game.threadBehaviour.ThreadBehavio
|
||||
import org.toop.framework.gameFramework.model.player.Player;
|
||||
import org.toop.framework.gameFramework.view.GUIEvents;
|
||||
import org.toop.framework.networking.connection.events.NetworkEvents;
|
||||
import org.toop.framework.game.players.LocalPlayer;
|
||||
import org.toop.game.players.LocalPlayer;
|
||||
|
||||
public class GenericGameController implements GameController {
|
||||
protected final EventFlow eventFlow = new EventFlow();
|
||||
@@ -55,9 +55,7 @@ public class GenericGameController implements GameController {
|
||||
// Listen to updates
|
||||
eventFlow
|
||||
.listen(GUIEvents.GameEnded.class, this::onGameFinish, false)
|
||||
.listen(GUIEvents.PlayerAttemptedMove.class, event -> {
|
||||
if (getCurrentPlayer() instanceof LocalPlayer lp){lp.setMove(event.move());}
|
||||
}, false);
|
||||
.listen(GUIEvents.PlayerAttemptedMove.class, event -> {if (getCurrentPlayer() instanceof LocalPlayer lp){lp.setLastMove(event.move());}}, false);
|
||||
}
|
||||
|
||||
public void start(){
|
||||
|
||||
@@ -7,14 +7,16 @@ import org.toop.app.gameControllers.TicTacToeBitController;
|
||||
import org.toop.framework.gameFramework.controller.GameController;
|
||||
import org.toop.framework.gameFramework.model.player.Player;
|
||||
import org.toop.framework.game.players.ArtificialPlayer;
|
||||
import org.toop.framework.game.players.LocalPlayer;
|
||||
import org.toop.app.widget.Primitive;
|
||||
import org.toop.app.widget.complex.PlayerInfoWidget;
|
||||
import org.toop.app.widget.complex.ViewWidget;
|
||||
import org.toop.app.widget.popup.ErrorPopup;
|
||||
import org.toop.app.widget.tutorial.*;
|
||||
import org.toop.framework.game.players.ai.MiniMaxAI;
|
||||
import org.toop.framework.game.players.ai.RandomAI;
|
||||
import org.toop.game.players.LocalPlayer;
|
||||
import org.toop.game.players.ai.MCTSAI;
|
||||
import org.toop.game.players.ai.MCTSAI2;
|
||||
import org.toop.game.players.ai.MCTSAI3;
|
||||
import org.toop.game.players.ai.MiniMaxAI;
|
||||
import org.toop.local.AppContext;
|
||||
|
||||
import javafx.geometry.Pos;
|
||||
@@ -52,7 +54,7 @@ public class LocalMultiplayerView extends ViewWidget {
|
||||
if (information.players[0].isHuman) {
|
||||
players[0] = new LocalPlayer(information.players[0].name);
|
||||
} else {
|
||||
players[0] = new ArtificialPlayer(new RandomAI(), "Random AI");
|
||||
players[0] = new ArtificialPlayer(new MCTSAI(100), "MCTS AI");
|
||||
}
|
||||
if (information.players[1].isHuman) {
|
||||
players[1] = new LocalPlayer(information.players[1].name);
|
||||
@@ -80,12 +82,13 @@ public class LocalMultiplayerView extends ViewWidget {
|
||||
if (information.players[0].isHuman) {
|
||||
players[0] = new LocalPlayer(information.players[0].name);
|
||||
} else {
|
||||
players[0] = new ArtificialPlayer(new RandomAI(), "Random AI");
|
||||
// players[0] = new ArtificialPlayer(new RandomAI<BitboardReversi>(), "Random AI");
|
||||
players[0] = new ArtificialPlayer(new MCTSAI3(50), "MCTS V3 AI");
|
||||
}
|
||||
if (information.players[1].isHuman) {
|
||||
players[1] = new LocalPlayer(information.players[1].name);
|
||||
} else {
|
||||
players[1] = new ArtificialPlayer(new MiniMaxAI(6), "MiniMax");
|
||||
players[1] = new ArtificialPlayer(new MCTSAI2(50), "MCTS V2 AI");
|
||||
}
|
||||
if (AppSettings.getSettings().getTutorialFlag() && AppSettings.getSettings().getFirstReversi()) {
|
||||
new ShowEnableTutorialWidget(
|
||||
|
||||
Reference in New Issue
Block a user