Я работаю над играми-головоломкой для класса, который представляет собой сетку изображений размером 4 × 5, которую вам нужно будет правильно изменить.
Я хочу, чтобы он знал, когда головоломка будет решена, где она будет делать какие-то предупреждения, когда вы выиграете, затем исчезнет или что-то в этом роде.
Я все еще новичок в Javascript и не знаю, с чего начать.
Я уже рассматривал этот вопрос, но не уверен, связано ли это с этим или с чего начать.
Мой HTML:
<div class="packery draggable">
<div class="item w4 h4"><img src="pimg/bits/pf/4.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/8.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/1.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/9.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/3.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/17.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/12.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/16.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/10.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/2.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/14.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/5.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/20.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/7.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/15.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/18.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/13.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/19.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/11.png"></div>
<div class="item w4 h4"><img src="pimg/bits/pf/6.png"></div>
</div>
Мой сценарий:
docReady(function () {
var container = document.querySelector('.packery');
var pckry = new Packery(container, {
columnWidth: 67,
rowHeight: 67,
});
var itemElems = pckry.getItemElements();
// for each item element
for (var i = 0, len = itemElems.length; i < len; i++) {
var elem = itemElems[i];
// make element draggable with Draggabilly
var draggie = new Draggabilly(elem);
// bind Draggabilly events to Packery
pckry.bindDraggabillyEvents(draggie);
}
});
Библиотека, которую вы используете, по-видимому, меняет только left
и top
CSS-свойства перетаскиваемых элементов, поэтому вы должны использовать их для определения чего-либо. Очень простой способ проверить, разрешено ли это, - жестко задавать правильные left
и top
смещения для каждого фрагмента, например, с атрибутами данных:
<div class="item w4 h4" data-left="-20" data-top="0"><img src="pimg/bits/pf/1.png"></div>
(Предположим, что плитки 10x10). Затем перебирайте каждый элемент (как вы делаете, чтобы сделать их перетаскиваемыми) и проверьте, не left
ли в нем номер свойства CSS (доступный с .style.left
) таким же, как в нем атрибут data-left
( доступный с .dataset.left
) и аналогично top
. Привязка перетаскивания к сетке поможет вам в значительной степени, ваша библиотека позволяет: new Draggabilly(elem, {grid: [10, 10]});
1.png
должен быть первым элементом, но он третий в вашем коде, поэтому правильная позиция должна быть 20 слева и не двигаться по вертикали.