# Read Me for `libmaze` module (Maze Challenge project)
## Overview
The `libmaze` module, which – when compiled – is bundled into an archive file called `libmaze.a`, contains a variety of useful modules for addressing the Maze Challenge. These include:
* `amazing.h`: starter code with useful information such as server parameters, avatar constants, client-server protocol message type values, AM_INIT failure ErrNums, and used structures/types including `XYPos`, `Avatar`, and `AM_Message`
* `avatar`: used in conjunction with `AMStartup`; holds the threads run by each avatar
* `avatarinfo`: structure that contains information passed to and from each thread
* `avatarlib`: useful methods for manipulating the `Avatar` structure
* `coordinate`: module that essentially functions as a doubly-linked linked list node and holds (for one avatar) the position, id number, and turn number in addition to the previous and next coordinates
* `discovered`: module used to manipulate the linked list of `coordinate` nodes; holds the head of the list
* `gui`: contains all methods necessary for the ASCII graphical user interface
* `hashtable`: hashtable data structure
* `jhash`: hash function for `hashtable`
* `message`:
* `move_algorithm`: module that holds the algorithm and its most immediate helper methods
* `pointlib`: useful methods for `XYPos` structure
* `set`: set data structure
* testing programs:`algotest.c` (for testing algorithm functionality) and `tester.c` (for testing data structures and the like)
## Implementation Strategy
## Compilation
To build, run `make`.
To clean up, run `make clean`.