Files
2023-12-07 18:56:57 +01:00

53 lines
1.8 KiB
JavaScript

const towers = document.getElementsByClassName('towers');
const body = document.querySelector('body');
let selectedDisk = null;
for (let i = 0; i < towers.length; i++) {
towers[i].addEventListener('click', function() {
if (selectedDisk === null && towers[i].firstElementChild !== null) {
selectedDisk = towers[i].firstElementChild;
moveElementWithMouse();
selectedDisk.remove();
body.prepend(selectedDisk);
selectedDisk.style.display = 'none';
for (let j = 0; j < towers.length; j++) {
if (towers[j].childElementCount > 0) {
towers[j].style.paddingTop = 510 - (towers[j].childElementCount * 50) + 'px';
}
}
} else if (selectedDisk !== null && canPlaceDisk(i)) {
towers[i].prepend(selectedDisk);
selectedDisk.style.position = '';
selectedDisk = null;
for (let j = 0; j < towers.length; j++) {
if (towers[j].childElementCount > 0) {
towers[j].style.paddingTop = 510 - (towers[j].childElementCount * 50) + 'px';
}
}
// verifier si on a gagné
if (towers[2].childElementCount === 10) {
alert('You win!');
}
}
});
}
function canPlaceDisk(towersIndex) {
if (towers[towersIndex].firstElementChild === null || towers[towersIndex].firstElementChild.clientWidth > selectedDisk.clientWidth) {
return true;
} else {
return false;
}
}
function moveElementWithMouse() {
document.addEventListener('mousemove', function(event) {
if (!selectedDisk) {
return;
}
selectedDisk.style.position = 'absolute';
selectedDisk.style.display = 'flex';
selectedDisk.style.left = event.clientX - (0.5 * selectedDisk.clientWidth) + 'px';
selectedDisk.style.top = event.clientY - (1.2 * selectedDisk.clientHeight) + 'px';
});
}