public void makeMaze()
	 {

		  Random	rand = new Random();

		  for(int q=0;	q<act_rows-1; q++){	 //for all rows but the	last one

				if(q != 0){

					 /* get the	current row	from the	last iteration	*/
					 for(int	i=0; i<current.length; i++){
						  current[i] =	next[i];
						  next[i] =	UNDETERMINED;
					}
				}

				joinSets();
				makeVerticalCuts();


				/*	populate	the rest	of	the next	row */

				for(int j=0; j<current.length; j+=2){

					 if(next[j]	==	UNDETERMINED)
						  next[j] =	++numSet;

					 if(j	!=	current.length-1)
						  next[j+1]	= SET_WALL;
				}

				/*	record the current row onto the feild */
				for(int k=0; k<current.length; k++){

					 if(current[k]	==	SET_WALL){
						  feild[2*q+1][k+1] = MAZE_WALL;
						  feild[2*q+2][k+1] = MAZE_WALL;
					 }else{
						  feild[2*q+1][k+1] = MAZE_PATH;

						  if(current[k] == next[k]){
								feild[2*q+2][k+1]	= MAZE_PATH;
						  }
					 }
				}
		  }

		  makeLastRow();
		  makeOpenings();
		  setStart();
		  setExit();
		  setDoors();

	 }