From 2469d601f263171c9ff5d986f8719740908be7e7 Mon Sep 17 00:00:00 2001 From: TuturP33 <128254439+Tutur33@users.noreply.github.com> Date: Thu, 7 Dec 2023 18:56:57 +0100 Subject: [PATCH] Add files via upload --- favicon.ico | Bin 0 -> 5804 bytes index.html | 34 ++++++++++++++++++++ script.js | 53 ++++++++++++++++++++++++++++++++ style.css | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 174 insertions(+) create mode 100644 favicon.ico create mode 100644 index.html create mode 100644 script.js create mode 100644 style.css diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9757db6f71e77e7f498eafb3d6629f6b6f6cd021 GIT binary patch literal 5804 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..012c52b --- /dev/null +++ b/index.html @@ -0,0 +1,34 @@ + + + + + Tour de Hanoï + + + + +
+

Tour de Hanoï

+
+
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
+
+
+ +
+ +
+ + + + diff --git a/script.js b/script.js new file mode 100644 index 0000000..ba90ad2 --- /dev/null +++ b/script.js @@ -0,0 +1,53 @@ +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'; + }); +} \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..53509d1 --- /dev/null +++ b/style.css @@ -0,0 +1,87 @@ +.container { + text-align: center; + margin-top: 50px; + display: flex; + flex-direction: column; + align-items: center; +} + +.game { + margin-top: 20px; + display: flex; + justify-content: space-around; + height: 540px; +} + +.towers { + display: flex; + flex-direction: column; + background-color: #3498db56; + border-radius: 30px 30px 5px 5px; + width: 200px; + margin: 10px; + padding: 10px; + align-items: center; + cursor: pointer; +} + +.disks { + vertical-align:baseline; + font-size: 30px; + display: flex; + justify-content: center; + align-items: center; + height: 50px; + background-color: #3498db; + border-radius: 5px; +} + +#disk1 { + background-color: #FF6B6B; + width: 20px; +} + +#disk2 { + background-color: #6BFF6B; + width: 40px; +} + +#disk3 { + background-color: #6B6BFF; + width: 60px; +} + +#disk4 { + background-color: #FF6BFF; + width: 80px; +} + +#disk5 { + background-color: #FFFF6B; + width: 100px; +} + +#disk6 { + background-color: #6BFFFF; + width: 120px; +} + +#disk7 { + background-color: #FFA500; + width: 140px; +} + +#disk8 { + background-color: #9400D3; + width: 160px; +} + +#disk9 { + background-color: #32CD32; + width: 180px; +} + +#disk10 { + background-color: #663399; + width: 200px; +}