//A Basic Maze by kp (only for orientation, needs modifications)
//Objective: move from start(0,0) to end(4,4)
//'1'=open, '0'=closed, '.'=travelled
public class Maze
{
   char[][] maze= { {'1','0','1','0','1'},
                             {'1','1','1','1','0'},
                             {'0','0','0','1','1'},
                             {'1','0','1','1','0'},
                             {'1','0','1','1','1'} };
    boolean solved=false;
    void display()
    {   for(int i=0; i<maze.length; i++)
        {   for(int j=0; j<maze[i].length; j++)
                System.out.print(maze[i][j]+" ");
            System.out.println();
        } System.out.println();
    }//display()
    void move(int r, int c)
    {   if(r<0 || r>maze.length-1 || c<0 || c>maze.length-1 || maze[r][c]!='1') return;
        maze[r][c]='.';
        if(r==maze.length-1 && c==maze.length-1)
        {   solved=true;
            return;
        }
        if(!solved) move(r+1,c);
        if(!solved) move(r,c+1);
        if(!solved) move(r-1,c);
        if(!solved) move(r,c-1);
    }//move()
        
   public static void main(String args[])
   {   Maze obj=new Maze(); 
       obj.display();
       obj.move(0,0);
       obj.display();
    }//main
}//class
//upgradation - shortest path, all paths, different start & end, remove .s etc.
