|
- /**
- * @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<args.length ; ++i) {
- switch (args[i]) {
- case "-b":
- case "--board":
- if (i+1 < args.length)
- Session.boardSize = Integer.parseInt(args[++i]);
- break;
-
- case "-w":
- case "--walls":
- if (i+1 < args.length)
- Session.wallSize = Integer.parseInt(args[++i]);
- break;
-
- case "-s":
- case "--suplies":
- if (i+1 < args.length)
- Session.supplySize = Integer.parseInt(args[++i]);
- break;
-
- default:
- ret = false;
- case "-h":
- case "--help":
- System.out.println("Labyrinth Game");
- System.out.println("");
- System.out.println("Usage:");
- System.out.println("labyrinth [-b|--board <Num>] [-w|--walls <Num>] [-s|--supplies <Num>]");
- 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);
- }
- }
- }
|