# 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`.