Koodin teossa auttoi ChatGPT.
Peli ei tarvinne manuaalia: https://www.petke.info/putka.html
Vähän samanlainen peli oli aiemmin, mutta nyt PUTKAt liikkuvat.
<!DOCTYPE html>
<html>
<head>
<title>Löydä PUTKA ajoissa</title>
<style>
.permutation {
position: absolute;
display: inline-block;
cursor: pointer;
}
</style>
</head>
<body>
<h2>Löydä putka</h2>
<div id="game-container" style="position: relative; width: 100%; height: 100vh;"></div>
<div id="timer" style="position: absolute; top: 10px; right: 10px; font-size: 24px;"></div>
<script>
// Lista "RUNO" sanan permutaatioista
const permutations = [
"APKUT","UPTAK","PATUK","PKATU","APTUK","UATPK","TKUAP","AUKPT","KUTAP","KUPAT","KTPAU","PKUTA","ATKPU","KUPTA",
"KTUAP","TPKAU","AKUTP","TAKPU","UTPKA","UTKPA","UTAKP","AKTPU","UPATK","UKAPT","KUAPT","AKPTU","ATPUK","APUTK",
"PTUKA","KTAUP","TAUPK","PKTUA","KPTAU","TAPUK","PUTKA","KTUPA","KPTUA","TPUAK","AUKTP","KATPU","PTAUK","PAKUT",
"KATUP","UKATP","TKUPA","UKTAP","TAKUP","PKAUT","PUTAK","UPAKT","TUKPA","UAPTK","TPAKU","KTPUA","TPUKA","PUKTA",
"KUATP","KAPTU","TKAUP","PUKAT","PTUAK","TUPKA","ATPKU","PTKAU","AUPTK","PUATK","ATUKP","AUPKT","PKTAU","TAPKU",
"TUAKP","TPKUA","AKUPT","KPUTA","KAPUT","AKTUP","TPAUK","KPUAT","KPATU","UPKTA","UPKAT","APKTU","UTKAP","PAUTK",
"TAUKP","UPTKA","TUPAK","UAKPT","UATKP","AUTPK","APUKT","UKTPA","PTAKU","APTKU","UAKTP","KAUPT","AKPUT","UKPTA",
"PKUAT","PTKUA","UKPAT","TKPAU","TUAPK","UTPAK","ATUPK","AUTKP","PAUKT","KTAPU","KPAUT","PAKTU","UTAPK","TKPUA",
"KAUTP","TKAPU","UAPKT","PATKU","KUTPA","TUKAP","PUAKT","ATKUP"
];
const gameContainer = document.getElementById('game-container');
const timerElement = document.getElementById('timer');
let timeLeft = 120;
let timerInterval;
// Luodaan jokaiselle permutaatiolle div-elementti
const divs = [];
for (let i = 0; i < permutations.length; i++) {
const permutation = permutations[i];
const div = document.createElement('div');
div.innerText = permutation;
div.className = 'permutation';
div.style.top = `${Math.random() * (window.innerHeight - 150)}px`; // Sijoitellaan satunnaisesti ikkunan sisällä
div.style.left = `${Math.random() * (window.innerWidth - 150)}px`;
gameContainer.appendChild(div);
divs.push(div);
}
// Käynnistetään animaatio
animateDivs();
startTimer();
// Käynnistää sanojen animaation
function animateDivs() {
divs.forEach((div) => {
moveDiv(div);
});
}
// Liikuttaa div-elementtiä sattumanvaraisesti
function moveDiv(div) {
const containerWidth = window.innerWidth;
const containerHeight = window.innerHeight;
const speed = 1 + Math.random() * 2; // Sattumanvarainen nopeus
const xDirection = Math.random() < 0.5 ? 1 : -1;
const yDirection = Math.random() < 0.5 ? 1 : -1;
const x = parseFloat(div.style.left);
const y = parseFloat(div.style.top);
const newX = x + speed * xDirection;
const newY = y + speed * yDirection;
// Tarkistetaan, ettei div mene ikkunan ulkopuolelle
if (newX >= 0 && newX <= containerWidth - div.clientWidth) {
div.style.left = newX + 'px';
}
if (newY >= 0 && newY <= containerHeight - div.clientHeight) {
div.style.top = newY + 'px';
}
// Asetetaan seuraava animaatiokeikka
requestAnimationFrame(() => moveDiv(div));
}
// Käynnistää peliajan laskennan
function startTimer() {
timerInterval = setInterval(function() {
timeLeft--;
timerElement.textContent = 'Aika: ' + timeLeft + ' s';
if (timeLeft <= 0) {
clearInterval(timerInterval);
alert('Aika loppui, hävisit!');
location.reload(); // Lataa sivu uudelleen
}
}, 1000);
}
// Lisätään klikkaustapahtumankäsittelijä
divs.forEach((div) => {
div.addEventListener('click', () => {
if (div.innerText === 'PUTKA') {
clearInterval(timerInterval);
alert('Voitit!');
location.reload(); // Lataa sivu uudelleen
}
});
});
</script>
</body>
</html>Tämä toimii hienosti! :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.