Compare commits

..

2 Commits

Author SHA1 Message Date
f1e7235253 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?
2020-10-22 20:24:44 +03:00
256cd86e29 Report: An empty report added 2020-10-22 20:23:12 +03:00
7 changed files with 111 additions and 7 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "report/config"]
path = report/config
url = https://git.hoo2.net/hoo2/LaTeX_confing.git

4
report/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
*.aux
*.log
*.out
*.gz

1
report/config Submodule

@ -0,0 +1 @@
Subproject commit c27d16e915615bc56a7b09f56e882661ac69b860

BIN
report/report.pdf Normal file

Binary file not shown.

43
report/report.tex Normal file
View File

@ -0,0 +1,43 @@
%
% Report for data structures 2020-2021 assignment part 1.
%
% authors:
% Χρήστος Χουτουρίδης ΑΕΜ 8997
% cchoutou@ece.auth.gr
% Document configuration
\newcommand{\ClassName}{Δομές δεδομένων}
\newcommand{\DocTitle}{Λαβύρινθος: Ο Θησέας και ο Μινώταυρος}
\newcommand{\InstructorName}{Σιάχαλου Σταυρούλα}
\newcommand{\InstructorMail}{ssiachal@auth.gr}
\newcommand{\CurrentDate}{\today}
\input{config/AuthReportConfig.tex}
%\renewcommand{\AuthorName}{Χρήστος Χουτουρίδης}
%\renewcommand{\AuthorMail}{cchoutou@ece.auth.gr}
%\renewcommand{\AuthorAEM}{8997}
\setFancyHeadLR{\ClassName}{\DocTitle}
%\setFancyHeadLERO{\ClassName}{\DocTitle}
% Document
% =================
\begin{document}
\FirstPage
%\tableofcontents
%\listoffigures
%\listoftables
\section{Εισαγωγή}
% References
% ============================
%\begin{thebibliography}{100}
%\bibitem{item}item...
%\end{thebibliography}
\end{document}

View File

@ -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) */
}
/**

View File

@ -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);
Player T = new Player(1, "Theseus", board, 0);
Player M = new Player(2, "Minotaur", board, Position.toID(3, 3));
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.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);
}