mirror of
https://github.com/arthur-pbty/tour_de_hanoi.git
synced 2026-06-03 15:07:41 +02:00
53 lines
1.8 KiB
JavaScript
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';
|
|
});
|
|
} |