Tile-based Pseudo-realtime Shooter

Windows executable: manager.exe
Source code: source.zip
A More detailed description of the game with statistics: report.doc

Objective

The object of the game is to shoot your opponent. Though it may seem like it, the game is not turn-based. For example, Player 0 makes their move. Then Player 1 makes their move before the board is updated to reflect Player 0's new move (we can do this because the game was designed to be played computer opponents). After both players have selected thei r moves, the board updates, reflecting the changes that have occurred as a result of either player's actions.

Starting the Game

Upon running the application, you must select the type of players for the game. For example, if you wanted to play against the "informed search" bot, you'd select options 1 and 7 from the menu.

Gameplay

There are 3 movement/action options: (M)ove, (S)hoot, and (D)oNothing
There are 8 movement/action directions: North (N), NorthEast (NE), East (E), SouthEast (SE), South (S), SouthWest (SW), West (W), NorthWest (NW)

For example, when you are prompted for your turn you could enter the following: mne
This would move your player in the northeast direction by one tile.

Here are some additional examples:
msw - moves your player in the southwest direction by one tile
sn - your player will shoot in the northern direction
sse - your player will shoot in the southeastern direction
d - your player will do nothing during this turn

You get the idea.

Notes

- I completed this project with two other people in the Fall of 2001.
- Due to the restrictions of the course, we were limited to using straight-C.
- We had to implement all of our own data structures (stacks, queues, linked lists, graphs, etc.)
- This program is not bug free by any means! For example, attempting to have two "informed search" bots play each other will cause it to crash.
- Additionally, the informed search bot uses the alpha-beta pruning algorithm on the game tree and should really never lose. However, there are scenarios in which the bot choos es to shoot rather than dodge a bullet and, as a result, loses.