Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

MAZE Project Write a Maze class with the following requirements: Takes any two-dimensional array that represents a maze: 0s (zeros) for the walls, and 1s

MAZE Project

Write a Maze class with the following requirements:

Takes any two-dimensional array that represents a maze: 0s (zeros) for the walls, and 1s for the available paths. A zip file has been uploaded to the project folder for you to complete.

There will be only one constructor that takes a two-dimensional array

A method named displayMaze should print the maze (bird-view) that shows the walls and the available paths,

A method named displayPath should print the maze (bird-view) that shows the walls and the available paths,and the route for the solution until the current location (for example the location of the mouse and the path it took from start point to current location

A method named takeStep that takes one step each time when it is called and displays the maze again

A method named findExit runs and finds the solution all the way to the exit and displays the maze showing the suggested path

Assume that entry point of the maze is always the last row and the first column and the first move direction will be to the north. Therefore, with the constructor, set the location and direction properly. Ignore checking exit for the first 3 steps.

Test program is given for your testing

The program should work with any Maze including different size of maze.

Sample display of the maze

Sample output after taking some steps. ~ represents the path towards solution, @ represents a mouse

//maze.java

public class Maze {

private char direction;

private int r=1; // x position of the mouse

private int c=16; //y position of the mouse

private boolean exitFound = false;

public Maze(int[][] arrMaze) {

}

//Prints out the maze without solution

public void displayMaze(int[][] arrMaze) {

//display the maze putting blank spaces where there are 1's in the array and putting

//another symbol where there are 0's to show the maze without the solution

for(int i=0; i

System.out.println(" ");

for(int j=0; j

if(arrMaze[i][j] == 0){

System.out.print("#");

} if(arrMaze[i][j] == 1) {

System.out.print(" ");

} if(arrMaze[i][j] == 2){

System.out.print("@");

} if(arrMaze[i][j] == 3){

System.out.println("~");

}

}

}

}

//displays the Maze with the path taken

public void displayPath(int[][] arrMaze) {

/*show the user how far the mouse has gone since the start.

* The path the mouse has gone will be filled in but the path ahead will not.

*/

for (int i = 0; i < arrMaze.length; i++) {

System.out.println("");

for (int j = 0; j < arrMaze[i].length; j++) {

if (arrMaze[r][c] == 3) {

System.out.print("@");

} else if (arrMaze[r][c] == 2) {

System.out.print("~");

} else if (arrMaze[r][c] == 0) {

System.out.print("#");

} else {

}

}

}

}

public boolean takeStep(int[][] newMaze) {

// moveNorth(newMaze);

for (int i = 0; i < newMaze.length; i++) {

System.out.println(" ");

for (int j = 0; j < newMaze[i].length; j++) {

if (newMaze[r][c] == 3) {

moveNorth(newMaze);

System.out.print("~");

} else if (newMaze[r][c] == 2) {

System.out.print("@");

} else {

}

}

}

return isAnExit(newMaze);

}

public void moveNorth(int[][] arrMaze) {

//complete the code here

/*method will check for a 0 or a 1 in the position above the current position

* and then if not a 0 will change the current position to the row above it, but in the same column.

*/

if (arrMaze[r][c - 1] != 0) {

arrMaze[r][c - 1] = 3;

arrMaze[r][c + 1] = 2;

} else {

moveSouth(arrMaze);

}

displayPath(arrMaze);

//if(userInput=n){

//arrMaze[i-1][j] = "@";

//arrMaze[i][j]= "-/~";

// }

}

public void moveSouth(int[][] arrMaze) {

//complete the code here

/*method will check for a 0 or a 1 in the position below the current position and then if not a 0

* will change the current position to the row below it, but in the same column.

*/

if (arrMaze[r][c + 1] != 0) {

arrMaze[r][c + 1] = 3;

arrMaze[r][c + 1] = 2;

} else {

moveNorth(arrMaze);

}

displayPath(arrMaze);

}

public void moveEast(int[][] arrMaze) {

//complete the code here

/*method will check for a 0 or a 1 in the position to the right of the current position and then if

* not a 0 will change the current position to the column to the right but the same row.

*/

if (arrMaze[r + 1][c] != 0) {

arrMaze[r + 1][c] = 3;

arrMaze[r - 1][c] = 2;

} else {

moveWest(arrMaze);

}

displayPath(arrMaze);

}

public void moveWest(int[][] arrMaze) {

//complete the code here

/*method will check for a 0 or a 1 in the position to the left of the current position and then if

*not a 0 will change the current position to the column to the left but the same row.

*/

if (arrMaze[r - 1][c] != 0) {

arrMaze[r - 1][c] = 3;

arrMaze[r + 1][c] = 2;

} else {

}

displayPath(arrMaze);

}

private boolean isAnExit(int[][] arrMaze) {

//complete the code here

/*method will return true if the user arrives into the last column of the array because there is only one

* location in the last column that is a 1, so if the user reaches the array[i].length then that means that

* it found

an exit.

*/

if (arrMaze[r][c] > arrMaze.length) {

exitFound = true;

} else {

exitFound = false;

}

return exitFound;

}

//finds the path without stopping at every step

public void findExit(int[][] arrMaze) {

if (arrMaze[r][c] > arrMaze.length) {

for (int i = 0; i < arrMaze.length; i++) {

takeStep(arrMaze);

}

}

//complete the code here

//method will show the complete path from start to finish of the maze and the suggested route to the end.

}

}

//testMaze.java

import java.util.Scanner;

public class TestMaze { public static void main(String[] args){ int[][] mazeArray = { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0}, {0,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,1}, {0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0}, {0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0}, {1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0}, {2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} }; Maze myMaze = new Maze(mazeArray); boolean keepAsking = true; Scanner scan = new Scanner(System.in); String input = ""; myMaze.displayPath(mazeArray); do { System.out.println("T = Take a step | S = Show path | Q = Quit"); System.out.print("Enter command: "); input = scan.nextLine(); input.trim(); input.toLowerCase(); if(input.equals("t")) { keepAsking = !myMaze.takeStep(mazeArray); System.out.println("Which direction would you like to go? N, S, E, W?"); String direction = scan.nextLine(); if(direction.equalsIgnoreCase("n")) myMaze.moveNorth(mazeArray); if(direction.equalsIgnoreCase("s")) myMaze.moveSouth(mazeArray); if(direction.equalsIgnoreCase("e")) myMaze.moveEast(mazeArray); if(direction.equalsIgnoreCase("w")) myMaze.moveWest(mazeArray); } else if(input.equals("s")) { myMaze.findExit(mazeArray); keepAsking = false; } else if(input.equals("q")) { keepAsking = false; } else { System.out.println("ERR: Invalid input"); } } while(keepAsking); System.out.println("Quitting program..."); scan.close(); } }

My problem is that the output is not shwoing the maze as i want it to

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

PostgreSQL Up And Running A Practical Guide To The Advanced Open Source Database

Authors: Regina Obe, Leo Hsu

3rd Edition

1491963417, 978-1491963418

More Books

Students also viewed these Databases questions

Question

bandi

Answered: 1 week ago

Question

The company openly shares plans and information with employees.

Answered: 1 week ago