Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

PROJECT Traversing a Maze - Using Methods in Java Objective To type a simple Jav

ID: 3722848 • Letter: P

Question

PROJECT    Traversing a Maze - Using Methods in Java                    

Objective        To type a simple Java program, execute ( run ) the program for some particular                           values, observe the output and then modify the program.

PROJECT DESCRIPTION

            Type, compile and run the basic Java program that is shown in Figure 3 , which follows.

            Then compile and run your program, observe the output then modify the program.    

Information About This Project

For this project, we will create an application that traverses a rectangular grid - like maze, as shown in Figure 1 below. The maze has a start entrance position and an exit or finishing position.

Figure 1 ( Sample Maze Format )

start

finish

            One way to program a maze structure is to envision the maze as comprised of cells or     zones. This maze has none cells or zones.

Figure 2 ( Another Sample Maze Format )

start

zone 1

zone 2

zone 3

zone 4

zone 5

zone 6

zone 7

zone 8

zone 9

finish

The optimal solution ( minimal movements ) to the above maze ( Figure 2 ) would be:

cell start position

movement

action

cell end position

start ( outside maze )

move 1

move right

zone 1

zone 1

move 2

move right

zone 2

zone 2

move 3

move down

zone 5

zone 5

move 4

move right

zone 6

zone 6

move 5

move down

zone 9

zone 9

move 6

move down

finish

Steps to Complete This Project

STEP 1             Open Eclipse or NetBeans

                        Open Eclipse or NetBeans and create a Java project with the following details.

                        For Project Name include: Maze

                        For the Main Class include: Maze

                        In your Code window, shown below, copy in the program code shown in
            Figure 3 below, in the appropriate places, except substitute your own name in                place of Sammy Student.

PROJECT    Traversing a Maze - Using Methods in Java

Figure 3          Source Code for the Traversing a Maze Program

import java.util.Scanner;

//Sammy Student, Programmer

public class Maze

{

static Scanner sc = new Scanner(System.in);

// maze movements

static char myMove = '';

// cell position

static int currentCell = 0;

static int score = 0;

static boolean advance = true;

static boolean checkThis = false;

public static void main(String args[])

{

   // the local variables declared and initialized

   char answer = 'Y';

   displayMenu();

     

   while(answer == 'Y' || answer == 'y')

   {

      displayMovement();

      makeYourMove();

      checkThis = checkYourMove();

      mazeStatus();

     

      System.out.println("move again(Y or N)?");

      answer = sc.next().charAt(0);

     

}

   System.out.println("***************************");

}// end main() method

static void displayMenu()

{

   System.out.println("");

   System.out.println("***************************");

   System.out.println("----The Maze Strategy---");

   System.out.println("");

}// end method

PROJECT    Traversing a Maze - Using Methods in Java

Figure 3          Source Code for the Traversing a Maze Program ( continued )

static void displayMovement()

{

      if(currentCell == 0)

      {

            System.out.println("You have entered the maze!!");

            System.out.println("There is no turning back!!");

            currentCell = 1;

            mazeStatus();

            advance = true;

      }

      System.out.println("make your move (W, A, S, D)");

      System.out.println("W = up, A = left, S = down, D = right)");

}// end method

static void makeYourMove()

{

      myMove = sc.next().charAt(0);

     

      switch(myMove)

      {

      case 'W': { MoveUp(); break; }

      case 'A': { MoveLeft(); break; }

      case 'S': { MoveDown(); break; }

      case 'D': { MoveRight(); break; }

      }

   // end program menu

}// end method

static boolean checkYourMove()

{

      if(currentCell == 1 && advance == true)

      {

            if (myMove == 'W')

            {

                  advance = false;

                  System.out.println("try again");

                  return advance;

            }

            if (myMove == 'A')

            {

                  advance = false;

                  System.out.println("SORRY, there is no return");

                  return advance;

            }

           

PROJECT    Traversing a Maze - Using Methods in Java

Figure 3          Source Code for the Traversing a Maze Program ( continued )

            if (myMove == 'D')

            {

                  currentCell = 2;

                  advance = true;

                  System.out.println("continue through the maze");

                  return advance;

            }

            if (myMove == 'S')

            {

                  advance = false;

                  System.out.println("continue through the maze");

                  return advance;

            }

      }

      if(currentCell == 2 && advance == true)

      {

            if (myMove == 'W')

            {

                  advance = false;

                  System.out.println("try again");

                  return advance;

            }

            if (myMove == 'A')

            {

                  advance = false;

                  System.out.println("SORRY, there is no return");

                  return advance;

            }

            if (myMove == 'D')

            {

                  advance = false;

                  System.out.println("continue through the maze");

                  return advance;

            }

            if (myMove == 'S')

            {

                  currentCell = 5;

                  advance = true;

                  System.out.println("continue through the maze");

                  return advance;

            }

      }

      return advance;

      // end program menu

}// end method

PROJECT    Traversing a Maze - Using Methods in Java

Figure 3          Source Code for the Traversing a Maze Program ( continued )

static void MoveLeft()

{

   System.out.println("you moved to the left");

  

}//end method

static void MoveRight()

{

      System.out.println("you moved to the right");

     

}//end method

static void MoveUp()

{

      System.out.println("you moved up (forward)");

     

}//end method

static void MoveDown()

{

      System.out.println("you moved down (downward)");

     

}//end method

static void mazeStatus()

{

      System.out.println("current position: cell " + currentCell);

}//end method

}// end class

STEP 2             Build, Compile and Run the Program

    

From the menu select [ Run ] and click [ Run Project ] to run your app.

  

STEP 3             Test the Program

    

            Once you have successfully compiled your program, review the output Console                          window of your Java editor.

                       

                        Enter the sample information shown in Figure 4 that follows. Observe the                                 output of the starter code, after you enter the Figure 4 data.

                                   

                        Reviewing the starter code we see that the program has us traverse the maze                             format given in Figure 2 . Basically, the starter code is comprised of a group of                           methods that have us enter the maze and then move from cell to cell until we                             reach the exit point of the maze. When examining the checkYourMove()                                method, we notice that only movement through the cells 1 and 2 , from Figure                                2 , have been programmed. The rest of the cell movements, for cells 3                                      through 9 , must be also be programmed, as instructed in the next step of this                                 project, even if any of cells 3 through 9 are not in the solution path to                                                 successfully exit the maze.   

            Movement through the cells is performed by entering W for upward movement,                           A to go left to a cell, D to move to the right and S to move downward.                    

PROJECT    Traversing a Maze - Using Methods in Java

Figure 4          Initial Test Run

***************************

----The Maze Strategy---

You have entered the maze!!

There is no turning back!!

current position: cell 1

make your move (W, A, S, D)

W = up, A = left, S = down, D = right)

D

you moved to the right

continue through the maze

current position: cell 2

move again(Y or N)?

Y

make your move (W, A, S, D)

W = up, A = left, S = down, D = right)

S

you moved down (downward)

continue through the maze

current position: cell 5

move again(Y or N)?

N

***************************

STEP 5             Modify the Program

           

                        Supplement the checkYourMove() method by including the remaining if                                statements that allow the maze participant to escape the maze.

            if(currentCell == 5 && advance == true)

            {

                  .     .     .

            }

            if(currentCell == 6 && advance == true)

            {

                  .     .     .

            }

            if(currentCell == 9 && advance == true)

            {

                  .     .     .

            }

                        Also, include similar if() statements for the remaining cells, even if the cell is                            not in the escape cell sequence for the maze, i.e. include the ability to move to                                   any cell within the maze even if that cell is not in the maze minimal success                                traversal pattern.                      

PROJECT    Traversing a Maze - Using Methods in Java

                        Now, utilize the score variable to assign a score to each move. Also track the                            number of moves that the user makes in their escape of          the maze.         

STEP 6             Submit Your Project

Once you have determined that your modified program is correctly displaying the maze path solution, complete the submission process as follows:

Open MS Word and type a heading for a new document that includes your full name, course number, lab number and date.

Within the document paste in a snapshot of your modified code. Label your snapshot of your modified run with a reasonable description.

Include other snapshots to show the operation of your program as it is used by the program user.

After your snapshot, paste in your finished source code as well copied in from your Java editor.

Submit your MS Word document, when complete.

start

finish

Explanation / Answer

output without modification


***************************
----The Maze Strategy---

You have entered the maze!!
There is no turning back!!
current position: cell 1
make your move (W, A, S, D)
W = up, A = left, S = down, D = right)

D
you moved to the right
continue through the maze
current position: cell 2
move again(Y or N)?

Y
make your move (W, A, S, D)
W = up, A = left, S = down, D = right)
S
you moved down (downward)
continue through the maze
current position: cell 5
move again(Y or N)?

N
***************************

java file after modification

package Maze;

import java.util.Scanner;

//Sammy Student, Programmer

public class Maze

{

   static Scanner sc = new Scanner(System.in);

   // maze movements

   static char myMove = '';

   // cell position

   static int currentCell = 0;

   static int score = 0;

   static boolean advance = true;

   static boolean checkThis = false;

   public static void main(String args[])

   {

       // the local variables declared and initialized

       char answer = 'Y';

       displayMenu();

       while (answer == 'Y' || answer == 'y')

       {

           displayMovement();

           makeYourMove();

           checkThis = checkYourMove();

           mazeStatus();

           System.out.println("move again(Y or N)?");

           answer = sc.next().charAt(0);

       }

       System.out.println("***************************");

   }// end main() method

   static void displayMenu()

   {

       System.out.println("");

       System.out.println("***************************");

       System.out.println("----The Maze Strategy---");

       System.out.println("");

   }// end method

   static void displayMovement()

   {

       if (currentCell == 0)

       {

           System.out.println("You have entered the maze!!");

           System.out.println("There is no turning back!!");

           currentCell = 1;

           mazeStatus();

           advance = true;

       }

       System.out.println("make your move (W, A, S, D)");

       System.out.println("W = up, A = left, S = down, D = right)");

   }// end method

   static void makeYourMove()

   {

       myMove = sc.next().charAt(0);

       switch (myMove)

       {

       case 'W': {
           MoveUp();
           break;
       }

       case 'A': {
           MoveLeft();
           break;
       }

       case 'S': {
           MoveDown();
           break;
       }

       case 'D': {
           MoveRight();
           break;
       }

       }

       // end program menu

   }// end method

   static boolean checkYourMove()

   {

       if (currentCell == 1 && advance == true)

       {

           if (myMove == 'W')

           {

               advance = false;

               System.out.println("try again");

               return advance;

           }

           if (myMove == 'A')

           {

               advance = false;

               System.out.println("SORRY, there is no return");

               return advance;

           }

           if (myMove == 'D')

           {

               currentCell = 2;

               advance = true;

               System.out.println("continue through the maze");

               return advance;

           }

           if (myMove == 'S')

           {

               advance = false;

               System.out.println("continue through the maze");

               return advance;

           }

       }

       if (currentCell == 2 && advance == true)

       {

           if (myMove == 'W')

           {

               advance = false;

               System.out.println("try again");

               return advance;

           }

           if (myMove == 'A')

           {

               advance = false;

               System.out.println("SORRY, there is no return");

               return advance;

           }

           if (myMove == 'D')

           {

               advance = false;

               System.out.println("continue through the maze");

               return advance;

           }

           if (myMove == 'S')

           {

               currentCell = 5;

               advance = true;

               System.out.println("continue through the maze");

               return advance;

           }

       }
      
       //modified program
       if (currentCell == 5 && advance == true)

       {

           if (myMove == 'W')

           {

               advance = false;

               System.out.println("try again");

               return advance;

           }

           if (myMove == 'A')

           {

               advance = false;

               System.out.println("SORRY, there is no return");

               return advance;

           }

           if (myMove == 'D')

           {
               currentCell = 6;

               advance = true;

               System.out.println("continue through the maze");

               return advance;

           }

           if (myMove == 'S')

           {


               advance = false;

               System.out.println("continue through the maze");

               return advance;

           }

       }
      
       if (currentCell == 6 && advance == true)

       {

           if (myMove == 'W')

           {

               advance = false;

               System.out.println("try again");

               return advance;

           }

           if (myMove == 'A')

           {

               advance = false;

               System.out.println("SORRY, there is no return");

               return advance;

           }

           if (myMove == 'D')

           {

               advance = false;

               System.out.println("continue through the maze");

               return advance;

           }

           if (myMove == 'S')

           {

               currentCell = 9;

               advance = true;

               System.out.println("continue through the maze");

               return advance;

           }

       }
      
       if (currentCell == 9 && advance == true)

       {

           if (myMove == 'W')

           {

               advance = false;

               System.out.println("try again");

               return advance;

           }

           if (myMove == 'A')

           {

               advance = false;

               System.out.println("SORRY, there is no return");

               return advance;

           }

           if (myMove == 'D')

           {

               advance = false;

               System.out.println("continue through the maze");

               return advance;

           }

           if (myMove == 'S')

           {

               currentCell = 9;

               advance = true;

               System.out.println("continue through the maze");

               return advance;

           }

       }

       return advance;

       // end program menu

   }// end method

   static void MoveLeft()

   {

       System.out.println("you moved to the left");

   }// end method

   static void MoveRight()

   {

       System.out.println("you moved to the right");

   }// end method

   static void MoveUp()

   {

       System.out.println("you moved up (forward)");

   }// end method

   static void MoveDown()

   {

       System.out.println("you moved down (downward)");

   }// end method

   static void mazeStatus()

   {

       System.out.println("current position: cell " + currentCell);

   }// end method

}// end class

output after modification


***************************
----The Maze Strategy---

You have entered the maze!!
There is no turning back!!
current position: cell 1
make your move (W, A, S, D)
W = up, A = left, S = down, D = right)
D
you moved to the right
continue through the maze
current position: cell 2
move again(Y or N)?
Y
make your move (W, A, S, D)
W = up, A = left, S = down, D = right)
S
you moved down (downward)
continue through the maze
current position: cell 5
move again(Y or N)?
Y
make your move (W, A, S, D)
W = up, A = left, S = down, D = right)
D
you moved to the right
continue through the maze
current position: cell 6
move again(Y or N)?
Y
make your move (W, A, S, D)
W = up, A = left, S = down, D = right)
S
you moved down (downward)
continue through the maze
current position: cell 9
move again(Y or N)?
N
***************************

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at drjack9650@gmail.com
Chat Now And Get Quote