您好我正在尝试构建一个简单的网络浏览器游戏,它将为您提供单击键盘键达到限制的速度(例如50,75,100)。我在这里有这个代码:
HTML:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<p id="dt"></p>
<script src="game.js"></script>
</body>
</html>
使用Javascript:
var count = 0;
var IsGameAlive = 1;
window.onload = function() {
myFunction()
}
document.onkeydown = function(e){
if (IsGameAlive==1) {
e = e || window.event;
var key = e.which || e.keyCode;
if(key==32){
add();
}
}
}
function myFunction() {
setInterval (stopwatch,1)
}
function stopwatch() {
document.getElementById('dt').innerHTML = count;
}
function add() {
count = count + 1;
}
if (count==50) {
gamefinished();
}
function gamefinished() {
window.alert("You Won!");
IsGameAlive = 0;
console.log("test");
}
我似乎无法获取if语句来执行将禁用控件并显示警报的函数。任何帮助或建议将不胜感激。
答案 0 :(得分:0)
我认为你想要的是&#39; if&#39;在你的keydown函数中,否则它将在js执行时运行一次。
window.onload = function() {
myFunction()
document.onkeydown = function(e){
if (IsGameAlive==1) {
e = e || window.event;
var key = e.which || e.keyCode;
if(key==32){
add();
}
}
}
}
此外,正如Andy在评论中提到的,您可能希望将计时器更改为1秒而不是1/1000秒
function myFunction() {
setInterval (stopwatch,1000)
}
答案 1 :(得分:0)
你的if语句应该在你的函数中。所以,而不是:
function add() {
count = count + 1;
}
if (count==50) {
gamefinished();
}
应该是:
function add() {
count = count + 1;
if (count==50) {
gamefinished();
}
}
答案 2 :(得分:0)
从您当前的代码判断,似乎有一些简单的一般错误,所以继续清理版本:
var count = 0;
var IsGameAlive = true; //use booleans
var interval; //store interval
window.onload = function() {
myFunction(); //missing semi-colons
if (IsGameAlive) { //if statement should be contained inside window.onload
document.onkeydown = function(e){
if (IsGameAlive){ //prevent detection when game ended
e = e || window.event;
var key = e.which || e.keyCode;
if(key==32){
add();
}
}
}
}
}; //missing semi-colons
function myFunction() {
interval = setInterval(stopwatch,1000); //missing semi-colons, and run every 1000 = 1 second
}
function stopwatch() {
document.getElementById('dt').innerHTML = count;
}
function add() {
count = count + 1;
if (count>=50) {
gamefinished();
}
return;
}
function gamefinished() {
window.alert("You Won!");
IsGameAlive = false;
clearInterval(interval); //remove interval
return;
}
修改强> 为了更好地保持时间,也许可以将计时器设置为每10毫秒运行一次,然后使用下面的函数来获得更准确的时间。 (与使用设置为1毫秒的定时器相比,这也是资源消耗较少,同时保持非常准确)。
var initialTime = Date.now(); //global variable
function getSecondsPassed(){
return Math.floor((Date.now()-initialTime)/1000);
}