An implementation of Labyrinth.
About • Directory Structure • Try it Out
Maze is an implementation of the board game "Labyrinth". The real game involves players navigating a maze, represented as a physical grid board of pathways, with the objective of collecting treasure.
This repository implements a client-server architecture and basic GUI for configuring and observing the game. To find more information on each of these architectural components, see the README
in their respective directories.
+-----------------+ +-----------------+
| Client | | Server |
+-----------------+ +-----------------+
| | | |
| Player | | Referee |
| |-------+ +-------| |
| ProxyReferee | | | | ProxyPlayer |
+-----------------+ | | +-----------------+
| |
v v
+----------------------------------+
| Shared Understanding of the Game |
| (Common/ directory) |
+----------------------------------+
| |
| game pieces (gems, tiles, board) |
| |
| Gamestate |
| |
| rules of the game |
+----------------------------------+
Directory | Purpose |
---|---|
Assets | Static assets. Currently only image files for gems |
Client | A client which connects to a game server |
Common | Core data structures and logic for the game |
Planning | Planning for milestones and changes to the codebase |
Players | The player interface, protocol, and implementations |
Referee | Component responsible for coordinating players and enforcing rules |
Remote | Mechanisms for communicating over a network connection |
Server | A server which accepts client connections and facilitates the game |
Install Racket version 8.6
Install raco
Run all integration tests:
./xtest-integration
Run all unit tests:
./xtest
Run unit tests for a specific module
raco test [PATH-TO-MODULE]