---
# System prepended metadata

title: README for `mazechallenge` module

---

# README for `mazechallenge` module

## Overview
The `mazechallenge` module contains `AMstartup.c` which runs the entire game. It connects to the maze server, gets a maze port and starts n_avatar threads.
* `AMstartup.c` (maze challenge driver)

## Implementation Strategy
#### `AMstartup`

First we connect to server and send an AM_INIT message based on user input (See usage above). Then we (hopefully) get an AM_INIT_OK from the server which contains a maze port. We open a log file. Then we start `n_avatar` threads and pass the maze port, along with a lot of other information to them (along with log file). We use a couple of helper functions: 

```
/* Takes a hostname and port number and 
 * returns a communication socket
 * 
 * Parameters: 
 *     char *hostname: host of server
 *     int port: port
 * Returns:
 *    int comm_sock: communication socket
 */
int get_comm_sock (char *hostname, int port) 
```
```
/* Opens log file and prints the user's name, maze
 * port number and the date/time
 * 
 * Parameters: 
 *    uint32_t maze_port
 * Return:
 *    char *log_file: name of log file
 */
char *open_log_file (uint32_t maze_port) 
```



## Compilation

To build, run `make`.

To clean up, run `make clean`.