---
# System prepended metadata

title: Read Me for Maze Challenge Project

---

# Read Me for Maze Challenge Project
## Team: Group 9 - Invalid Pointer
Members: Samiha Datta, Mer Anderson, Sabrina Jain
GitHub usernames: samihadatta, meranderson, sabrinajain747
Date: March 9th, 2020

### Overview
The goal of the maze challenge project is to implement a maze solving method where multiple avatars drop into an unknown maze. The objective is for the avatars to traverse the maze and find each other to beat the challenge. 

See `DESIGN.md` for more information. 

## Functional Decomposition into Modules
* `AMstartup` (connects with maze server, gets maze port, creates log file and starts avatar threads)
* `libmaze` library (holds all data structures created specifically for the maze challenge)
    * `avatar` (represents an avatar moving through maze)
    * `avatar_info` (the information passed to each `avatar` thread)
    * `message` (handles the reading and writing of messages to and from the server)
    * `pointlib` (useful functions related to the `XYPos` structure)
    * `coordinate` (doubly-linked list node)
    * `discovered` (doubly-linked list manipulator)
    * `move_algorithm` (methods that determine the optimal next move for each avatar)
* `output` library (holds anything used to create user-friendly output)
    * `graphics` (graphical user interface methods)
    * `logfile` (used for printing to console and logfile)
* `given` library (holds data structures that were not explicitly created for the project)
    * `hashtable` (hashtable data structure)
    * `hash function` (some module that provides a hash function for the hashtable)
    * `set` (set data structure)


See `AMstartup/README.md`, `libmaze/README.md`, `output/README.md`, and `given/README.md` for more information. 

### Compilation

To build, run `make`.

To clean up, run `make clean`.

