/** * @file Game.java * * @author Christos Choutouridis AEM:8997 * @email cchoutou@ece.auth.gr */ package net.hoo2.auth.labyrinth; /** * Main application class. This class is the only public interface of * the entire game. */ public class Game { Game() {} /**< An empty constructor */ int round () { return round; } int nextRound() { return ++round; } /** * @name Accessor/Mutator interface * @note * Please consider not to use mutator interface. Its the abstraction killer :( * We have added a bit of logic however, in order to make it a bit more safe. */ /** @{ */ int getRound() { return round; } void setRound (int round) { this.round = round; } /** @} */ /** @name Game's data */ /** @{ */ private int round; /** @} */ /** * Main game loop */ static boolean getArguments (String[] args) { boolean ret = true; for (int i =0 ; i] [-w|--walls ] [-s|--supplies ]"); System.out.println("or"); System.out.println("labyrinth -h|--help"); System.out.println(""); System.out.println("\t-b | --board: Sets the size of board's edge."); System.out.println("\t-w | --walls: Sets the number of walls on the board."); System.out.println("\t-s | --supplies: Sets the number of supplies on the board."); System.out.println("\t-h | --help: Print this and exit"); break; } } return ret; } public static void main(String[] args) { try { // Get command line options Game.getArguments(args); // Create a game, a board and 2 players. Game game = new Game(); Board board = new Board(Session.boardSize, Session.supplySize, Session.wallSize); Player T = new Player(1, "Theseus", board, 0); Player M = new Player(2, "Minotaur", board, Position.toID(Session.boardSize/2, Session.boardSize/2)); // Populate data to the board board.createBoard(T.playerTileId(), M.playerTileId()); // The game while (true) { int[] m; System.out.println(); System.out.println("Round: " + (game.round()+1)); m = T.move(T.playerTileId()); System.out.println(T.getName() + ":\t tileId =" + m[0] + " (" + m[1] + ", " + m[2] + ")"); m = M.move(M.playerTileId()); System.out.println(M.getName() + ":\t tileId =" + m[0] + " (" + m[1] + ", " + m[2] + ")"); board.printBoard( board.getStringRepresentation(T.playerTileId(), M.playerTileId()) ); // Termination cases if (T.getScore() == 4) { System.out.println(T.getName() + " Wins!!! Score =" + T.getScore()); System.exit(0); } if (M.getScore() == 4 || M.playerTileId() == T.playerTileId()) { System.out.println(M.getName() + " Wins!!! Score =" + M.getScore()); System.exit(0); } if (!(game.nextRound() < 100)) { System.out.println("New day has come... Tie!!!"); System.exit(0); } } } catch (Exception e) { System.out.println(e.getMessage()); System.exit(1); } } }