Моя программа похожа на реакционную игру. При нажатии «стрелка вверх» фон меняет цвет на красный. И вам нужно нажать кнопку в течение 2 секунд. И если вы не нажмете, вы проиграете еще и игра начнется. Но в первые 2 секунды вы все равно проигрываете, но игра идет хорошо. Так в чем проблема с кодом в первые 2 секунды?keylistener не работает на первом
Мой код:
var ido = 2000;
var nyomott = 0;
var nemelso = 0;
// >> main()
function main() {
nyomott = 0;
var r = Math.floor(Math.random() * 4);
var szin;
switch (r) {
case 0:
szin = "red";
break;
case 1:
szin = "green";
break;
case 2:
szin = "yellow";
break;
case 3:
szin = "blue";
break;
}
var print = "<h1>" + "Pess the key: " + "</br>" + szin + "</h1>" + "</br>";
document.getElementById("results").innerHTML = print;
startTimer();
}
var ciklus = setInterval(startTimer, ido);
// >> startTimer() : This function starts the timer
function startTimer() {
timerId = setTimeout(function() {
if (nyomott == 0) {
document.getElementById("results").innerHTML = "<h1>Lose</h1>";
clearInterval(ciklus);
} else {
main();
}
}, ido);
}
document.addEventListener("keydown", function(inEvent) {
if (inEvent.keyCode == 38) {
document.body.style.backgroundColor = "red";
nyomott = 1;
console.log(nyomott);
} else if (inEvent.keyCode == 404) document.body.style.backgroundColor = "green";
else if (inEvent.keyCode == 405) document.body.style.backgroundColor = "yellow";
else if (inEvent.keyCode == 406) document.body.style.backgroundColor = "blue";
});
body {
width: 100%;
height: 100%;
background-color: #202020;
}
div {
position: absolute;
height: 100%;
width: 100%;
display: table;
font-size: 60px;
color: #ffffff;
}
h1 {
display: table-cell;
vertical-align: middle;
text-align: center;
color: #FFFFFF;
}
<div onload="main()" id="results">
<h1></h1>
</div>
Да, но с этой модификацией, если вы один раз нажать на кнопку игра никогда не остановится. Но если я напишу «nyomott = 0», он будет прослушивать. Как я могу решить эту проблему, чтобы остановить игру, если кнопка не нажата? –
Дайте мне минуту .. –
Вам нужно будет изменить 'nyomott = 0;' после 2000ms после того, как оно было установлено на 1 –