private boolean move(int row, int col, int horisontalDirection, int verticalDirection, Direction dir){
		boolean canMove = false;
		
		Tile current = board[row][col];
		if(current == null)return false;
		boolean move = true;
		int newCol = col;
		int newRow = row;
		while(move){
			newCol += horisontalDirection;
			newRow += verticalDirection;
			if(checkOutofBounds(dir, newRow, newCol))break;
			if(board[newRow][newCol] == null){
				board[newRow][newCol] = current;
				board[newRow - verticalDirection][newCol - horisontalDirection] = null;
				board[newRow][newCol].setSlideTo(new Point(newRow, newCol));
				canMove = true; 
			}
			else if(board[newRow][newCol].getValue() == current.getValue() && board[newRow][newCol].canCombine()){
				board[newRow][newCol].setCanCombine(false);
				board[newRow][newCol].setValue(board[newRow][newCol].getValue()*2);
				canMove = true;
				board[newRow - verticalDirection][newCol - horisontalDirection] = null;
				board[newRow][newCol].setSlideTo(new Point(newRow, newCol));
				board[newRow][newCol].setCombineAnimation(true);
				score += board[newRow][newCol].getValue();
			}
			else{
				move = false;
			}
		}
		return canMove;
	}