aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--report/progression.tex54
-rwxr-xr-xsrc/esieequest/Main.java4
-rw-r--r--src/esieequest/controller/Interpreter.java31
-rw-r--r--src/esieequest/controller/Parser.java2
-rw-r--r--src/esieequest/controller/Performer.java151
-rw-r--r--src/esieequest/model/Game.java115
-rw-r--r--src/esieequest/model/commands/CommandWord.java2
-rw-r--r--src/esieequest/model/entities/Character.java25
-rw-r--r--src/esieequest/model/entities/MovingCharacter.java33
-rw-r--r--src/esieequest/model/entities/Player.java56
-rw-r--r--src/esieequest/model/entities/Sumobot.java32
-rw-r--r--src/esieequest/model/events/Quest.java5
-rw-r--r--src/esieequest/model/items/Beamer.java45
-rw-r--r--src/esieequest/model/items/Inventory.java37
-rw-r--r--src/esieequest/model/items/Item.java17
-rw-r--r--src/esieequest/model/items/KeyCard.java20
-rw-r--r--src/esieequest/model/map/Door.java41
-rw-r--r--src/esieequest/model/map/HiddenDoor.java20
-rw-r--r--src/esieequest/model/map/LockedDoor.java55
-rw-r--r--src/esieequest/model/map/Room.java51
-rw-r--r--src/esieequest/model/map/TransporterDoor.java36
-rw-r--r--src/esieequest/model/map/TrapDoor.java21
-rw-r--r--test/commands.txt43
-rw-r--r--test/explore.txt23
-rw-r--r--test/random.txt17
25 files changed, 820 insertions, 116 deletions
diff --git a/report/progression.tex b/report/progression.tex
index ccfff83..1a74d8d 100644
--- a/report/progression.tex
+++ b/report/progression.tex
@@ -55,8 +55,11 @@ the room since commit e510b08d0.
55 55
56\subsection{Object diagram} 56\subsection{Object diagram}
57 57
58%TODO
59
58\subsubsection{Changes on execution} 60\subsubsection{Changes on execution}
59 61
62%TODO
60 63
61\section{Zuul with features} 64\section{Zuul with features}
62 65
@@ -327,32 +330,64 @@ with the commit number 159b168b2.
327 330
328\subsection{Time limit} 331\subsection{Time limit}
329 332
330\subsubsection{Real time} 333The time limit was implemented as a steps limit for the player. When this limit
334is reached, the game quits with a message. The argument --challenge is necessary
335to enable this game mode. Commit number 2fee72805.
331 336
332\subsection{GUI} 337\subsection{GUI}
333 338
339The actuel GUI will be improved at the end of the project, when all new
340functionnalities will be implemented.
341
334\subsection{Trap door} 342\subsection{Trap door}
335 343
344A TrapDoor was added to link the main map to the off-script map, and all Rooms
345are linked through Doors since the commit number 6e388ec78. When crossing a
346TrapDoor, the Performer clears the Player's previous Rooms Stack.
347
336\subsection{Beamer} 348\subsection{Beamer}
337 349
350A Beamer was added with the commit number 6a154d2fe. It can be used once picked
351up via the ``use'' command. It alternatively memorises the player's current room
352and teleports him back.
353
338\subsection{Locked door} 354\subsection{Locked door}
339 355
356A locked door was implement with the commit number e9c61548b. To pass through,
357the player needs to pick up a corresponding key.
358
340\subsection{Tests} 359\subsection{Tests}
341 360
361The test files were updated to fit the last modifications.
362
342\subsection{Transporter room} 363\subsection{Transporter room}
343 364
365The transporter was implemented as a sub-type of Door instead of Room, since the
366Player has to be transported when he crosses the Door. This is part of the
367commit number c5a766345.
368
344\subsubsection{alea} 369\subsubsection{alea}
345 370
371c99590be11 - An alea overriding command for the random TransporterDoor was
372implemented. It is now possible to force the destination room with this command.
373
374\subsection{Character}
375
3763e7f68425 - Characters that can talk were added.
377
378\subsubsection{Moving character}
379
380Moving characters that can move to adjacent rooms once permitted were added.
381
382
383\section{Zuul even better}
384
346\subsection{Inheritance} 385\subsection{Inheritance}
347 386
348\subsection{Abstract Command} 387\subsection{Abstract Command}
349 388
350\subsection{Packages} 389\subsection{Packages}
351 390
352\subsection{Character}
353
354\subsubsection{Moving character}
355
356 391
357\section{Zuul without BlueJ} 392\section{Zuul without BlueJ}
358 393
@@ -365,6 +400,15 @@ with the commit number 159b168b2.
365 400
366\section{Zuul awesome} 401\section{Zuul awesome}
367 402
403\subsection{Non-droppable items}
404
405Non-droppable items were added with the commit number ef51d5137.
406
407\subsection{Hidden doors}
408
409Hidden Doors that are not shown as exits were added with the commit number
41020c9b8b28.
411
368\subsection{Room sides} 412\subsection{Room sides}
369 413
370\subsection{Quests} 414\subsection{Quests}
diff --git a/src/esieequest/Main.java b/src/esieequest/Main.java
index 59ac568..362af9c 100755
--- a/src/esieequest/Main.java
+++ b/src/esieequest/Main.java
@@ -62,6 +62,10 @@ public class Main extends JApplet {
62 view = new Window(); 62 view = new Window();
63 } 63 }
64 64
65 if (arguments.contains("--challenge")) {
66 game.getPlayer().setMaxNbSteps(50);
67 }
68
65 new GameEngine(game, view); 69 new GameEngine(game, view);
66 } 70 }
67 71
diff --git a/src/esieequest/controller/Interpreter.java b/src/esieequest/controller/Interpreter.java
index 32adeda..1895099 100644
--- a/src/esieequest/controller/Interpreter.java
+++ b/src/esieequest/controller/Interpreter.java
@@ -48,6 +48,8 @@ class Interpreter {
48 public void dispatch(final Command command) { 48 public void dispatch(final Command command) {
49 if (command.getAction() != null) { 49 if (command.getAction() != null) {
50 switch (command.getAction()) { 50 switch (command.getAction()) {
51
52 // game related:
51 case NEW: 53 case NEW:
52 this.performer.newGame(); 54 this.performer.newGame();
53 return; 55 return;
@@ -57,9 +59,17 @@ class Interpreter {
57 case SAVE: 59 case SAVE:
58 this.performer.saveGame(); 60 this.performer.saveGame();
59 return; 61 return;
62 case QUIT:
63 this.performer.quitGame();
64 return;
60 case SOUND: 65 case SOUND:
61 this.performer.toggleSound(); 66 this.performer.toggleSound();
62 return; 67 return;
68 case HELP:
69 this.performer.showHelp();
70 return;
71
72 // map related:
63 case GO: 73 case GO:
64 this.performer.goTo(command.getOption()); 74 this.performer.goTo(command.getOption());
65 return; 75 return;
@@ -69,25 +79,32 @@ class Interpreter {
69 case LOOK: 79 case LOOK:
70 this.performer.look(); 80 this.performer.look();
71 return; 81 return;
82 case ALEA:
83 this.performer.forceAlea(command.getOption());
84 return;
85
86 // items related:
72 case INVENTORY: 87 case INVENTORY:
73 this.performer.listItems(); 88 this.performer.listItems();
74 return; 89 return;
75 case TAKE: 90 case TAKE:
76 this.performer.take(command.getOption()); 91 this.performer.takeItem(command.getOption());
77 return; 92 return;
78 case DROP: 93 case DROP:
79 this.performer.drop(command.getOption()); 94 this.performer.dropItem(command.getOption());
80 return; 95 return;
81 case HELP: 96 case USE:
82 this.performer.showHelp(); 97 this.performer.u<