17 July 2017, Comments Comments Off on Programming, Solve a maze, Java

College essay writing service
Question description
I’m working on an assignment using java language, it is about finding an algorithm to solve a maze. using stack + single linked list. I have little experience with programming however the deadline is near and still I can’t get it right.
here are the java classes I have written so far for this assignment.

linked List:
public class LinkedList<T extends Comparable> {

private class Node<T extends Comparable> { // Inner class to keep Nodes private
T data;
Node next;

public Node(T s) {
data = s;
next = null;

}
}

private Node head;
private int count;

public int length() { // return number of items in list
return count;
}

public boolean isEmptyList() {
return count == 0;
}

public void initializeList() {
head = null;
count = 0;
}

public void print() {
Node temp = head;
for(int i = 0; i < count; i++) {
System.out.print(temp.data + " ");
if(i < count – 1)
temp = temp.next;
}
System.out.println();
}

public int search(T s) {
Node temp = head;
for(int i = 0; i < count; i++) {
if(temp.data.compareTo(s) == 0) {
return i;
}
if(i < count – 1)
temp = temp.next;
}
return -1;
}

public Object clone() {
LinkedList newList = new LinkedList();
Node n = head;
for(int i = 0; i < count; i++) {
newList.insert(n.data);
if(n.next != null)
n = n.next;
}
return newList;
}

public void insert(T s) {
//Node n = new Node(s);
if(count == 0) {
head = new Node(s);
count++;
return;
}
Node n = new Node(s);
Node temp = head;

while (temp.next != null ) {
temp = temp.next;
}

temp.next = n;

count++;
}

public T deleteFront() {
if (count > 0) {
T s = (T)head.data;
head = head.next;

count–;

if(count == 0)
head = null;
return s;
}
return null;
}

public int delete(T s) {
int index = search(s);
if(index < 0) // if object not found in list return -1
return -1;
else {
if(index == 0) // if target at head or tail, use other delete methods
deleteFront();
else { // walk to delete point and delete node
Node n = head;
for(int i = 0; i < index – 1; i++){
n = n.next;
}
n.next = n.next.next;
count–;
}
return index + 1;
}
}

}

Position:
public class Position implements Comparable {
private int x;
private int y;

public Position() {
this.x = 0;
this.y = 0;
}

public Position(int xIn, int yIn) {
x = xIn;
y = yIn;
}

public Position(Position p) {
x = p.x;
y = p.y;
}

public void up() {
x–;
}
public void down() {
x++;
}

public void right() {
y++;
}
public void left() {
y–;
}
public int getX() {
return x;
}

public int getY() {
return y;
}
//@Override
public int compareTo(Position p) {

return 0;
}

//@Override
public String toString() {
return “[” + x + “, ” + y + “]\n”;
}
public static void main(String[] args){
Position p = new Position(5,5);
System.out.print(p.toString());
p.up();
System.out.print(p.toString());
p.down();
System.out.print(p.toString());
p.right();
System.out.print(p.toString());
}

}

Maze:
import java.io.*;
import java.util.*;
public class Maze {

public static void main(String[] args)throws FileNotFoundException{
char[][] maze=new char[20][20];
maze=fillArray(“maze.txt”); //function to store maze from text file to an Array
int x = 0, y = 0;

Scanner input = new Scanner(System.in);
do{
System.out.println(“Enter x and y values(to quit enter -1)”);
System.out.println(“x = “);
x = input.nextInt();
if(x == -1){
break;
}
System.out.println(“y = “);
y = input.nextInt();
if((x>=0)&&(y>=0)){
startMaze(x,y, maze);
}
}while((x> -1)||(y >-1));
}
public static char[][]fillArray(String file)throws FileNotFoundException
{
Scanner sc = new Scanner(new File(file));
char[][]maze = new char[20][20];// creats array to store the maze
String line = “”; //creat string to hold the lines from the text file,
//I have noticed .next function takes whole string if there was no whitespaces

for(int r = 0; r < 20; r++)
{
line = sc.next();//move to next String/Line
for(int c = 0; c < 20; c++)
{
maze[r][c] = line.charAt(c);//store charactures to the maze array
}

}//end for
//printArray(maze);

return maze;
}//end fillArray
public static void printArray(char[][] maze)
{
System.out.println();
for(int r=0;r<20;r++)
{
for(int c=0;c<20;c++)
{
System.out.print(maze[r][c]+" ");
}
System.out.println();
}//end for
}//end printArray

public static void startMaze(int x, int y, char[][] maze){
if(maze[x][y] == 'E'){
System.out.print("It is The Exit\n " );
printArray(maze);
}else if(maze[x][y] == 1){
System.out.println("Trapped!! 🙁 \n ");
printArray(maze);
}else{
System.out.println("Solving the maze \n ");
solveMaze(x,y, maze);
}
}

public static void solveMaze(int x, int y, char[][] mArray){
Position p = new Position(x,y);
char[][] maze = Arrays.copyOf(mArray, mArray.length);
LinkedList list = new LinkedList();

Stack stc = new Stack();
System.out.println(“stack created”);
list.insert(p);
list.print();
boolean exit = true;
//try{
while(exit){
System.out.println(“Start “+ p.toString()+ “, with value ” +maze[x][y]);
System.out.println(“1”);

if(x>0){ //moving up through the maze
System.out.println(“1.2 “);
if(maze[x-1][y] == ‘0’){
p.up();
maze[x][y] = ‘S’;
System.out.println(“UP, ” + maze[x][y]);
x = p.getX();
list.insert(p);

}

}
System.out.println(“2”);
if(y>0){
System.out.println(“2 “);
if(maze[x][y-1] == ‘0’){
p.left();
maze[x][y] = ‘S’;
System.out.println(“LEFT, ” + maze[x][y]);
y = p.getY();
list.insert(p);
}else if(maze[x][y-1] == ‘E’){
p.left();
exit = false;
maze[x][y] = ‘S’;
System.out.println(“LEFT, ” + maze[x][y]);
y = p.getY();
list.insert(p);
}
}
if((x<20)&&(y<20)){
if(maze[x+1][y] == '0'){
p.down();
maze[x][y] = 'S';
System.out.println("DOWN, " + maze[x][y]);
x= p.getX();
list.insert(p);
}else if(maze[x][y+1] == '0'){
p.right();
maze[x][y] = 'S';
System.out.println("RIGHT, " + maze[x][y]);
y = p.getY();
list.insert(p);
}
}
}//end Loop
printArray(maze);
list.print();
/*}
catch(ArrayIndexOutOfBoundsException a){
System.out.println(p.getX() + " , " + p.getY());
printArray(maze);
}*/
}

}
This is property of research paper scholars. We provide online essay help to most students in the United States. For all your urgent assignment needs, do not hesitate to ask for our assistance. Sign up for free and let't graduate together