Java :a user-defined starting position (other than 0,0)

Assignment Help JAVA Programming
Reference no: EM13162885

modifying the program so that it can start from a user-defined starting position (other than 0,0) and search for a user defined ending point (other than row-1, column-1) .

 

import java.util.*;
import java.io.*;

public class Maze
{
    private static final int TRIED = 2;
    private static final int PATH = 3;


    private int [][] grid = { {1,1,1,0,1,1,0,0,0,1,1,1,1},
            {1,0,0,1,1,0,1,1,1,1,0,0,1},
            {1,1,1,1,1,0,1,0,1,0,1,0,0},
            {0,0,0,0,1,1,1,0,1,0,1,1,1},
            {1,1,1,0,1,1,1,0,1,0,1,1,1},
            {1,0,1,0,0,0,0,1,1,1,0,0,1},
            {1,0,1,1,1,1,1,1,0,1,1,1,1},
            {1,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} };
  
   

    /**
     * Marks the specified position in the maze as TRIED
     *
     * @param row the index of the row to try
     * @param col the index of the column to try
     */
    public void tryPosition(int row, int col)
    {
        grid[row][col] = TRIED;
    }
   
    /**
     * Return the number of rows in this maze
     *
     * @return the number of rows in this maze
     */
    public int getRows()
    {
        return grid.length;
    }
   
    /**
     * Return the number of columns in this maze
     *
     * @return the number of columns in this maze
     */
    public int getColumns()
    {
        return grid[0].length;
    }

    /**
     * Marks a given position in the maze as part of the PATH
     *
     * @param row the index of the row to mark as part of the PATH
     * @param col the index of the column to mark as part of the PATH
     */
    public void markPath(int row, int col)
    {
        grid[row][col] = PATH;
    }

    /**
     * Determines if a specific location is valid. A valid location
     * is one that is on the grid, is not blocked, and has not been TRIED.
     *
     * @param row the row to be checked
     * @param column the column to be checked
     * @return true if the location is valid   
     */
    public boolean validPosition(int row, int column)
    {
        boolean result = false;

        // check if cell is in the bounds of the matrix
        if (row >= 0 && row < grid.length &&
            column >= 0 && column < grid[row].length)

            // check if cell is not blocked and not previously tried
            if (grid[row][column] == 1)
                result = true;

        return result;
    }

    /**
     * Returns the maze as a string.
     *
     * @return a string representation of the maze
     */
    public String toString()
    {
        String result = "\n";

        for (int row=0; row < grid.length; row++)
        {
            for (int column=0; column < grid[row].length; column++)
                result += grid[row][column] + "";
            result += "\n";
        }

        return result;
    }
private Maze maze;
   
    /**
     * Constructor for the MazeSolver class.
     * @return
     */
    public void MazeSearch(Maze maze)
    {
        this.maze = maze;
    }

public boolean traverse()
{
    boolean done = false;
    int row, column;
    Position pos = new Position();
    Deque<Position> stack = new LinkedList<Position>();
    stack.push(pos);
   
    while (!(done) && !stack.isEmpty())
    {
        pos = stack.pop();
        maze.tryPosition(pos.getx(),pos.gety()); // this cell has been tried
        if ((pos).GetX() == maze.getRows()-1 && pos.gety() == maze.getColumns()-1)
            done = true; // the maze is solved
        else
        {
            push_new_pos(pos.getx() - 1,pos.gety(), stack);
            push_new_pos(pos.getx() + 1,pos.gety(), stack);
            push_new_pos(pos.getx(),pos.gety() - 1, stack);
            push_new_pos(pos.getx(),pos.gety() + 1, stack);
        }
        if (done)
            maze.markPath(pos.getx(),pos.gety());
    }
   
    return done;
}
private void push_new_pos(int x, int y,
        Deque<Position> stack)
{
Position npos = new Position();
npos.setx(x);
npos.sety(y);
if (maze.validPosition(x,y))
stack.push(npos);
}
}

 

Reference no: EM13162885

Questions Cloud

Calculate the frequency of light : Calculate the frequency (in Hz) of light necessary to move an electron in a He+ ion from the n =2 to n =4 energy level. The Rydberg constant for a helium ion is R = 4.390 x 107 m-1
How many grams of water was in the sample : 67 g of ice at 0 degree C added to a sample of water at 6 degrees, all the ice melts and decreases to 0 degrees. how many grams of water was in the sample?
What is the approximate value of ka for the acid : A student dissolves 1.01 grams of nicotinic acid, C_6_H_5_NO_2_, in water to give 60 mL of solution having a pH of 2.67. What is the approximate value of Ka for the acid based on this observation?
Describe how a crystal of alum differs from potassium : In the chemical formula for alu, there are 12 water molecules present. It is also possible to prepare the anhydrous compound potassium aluminum sulfate. On the "molecular scale" describe how a crystal of alum differs from a crystal of potassium al..
Java :a user-defined starting position (other than 0,0) : modifying the program so that it can start from a user-defined starting position (other than 0,0) and search for a user defined ending point (other than row-1, column-1) .
Profit marketing strategies to nonprofit organization : What are the primary drivers for applying for-profit marketing strategies to a nonprofit organization?
Conservation biologists and wildlife specialists argue : Most conservation biologists and wildlife specialists argue that the Endangered Species Act of 1973 could be made more effective if whole threatened habitats are protected rather than just individual species (that is, the "Sanctuary Approach"). By sa..
State derive an expression for the instantaneous temperature : Derive an expression for the instantaneous temperature as a function of the instantaneous pressure, and use it to sketch T/Ti vs P/Pi.
Discuss the different poetic techniques and themes : Discuss the different poetic techniques, themes, and the uses of language in the poetry of Shakespeare, Blake, Whitman, Dickinson, Frost, and Rich?

Reviews

Write a Review

JAVA Programming Questions & Answers

  Wrappershallow and wrapperdeep

Each class is simply a wrapper class to hold a private array variable. int [] a; The default constructor for each class should initialize â??aâ??. Each class should have a toString() and equals(). Each class should have a setArray method that allows ..

  The drink machine should have a supply

When the applet starts, the drink machine should have a supply of 20 of each of the drinks. The applet should have a text field where the user can enter the amount of money he or she is giving the machine. The user can then click on a button to selec..

  Using a linked implementation of graph write a method

Write a method that takes two nodes as input and returns true if joining an edge between these two nodes, forms a duplicate path to one of the input nodes within the graph.

  Write java program to compute how much federal need to pay

Write a java application to calculate how much federal and state tax you need to pay. The program should accomplish the following task.

  Build a graphical user interface for displaying the image

Build a graphical user interface for displaying the image groups (= cluster) in JMJRST. Design and implement using a Swing interface.

  Evaluate the rtas resource requirements

Design and implement a set of classes and interfaces and use them to evaluate the RTA's resource requirements.

  Calculate the maximum data rate in mb/second

b)How much cylinder skew is needed for an Oceangate disk operating at 20,000 rpm(new series for the Christmas promotions) which has a seek time of 0.5 milliseconds? This disk has 800 sectors of 512 bytes each on each track.

  You need to train for 10 weeks

You are preparing for a marathon. In order to prepare, you need to train for 10 weeks, running an increasing number of miles per week, starting at running at least 2 miles your first week up to 26 miles by week 10.

  Create the working applet to compute tax

Write down a java applet. Your applet assits to find out how much federal tax we require to pay suppose the tax rate is 12%. Create and implement the working applet to compute tax.

  Write java program prints strings given at command line

Write down the program Average.java which just prints strings which it is given at command line, one per line. If nothing is given at command line, print "No arguments".

  Create a circle class

create acircle class, which has one field, the radius. the class should contains two constructors: a no-argument constructor that set the radius to zero, and a constructor that takes a parameter to set the radius.

  Create java program to describe inheritance and polymorphism

Create a Java program based on the geometric shapes example described at the beginning of this lesson using Classes Square, Triangle, Rectangle, and Circ leto help describe inheritance and polymorphism.

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd