hanze/game-client

src/main/java/nl/isygameclient/Tournament.java in main
Repositories | Summary | Log | Files

Tournament.java (4430B) download


  1package nl.isygameclient;
  2
  3import nl.isygameclient.models.Player;
  4import nl.isygameclient.models.PlayerManager;
  5import nl.isygameclient.models.games.Othello;
  6import nl.isygameclient.network.Event;
  7import nl.isygameclient.network.GameClient;
  8import nl.isygameclient.util.Vector2D;
  9
 10import java.io.IOException;
 11import java.util.List;
 12import java.util.Map;
 13import java.util.Random;
 14
 15public class Tournament {
 16    public static final int[][] HEURISTIC = {
 17            {10, 2, 5, 5, 5, 5, 2, 10},
 18            {2, 2, 1, 1, 1, 1, 2, 2},
 19            {5, 1, 1, 1, 1, 1, 1, 5},
 20            {5, 1, 1, 1, 1, 1, 1, 5},
 21            {5, 1, 1, 1, 1, 1, 1, 5},
 22            {5, 1, 1, 1, 1, 1, 1, 5},
 23            {2, 2, 1, 1, 1, 1, 2, 2},
 24            {10, 2, 5, 5, 5, 5, 2, 10}
 25    };
 26
 27    public static void main(String[] args) throws IOException {
 28        //		GameClient client = new GameClient("145.33.225.170", 7789);
 29        GameClient client = new GameClient("localhost", 7789);
 30
 31        client.login("ITV2D1" + new Random().nextInt(9));
 32
 33        Player dummyPlayer = new Player("network", "black") {
 34            public Vector2D<Integer, Integer> onPlayerTurn() {
 35                return null;
 36            }
 37        };
 38
 39        Player randomPlayer = new Player("network", "black") {
 40            public Vector2D<Integer, Integer> onPlayerTurn() {
 41                return null;
 42            }
 43        };
 44
 45        PlayerManager playerManager = new PlayerManager(0, List.of(randomPlayer, dummyPlayer));
 46        Othello othello = new Othello(playerManager);
 47        Random random = new Random();
 48
 49        String firstPlayer = null;
 50
 51        while (true) {
 52            Event event = client.event(-1);
 53
 54            switch (event.type) {
 55                case MATCH:
 56                    @SuppressWarnings("unchecked")
 57                    var data = (Map<String, String>) event.data;
 58
 59                    String opponent = data.get("opponent");
 60                    System.out.println("playing against " + opponent);
 61
 62                    firstPlayer = null;
 63                    playerManager.restart();
 64                    othello.getBoard().clear();
 65
 66                    break;
 67                case YOURTURN:
 68                    if (firstPlayer == null) {
 69                        firstPlayer = "self";
 70                        othello.initializeBoard();
 71                    }
 72                    var turns = othello.getValidMoves(randomPlayer);
 73                    System.out.println(turns);
 74                    var turn = turns.get(random.nextInt(turns.size()));
 75
 76                    System.out.println(turn);
 77                    client.send("move " + (turn.getY() * 8 + turn.getX()));
 78                    //					othello.move(ai, turn);
 79
 80                    break;
 81                case MOVE:
 82                    if (firstPlayer == null) {
 83                        firstPlayer = "other";
 84                        playerManager.nextPlayer();
 85                        othello.initializeBoard();
 86                    }
 87                    @SuppressWarnings("unchecked")
 88                    var moveMap = (Map<String, String>) event.data;
 89
 90                    int move = Integer.parseInt(moveMap.get("move"));
 91                    System.out.printf("%s did move %dx%d\n", moveMap.get("player"), move % 8, move / 8);
 92                    othello.move(moveMap.get("player").equals(client.getName()) ? randomPlayer : dummyPlayer, new Vector2D<>(move % 8, move / 8));
 93
 94                    break;
 95                case WIN:
 96                case LOSS:
 97                default:
 98                    System.out.printf("%s -> %s\n", client.getName(), event.type);
 99                    for (int y = 0; y < 8; y++) {
100                        System.out.print("|");
101                        for (int x = 0; x < 8; x++) {
102                            Player p = othello.getBoard().get(new Vector2D<Integer, Integer>(x, y));
103                            if (p == dummyPlayer) {
104                                System.out.print("N|");
105                            } else if (p == randomPlayer) {
106                                System.out.print("A|");
107                            } else {
108                                System.out.print(" |");
109                            }
110                        }
111                        System.out.println();
112                    }     //	outcome = event;
113                    //	return false;
114            }
115        }
116        //		client.close();
117    }
118}