public class Cell { double x, y ; // center point int i,j ; // coordinate of cell within matrix double radius ; // the cells half-width boolean walls[] ; // zero is the top, 1 the right, 2 bottom, 3 left boolean explored[] ; // paths leading out of cell explored during a search boolean visited ; // used in the maze generation and solving algorithms public Cell(int inI, int inJ, double inx, double iny, double inRadius) { x = inx ; y = iny ; i = inI ; j = inJ ; radius = inRadius ; walls = new boolean[4] ; explored = new boolean[4] ; for (int i = 0 ; i < 4 ; i++) { walls[i] = true ; explored[i] = false ; } } public void printTerse() { System.out.print(i + " " + j + " ") ; for (int i = 0 ; i < 4 ; i++) if (walls[i]) System.out.print("U ") ; else System.out.print("D ") ; System.out.println("") ; } public void printTerseOneZero() { System.out.print(i + " " + j + " ") ; for (int i = 0 ; i < 4 ; i++) if (walls[i]) System.out.print("1 ") ; else System.out.print("0 ") ; System.out.println("") ; } public boolean visited() {return visited;} public double getX() { return x ;} public double getY() { return y ;} public int getI() {return i ;} public int getJ() { return j ;} public void setVisited(boolean newValue) {visited = newValue;} public void removeWall(int wallNum) { walls[wallNum] = false ; } public void createWall(int wallNum) { walls[wallNum] = true ; } public int numWallsUp() { int numUp = 0 ; for (int i = 0 ; i < 4 ; i++) if (walls[i]) numUp++ ; return(numUp) ; } public void setExplored(int i) {explored[i] = true ;} public void clearExplored(int i) {explored[i] = false ;} public boolean wasExplored(int i) { return explored[i] ; } public boolean wallExists(int i) { return walls[i] ;} public void draw() { if (walls[0]) StdDraw.line(x-radius, y+radius, x+radius, y+radius) ; if (walls[1]) StdDraw.line(x+radius, y+radius, x+radius, y-radius) ; if (walls[2]) StdDraw.line(x+radius, y-radius, x-radius, y-radius) ; if (walls[3]) StdDraw.line(x-radius, y-radius, x-radius, y+radius) ; } }