Muranx
@Muranx
кто понял this тот в цирке не смеётся

Как реализовать drug n drop тестирование?

Здравствуйте!

Необходимо реализовать drag n drop тест (когда есть картинка, на ней вырезаны области, и пользователю нужно вставить в эти области правильные варианты).

66067394b1583659037546.png
нужна рекомендация, как лучше сделать, мне пришло в голову лишь одно. Стандартный набор тэгов html , т.е. главная картинка (в которой заглушки) ну и маленькие варианты ответов также через <img>. Но я так понимаю можно же это через канвас реализовать, не знаю на сколько это проще будет. НО тем не менее однозначно будет объект с вопросом, по типу..
let question={
	'question_type' : 'draggable',
	'picture_url' : 'questions/questions_source/cut_cat.jpg',
	'cutouts_size' : '100px', // размер картинки для варианта ответа (предполагается что варианты ответов будут квадратными
	'cutouts_positions':[
		[
			'questions/questions_source/cat_cutted_el_1.jpg', // урл одного из вариантов ответов
			'170.65px', // смещение для заглушки по оси x
			'137.82px' // смещение для заглушки по оси y
		],
		[
			'questions/questions_source/cat_cutted_el_2.jpg',
			'69.53px',
			'325.56px'
		],
		[
			'questions/questions_source/cat_cutted_el_3.jpg',
			'415.31px',
			'247.78px'
		],
	]
};

В этом варианте встаёт резонный вопрос, что это получается хардкодинг, т.е. адаптивности при таком раскладе не возможно добиться. Что вы думаете по этому поводу? p.s.: я думал сделать сеткой, т.е. типа как пазл картинка состоящая из одинаковых квадратиков (тогда это будет проще) , НО мне нужны именно различные позиции в тех. схеме, которые могут соответственно быть в любом месте исходной картинки.
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
адаптивности при таком раскладе не возможно добиться

Сделайте 2, 3 варианта картинок под разные разрешения. В JSON-e сообщите серверу, какой вариант тестили.
p.s.: я думал сделать сеткой, т.е. типа как пазл картинка состоящая из одинаковых квадратиков (тогда это будет проще)

Будет ниже энтропия, потенциальному роботу будет проще комбинировать варианты, чтобы выбрать случайно правильный.
Еще, вы не сможете сделать так, чтобы квадраты точно устанавливались на свои места, будет неточность 1...10px.
Можете взять формулу Пифагора и смягчить живому пользователю невозможность установить квадраты точно - у всех квадратов нестыковка по радиусу должна быть не больше определенного порога R0. Критерий проверки будет корень(dx^2 + dy^2) < R0. Где, dx - разность по X координат ориг. и установ. квадрата, dy - тоже разность по Y.
R0 в пределах точности сенсора, скорее всего будет в 5...10px. Меньше поставите значение - пользователям будет сложнее проходить тест, больше поставите - уменьшите энтропию для роботов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы