Difference between revisions of "Maze Craze"

From ESE205 Wiki
Jump to navigation Jump to search
Line 85: Line 85:
  
 
The main problem faced with the maze generator was creating mazes that have a solution in them 100% of the time. In addition, the generator could not use too much computing power since an arduino must be generating the maze which is not a strong computational device. In order to circumvent the computational problem it was realized that the program could not simulate solving mazes until one with a solution was found. Instead, we realized that the maze can be generated and then a random solution could be inserted into the maze.
 
The main problem faced with the maze generator was creating mazes that have a solution in them 100% of the time. In addition, the generator could not use too much computing power since an arduino must be generating the maze which is not a strong computational device. In order to circumvent the computational problem it was realized that the program could not simulate solving mazes until one with a solution was found. Instead, we realized that the maze can be generated and then a random solution could be inserted into the maze.
 +
 +
[[File:Maze Diagram.JPG|thumbnail|Sample Maze with Solution]]
  
 
The first step in this process was to generate a random maze which starts by simply randomly generating a 5x5 array of 4-digit binary numbers. For example, a given space might have the number 1001, which (using the index: [up][, down][right][left]) would represent a space with red walls on bottom and to the right. The maze coordinates range from [0][0] to [4][4]. If we look at the diagram of a maze with its 2 boards present we can see that an even number of player moves put the player on board 1 while an odd number of moves puts that player on board 2.
 
The first step in this process was to generate a random maze which starts by simply randomly generating a 5x5 array of 4-digit binary numbers. For example, a given space might have the number 1001, which (using the index: [up][, down][right][left]) would represent a space with red walls on bottom and to the right. The maze coordinates range from [0][0] to [4][4]. If we look at the diagram of a maze with its 2 boards present we can see that an even number of player moves put the player on board 1 while an odd number of moves puts that player on board 2.
 
[[File:Maze Diagram.JPG|thumbnail|Sample Maze with Solution]]
 
  
 
en the information above, the determined solution to the problem was to put a random solution into an already generated maze. Since the player starts at the point [0][0] and finishes at [4][4], that means a solution can be created as a random combination of up and right players moves. The generator creates such a combination and changes the according values on the maze array to 0 from 1. This allows for a minimum of one solution to the maze. There are still other possible solutions for the player to discover which is still satisfactory for the game's functionality.
 
en the information above, the determined solution to the problem was to put a random solution into an already generated maze. Since the player starts at the point [0][0] and finishes at [4][4], that means a solution can be created as a random combination of up and right players moves. The generator creates such a combination and changes the according values on the maze array to 0 from 1. This allows for a minimum of one solution to the maze. There are still other possible solutions for the player to discover which is still satisfactory for the game's functionality.

Revision as of 21:56, 30 April 2017


Overview

Maze Craze is a challenging maze game where the player must navigate ever-changing walls to reach the end. The maze is a 5 x 5 grid of spaces where the user can place their game piece. The player can only move their piece one space in any cardinal direction as long as that direction is not obstructed by a wall. The first time the player moves a space, the entire maze will change to form a new maze. The next time, the maze will revert back to its original form. Each move the game board will cycle between two maze layouts creating an elaborate mental challenge for the player. The two mazes will be randomized at the start of every new game in order to create new and exciting challenges for the user. Every maze combination created will have a possible solution to ensure that the user can potentially conquer the maze. The game will keep track of how many spaces the user moves on his or her journey as well as provide a target (ideal) number of moves. Maze Craze is fun for the whole family! See who can solve the maze in the fewest moves and try to beat the high score!

Detailed Game Description

The game board will be a 12in x 12in x 5in wooden box with the top side of the box being the game board that the user interacts with. The maze game itself will be created using on an Arduino that will be stored inside the box. One side of the box will contain a number counter created using number displays that will show the user's current number of moves. This side will also have another number display to convey the target number of moves for the player to complete the maze in.

En example of one maze and solution

The walls of the maze will be comprised of LED RGB strips which will display green when the player is permitted there is no wall and red when a wall is present. Since the board is a 5 x 5 grid, the outside border of the maze will all be painted, permanent walls that are always red. Each space where the user can place their game piece will have a hall effect sensor underneath it to track if the user's piece is on that space. The START and FINISH squares will remain constant and will be labeled in paint on the board. This data will then be used to track the user's number of moves as well as to determine when to change the maze. There will also be an on and off switch that will act as a reset for the game. Thus, the player will simply need to turn the game off and on again to reset the board. The game piece will be a 3-D printed object with a magnet attached to its base which will set of the hall effect sensors when on a space. All of the wiring will be enclosed the in box in order to make the game readily portable.

Contributors

Created by Jason Christal and Liz Halter.

TA: Natalie Ng

Objectives:

1. Construct a functioning game board with all wiring enclosed in a box.

2. Make the board aesthetically pleasing. This includes painting and decorating.

3. Make a random maze generator that ensures mazes are solvable.

4. Add user selection of game difficulty (through incorporating a switch) if time allows.

Challenges

1. Learn Arduino.

2. Constructing a box that contains the game board on the lid/top surface and the Arduino and wiring inside.

3. Wiring the game board.

4. Optimizing magnetic sensor readings by removing noise.

5. Creating a program that solves the mazes in the shortest number of moves possible

6. Creating a program that can make mazes of varying difficulty.

Budget

LED RGB Strips, 1m (3x @ $59.85 here

27 Hall Effect sensors (@ $25.65 (for all 27) here)

Arduino Mega (Provided)

Plywood 2ft by 4ft (@ $7.92 here)

3-pack of 1/2 inch screws (@ $4.00 (for 8) here)

20-pack of 10k resistors for use with Hall Effect Sensors (@ $1.90 (for 2 packs) here)

3-pack of Breadboards (@ $7.86 here)

Circular Magnets 1/2 in. dia (10 pack @$1.98 here)

Black on/off Switch (@ $0.95 here)

Black Spray Paint (@ $3.87 here)

Red Paint Pen (@ $1.97 here)

Solderable Breadboards(@ $9.99 here)

2-Line Display (@ $7.99 here)

Pack of Push Buttons (@ $ $7.31 here)

Wiring (provided)

Total

$137.08 (includes sales tax)

Design Solutions

Hall Effect Sensors

HallEffectSensorDiagram.JPG

LED Light Strips

Maze Generator

The main problem faced with the maze generator was creating mazes that have a solution in them 100% of the time. In addition, the generator could not use too much computing power since an arduino must be generating the maze which is not a strong computational device. In order to circumvent the computational problem it was realized that the program could not simulate solving mazes until one with a solution was found. Instead, we realized that the maze can be generated and then a random solution could be inserted into the maze.

Sample Maze with Solution

The first step in this process was to generate a random maze which starts by simply randomly generating a 5x5 array of 4-digit binary numbers. For example, a given space might have the number 1001, which (using the index: [up][, down][right][left]) would represent a space with red walls on bottom and to the right. The maze coordinates range from [0][0] to [4][4]. If we look at the diagram of a maze with its 2 boards present we can see that an even number of player moves put the player on board 1 while an odd number of moves puts that player on board 2.

en the information above, the determined solution to the problem was to put a random solution into an already generated maze. Since the player starts at the point [0][0] and finishes at [4][4], that means a solution can be created as a random combination of up and right players moves. The generator creates such a combination and changes the according values on the maze array to 0 from 1. This allows for a minimum of one solution to the maze. There are still other possible solutions for the player to discover which is still satisfactory for the game's functionality.

Gantt Chart

Gantt Chart

<gallery>