Code Path:
Https://github.com/bluesilence/Lisp/blob/master/clojure/projects/room-escape/src/room_escape/core.clj
E2E Process
Now it's time to put the stuff altogether.
The body of the core class is a looping echo server with the following status transitions:
1) Display Welcoming message upon a player ' s arrival;
2) Initialize current player, including room-selection and context initialization. After that, display a action list for the player to start with;
3) Loop until the player doesn ' t continue to play, either due to quiting or due to winning the game:
3-1) Display a prompt to indicate the player to enter a command, either Short-name or full-name;
3-2) Look up the matched command and execute with an arg list parsed along with the command;
3-3) Determine if the player has won the game.
3-3-1) If Yes, display the winning message and prompt a choice on whether to return to the main menu or quit the game.
3-3-2) If no, determine if the command is "quit".
3-3-2-1) If No, recur to the beginning of the loop;
3-3-2-2) Else, display goodbye message and disconnect the player from the server.
Demo
Here ' s a demo video.
Not sure if it can be opened within the GFW, though. :P
[Clojure] A Room-escape game, playing with Telnet and Pure-text Commands-part 4