Due: Wednesday January 30th at 11:59pm
The objectives of this lab are to reinforce and help teach:
In this lab you will finish the development of a program that reads a maze from a file into a two-dimensional character array. The maze is defined by a 30 x 12 grid with each square of the maze holding one of the following characters:
# - A maze wall <space> - The space character indicating nothing at in that space thus the person may walk there. ^ > v < - The person, represented by one of these characters indicating the person is facing north, east, south, or west, respectively. X - This marks the spot of the exit of the maze.
The purpose of this program is to read the maze and then prompt for input from the user in the form of a single character command that when processed moves the person through the maze until they make it to the exit. When the user makes it to the exit the program terminates with a congratulations message.
The single-character inputs that the program accepts to move the person through the maze are:
L - Rotate the person left 90 degrees R - Rotate the person right 90 degrees F - Move the person one space forward B - Move the person once space backwards Q - Quit (exits the program)
If you attempt to move the person forward or backward into a space occupied by a wall the program should warn the user and keep the person's position unchanged.
The maze will be such that you cannot move outside of the maze boundaries. In other words, there will be maze walls around the outside perimeter of the maze.
The maze file is found in the current directory and is named "maze.txt", and it has 12 lines in the file with each line having 30 characters that describe what is contained in each square of that row of the maze.
Following are the instructions and you should follow them carefully:
Your program must read from the maze.txt file in the current directory with that file containing 12 lines of 30 characters each as described in the "Overview" section above.
The maze.txt file that your program will be automatically run against when graded contains the following characters:
##############################
#> ############### ####
### ### ##### ####
### ### ########### ##### ####
### ### ### ##### # ##
### ##### ##### ####### ##
##### ####### ##### ####### ##
##### ####### ##### ####### ##
##### ##### ##
########## ########## ## ##
########## ##### X
##############################
As you develop and test your program, you can use any maze.txt file you wish as long as it adheres to the following rules
In addition, your program will prompt the user to enter a single character command (L, R, F, B or Q for Left-rotate, Right-rotate, Forward, Back and Quit, respectively) to control the person in the maze or to quit the program. Your program will be run automatically, with a commands.txt input file redirected as user input, with the contents of said file the commands required for moving the person from the starting position to the exit square of the maze defined above.
Remember, the syntax for running your program with redirected input is:
java Maze < commands.txt
Lastly, the contents of commands.txt that solve the maze provided are as follows:
F
F
R
F
F
F
F
L
F
F
F
F
L
F
F
F
R
F
F
F
F
F
F
F
F
F
F
F
F
L
F
F
R
F
F
F
F
F
F
R
F
F
F
L
F
F
R
F
F
F
F
F
F
L
F
F
Following is the desired output format:
##############################
#> ############### ####
### ### ##### ####
### ### ########### ##### ####
### ### ### ##### # ##
### ##### ##### ####### ##
##### ####### ##### ####### ##
##### ####### ##### ####### ##
##### ##### ##
########## ########## ## ##
########## ##### X
##############################
Next command (L, R, F, B or Q): F
##############################
# > ############### ####
### ### ##### ####
### ### ########### ##### ####
### ### ### ##### # ##
### ##### ##### ####### ##
##### ####### ##### ####### ##
##### ####### ##### ####### ##
##### ##### ##
########## ########## ## ##
########## ##### X
##############################
Next command (L, R, F, B or Q): F
##############################
# >############### ####
### ### ##### ####
### ### ########### ##### ####
### ### ### ##### # ##
### ##### ##### ####### ##
##### ####### ##### ####### ##
##### ####### ##### ####### ##
##### ##### ##
########## ########## ## ##
########## ##### X
##############################
Next command (L, R, F, B or Q): F
You are blocked by a wall in that direction.
##############################
# >############### ####
### ### ##### ####
### ### ########### ##### ####
### ### ### ##### # ##
### ##### ##### ####### ##
##### ####### ##### ####### ##
##### ####### ##### ####### ##
##### ##### ##
########## ########## ## ##
########## ##### X
##############################
Next command (L, R, F, B or Q): R
##############################
# v############### ####
### ### ##### ####
### ### ########### ##### ####
### ### ### ##### # ##
### ##### ##### ####### ##
##### ####### ##### ####### ##
##### ####### ##### ####### ##
##### ##### ##
########## ########## ## ##
########## ##### X
##############################
Next command (L, R, F, B or Q): F
##############################
# ############### ####
###v### ##### ####
### ### ########### ##### ####
### ### ### ##### # ##
### ##### ##### ####### ##
##### ####### ##### ####### ##
##### ####### ##### ####### ##
##### ##### ##
########## ########## ## ##
########## ##### X
##############################
Next command (L, R, F, B or Q):
. . .
##############################
# ############### ####
### ### ##### ####
### ### ########### ##### ####
### ### ### ##### # ##
### ##### ##### ####### ##
##### ####### ##### ####### ##
##### ####### ##### ####### ##
##### ##### ##
########## ########## ## ##
########## ##### > X
##############################
Next command (L, R, F, B or Q): F
##############################
# ############### ####
### ### ##### ####
### ### ########### ##### ####
### ### ### ##### # ##
### ##### ##### ####### ##
##### ####### ##### ####### ##
##### ####### ##### ####### ##
##### ##### ##
########## ########## ## ##
########## ##### >X
##############################
Next command (L, R, F, B or Q): F
##############################
# ############### ####
### ### ##### ####
### ### ########### ##### ####
### ### ### ##### # ##
### ##### ##### ####### ##
##### ####### ##### ####### ##
##### ####### ##### ####### ##
##### ##### ##
########## ########## ## ##
########## ##### >
##############################
Way to go! You made it out of the maze!
This lab must be submitted to the instructor by Wednesday, January 30th.