DEV: Frist working draft (clarifications needed)
To be clarified - Can Minotaur collect supplies? - Do we need an optimal solution to boards wall placement algorithm? - Do we have to find for possible closed wall loops?
This commit is contained in:
parent
256cd86e29
commit
f1e7235253
@ -22,6 +22,8 @@ class Const {
|
||||
*/
|
||||
class Session {
|
||||
static int boardSize = 15; /**< Default board's size (if no one set it via command line) */
|
||||
static int supplySize = 4; /**< Default board's supply size (if no one set it via command line) */
|
||||
static int wallSize = 4*15-1; /**< Default board's wall size (if no one set it via command line) */
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -15,6 +15,9 @@ public class Game {
|
||||
|
||||
Game() {} /**< An empty constructor */
|
||||
|
||||
int round () { return round; }
|
||||
int nextRound() { return ++round; }
|
||||
|
||||
/**
|
||||
* @name Accessor/Mutator interface
|
||||
* @note
|
||||
@ -34,20 +37,69 @@ public class Game {
|
||||
/**
|
||||
* 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(11, 4, 82);
|
||||
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(3, 3));
|
||||
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.getRound()+1));
|
||||
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] + ")");
|
||||
@ -66,8 +118,7 @@ public class Game {
|
||||
System.out.println(M.getName() + " Wins!!! Score =" + M.getScore());
|
||||
System.exit(0);
|
||||
}
|
||||
game.setRound(game.getRound()+1);
|
||||
if (!(game.getRound() < 100)) {
|
||||
if (!(game.nextRound() < 100)) {
|
||||
System.out.println("New day has come... Tie!!!");
|
||||
System.exit(0);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user