Our team choose the Maze game, because we thought that nobody else would approach it. It was also a challenging and exciting task. The hardest part was to figure out the Inventor interface that drives the game. We divided the task into two parts: the engine that tilts the board to move the ball and the engine that calculates the path.
There were multiple ways we could have approached the task of calculating the path. We were faced with the following possible solutions: purely reactive control and movement based on its surroundings, plannig a route for the ball to traverse and then to flollow the path generated, and a combination of these two strategies.
After weighing the options, we decided to have the program plan a route to the goal and then follow that route with the ball. We chose to plan the path before moving the ball because we didn't want the ball to wander around seemingly without a purpose while trying to reach the goal as we felt it would have if it were purely reactive. We also felt that the program would have a better chance for success if it already knew where to move the ball instead of trying to work it out on the fly while also attempting to avoid falling into a hole. Also, it was much more reasonable to program a path finding routine and then follow the path as opposed to programming the ball velocity, ball acceleration, wall placement, hole placement, and navigating a path to the goal all at once.
To tilt the board we decided to first try to simulate the mouse movement. Once the task was accomplished we connected the two interfaces together, so the planning engine generates the path and tilter reads that path and follows the directions.
There are no bugs in the code to our knowledge. The program is not very efficient though, i.e. it will most likely fail. We also think that we accomplished our task, by being able to demonstrate to the user how to play this maze game. It is best to run the demo at least a few times for each maze (particularly maze 3) because the results vary from instance to instance.
Our source code is located in /net/hc26/shleyf/mazedemo
Right now when you start the program it automatically runs the our demo game on maze 1. When demo is playing you should not touch the mouse, since the floor of the maze reacts to the mouse input. After the demo is finished you can change the maze (currently there are only 3 mazes implemented) by hitting a key with the number of the maze. I.E. to run maze 1 hit "1", for maze 2 hit "2", etc. As the number of the maze increases the maze gets more complex.
Currently, our maze plays the manually generated path for mazes 1 and 2, but plays a program generated path for maze 3. To stop playing the demo, or to reset the game when the ball drops down into a hole press "R".