/** * @param args * @throws IOException * @throws FileNotFoundException */ public static void main(String[] args) throws FileNotFoundException, IOException { GenePool pool = new GenePool(args[0]); List<BaseEvaluatorConfig> evaluatorConfigs = pool.getConfigs(); int numToPlay = Integer.parseInt(args[1]); int gamesPlayed = 0; System.out.println("Best config is " + pool.getBestConfig().saveTo.getAbsolutePath()); while (gamesPlayed < numToPlay) { if (gamesPlayed % 800 == 799) { evaluatorConfigs = pool.cull(evaluatorConfigs); } Board b = new Board(); BaseEvaluatorConfig config1 = pool.getBestConfig(); MoveTree tree = new MoveTree(b, new BaseEvaluator(config1)); Player goldPlayer = new ComputerPlayer( tree, true, Long.parseLong(args[2]), args[3] == null ? new BaseEvaluator(config1) : new SuperEvaluator()); Player silverPlayer = new ComputerPlayer( tree, false, Long.parseLong(args[3] != null ? args[3] : args[2]), new SuperEvaluator()); goldPlayer.setup(); silverPlayer.setup(); b.print(System.out); System.out.println("Game On!"); Boolean winner = runGame(b, goldPlayer, silverPlayer); if (winner != null) { if (winner) { config1.win(); // config2.loss(); } else { // config2.win(); config1.loss(); } } System.out.println("Game ended winner was " + b.getWinner()); b.print(System.out); gamesPlayed++; } Collections.sort(evaluatorConfigs); // System.out.println("Played " + gamesPlayed + " games"); // for (BaseEvaluatorConfig c : evaluatorConfigs) { // System.out.println(c.toString()); // } }
public String toString() { StringWriter writer = new StringWriter(); PrintWriter out = new PrintWriter(writer); print(out); out.flush(); return writer.toString(); }
public void print() { if (parent != null) { System.out.println("PARENT: "); parent.print(); } System.out.println("ZERO: " + findZero()); for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { if (j > 0) System.out.print("\t"); System.out.print(tiles[i][j]); } System.out.println(); } }
private static Boolean runGame(Board b, Player goldPlayer, Player silverPlayer) { boolean turn = true; int count = 0; while ((b.getWinner() == null) && (count < 200)) { try { int move = turn ? goldPlayer.findMoves() : silverPlayer.findMoves(); goldPlayer.executeMove(move); silverPlayer.executeMove(move); b.executeMove(move); b.toggleTurn(); System.out.println((turn ? "gold" : "silver") + " moved"); turn = !turn; count++; b.print(System.out); } catch (GameEndException e) { b.setWinner(!turn); } } return b.getWinner(); }
public int playGame() { int winner = Board.EMPTY; red.setColor(Board.RED); black.setColor(Board.BLACK); turn = Board.BLACK; checkersBoard.reset(); checkersBoard.print(); gameTime = 0; int numPieces = 24; while (winner == Board.EMPTY) { int currentPieces = checkersBoard.blackPieces() + checkersBoard.redPieces(); int[] move; int legal; // tests time for draw if (currentPieces == numPieces) { gameTime++; if (gameTime > 20) return Board.EMPTY; } else { numPieces = currentPieces; } if ((checkersBoard.blackPieces() > 0) && (checkersBoard.redPieces() == 0)) { winner = Board.BLACK; System.out.println("GAME STOPPED NO PIECES"); return winner; } move = black.nextMove(checkersBoard); // System.out.println(move[0]+" "+move[1]+" "+move[2]+" "+move[3]); if ((move[0] == 0) && (move[1] == 0) || (move[2] == 0) && (move[3] == 0)) { System.out.println("GAME STOPPED NULL MOVE"); return Board.RED; } /*legal = checkersBoard.ApplyMove(move[0],move[1],move[2],move[3]); if(legal == Board.ILLEGALMOVE) { System.out.println("GAME STOPPED ILLEGAL MOVE"); return Board.RED; } */ checkersBoard.move_board(move); checkersBoard.print(); if ((checkersBoard.redPieces() > 0) && (checkersBoard.blackPieces() == 0)) { System.out.println("GAME STOPPED NO PIECES"); winner = Board.RED; return winner; } move = red.nextMove(checkersBoard); // System.out.println(move[0]+" "+move[1]+" "+move[2]+" "+move[3]); if ((move[0] == 0) && (move[1] == 0) || (move[2] == 0) && (move[3] == 0)) { System.out.println("GAME STOPPED NULL MOVE"); return Board.BLACK; } /* legal = checkersBoard.ApplyMove(move[0],move[1],move[2],move[3]); if(legal == Board.ILLEGALMOVE) { System.out.println("GAME STOPPED ILLEGAL MOVE"); return Board.BLACK; } */ checkersBoard.move_board(move); checkersBoard.print(); } return winner; }
public void print() { print(System.out); }
public void print(PrintStream out) { print(new PrintWriter(out, true)); }
public static void main(String[] argv) { Board board = new Board(); board.print(); }