@Override
	public void load(){
		// get file full path&name by fileName 
		File file = new File(fileName);
		BufferedReader in;		
		System.out.println("bufferedReader.out created");
		
		try {
			in = new BufferedReader(new FileReader(file));
			System.out.println("bufferedReader.out initialized");
			
			while(!in.ready()){
				// wait until buffer is ready - i must wait because we depends on that action. can't continue without it;
			}
			// read first line
			this.rows 		= Integer.parseInt(in.readLine());			
			this.columns 	= Integer.parseInt(in.readLine());
			// debug syso
			System.out.println("rows:"+rows+" colus:"+columns);
			
			Scanner s = new Scanner(in.readLine());
			s.useDelimiter(",");
			for(int i=0; i<2; i++){
				this.goal_s[i] = s.nextInt();				
			}
			s.close();
			
			s = new Scanner(in.readLine());
			s.useDelimiter(",");
			for(int i=0; i<2; i++){
				this.start_s[i] = s.nextInt();				
			}
			s.close();	
			
			// debug syso
			System.out.println("start position: "+start_s[0]+","+start_s[1]);
			System.out.println("goal position: "+goal_s[0]+","+goal_s[1]);
			// clear stacks 
			this.old_mouse.clear();
			this.old_score.clear();
			this.old_states.clear();
		//	s = new Scanner(in.readLine());
		//	s.close();
			int numOfWalls = Integer.parseInt(in.readLine());
			// debug syso
			System.out.println("num of walls:" + numOfWalls);
			// load walls
			s = new Scanner(in.readLine());
			s.useDelimiter(",");
			walls = new int[numOfWalls][2];
			for(int i=0 ; i<numOfWalls-1 ; i++){
				for(int j=0;j<2;j++){
					walls[i][j] = s.nextInt();	
				}
			}
			s.close();
			
			int numOfMoves = Integer.parseInt(in.readLine());
			// debug syso
			System.out.println("number Of States: "+numOfMoves);
			// mouse states
			s = new Scanner(in.readLine());
			s.useDelimiter(",");
			for(int i=0 ; i<numOfMoves ; i++){
				int mlast[] = new int[2];
				for(int j=0; j<2; j++){
					mlast[j] = s.nextInt();
				}
				old_mouse.push(mlast);
			}
			s.close();
			
			// load all score history
			s = new Scanner(in.readLine());
			s.useDelimiter(",");
			for(int i=0 ; i<numOfMoves ; i++){
				old_score.push(s.nextInt());
			}
			s.close();
			
			// debug syso
			System.out.println("current score: "+old_score.peek());
			// load all maze states from file
			for(int i=0 ; i<numOfMoves ; i++){
				int [][] last = new int[rows][columns];
				for(int m=0 ; m<rows ; m++ ){
					s = new Scanner(in.readLine());
					s.useDelimiter(",");
					for(int n=0 ; n<columns ; n++){
						last[m][n] = s.nextInt();
					}
				}
				old_states.push(last);
			}
			s.close();
			
			int x = Integer.parseInt(in.readLine());
			// debug syso
			System.out.println("succeed = "+x);
			if(x == 0){
				succeed = false;
			}else{
				succeed = true;
			}
			
			in.close();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}