Javascript 分数不递增

Javascript 分数不递增,javascript,Javascript,我正在用javascript编写一个简单的游戏,当用户悬停在给定的坐标上时,它的分数会增加。我的问题是分数在1之后不会增加 var x=Math.floor(Math.random()*500)+150; 变量y=数学地板(数学随机()*500)+150; document.getElementById(“demo2”).innerHTML=y; document.getElementById(“demo1”).innerHTML=x; //坐标实时跟踪 $(“div.frame”).mouse

我正在用javascript编写一个简单的游戏,当用户悬停在给定的坐标上时,它的分数会增加。我的问题是分数在1之后不会增加

var x=Math.floor(Math.random()*500)+150;
变量y=数学地板(数学随机()*500)+150;
document.getElementById(“demo2”).innerHTML=y;
document.getElementById(“demo1”).innerHTML=x;
//坐标实时跟踪
$(“div.frame”).mousemove(函数(事件){
var xco=event.clientX;
var yco=event.clientY;
var xcoor=“X公司名称:”+xco;
var ycoor=“Y公司名称:”+yco;
document.getElementById(“display1”).innerHTML=xcoor;
document.getElementById(“display2”).innerHTML=ycoor;
//记分
如果(xco==x&&yco==y){
计数++;
控制台日志(计数);
document.getElementById(“score”).innerHTML=count;
生成();
}
//生成坐标
函数生成(){
var x=数学地板(数学随机()*500)+150;
变量y=数学地板(数学随机()*500)+150;
document.getElementById(“demo2”).innerHTML=y;
document.getElementById(“demo1”).innerHTML=x;
功能点(x,y){
如果(xco==x&&yco==y){
计数++;
控制台日志(计数);
document.getElementById(“score”).innerHTML=count;
生成();
}
}
点(x,y);
}
})

我认为这是因为您的
count
变量是局部变量,并且仅存在于if块中。如果您想在其他位置使用count,请将其声明为全局变量

var x = Math.floor(Math.random() * 500) + 150;
var y = Math.floor(Math.random() * 500) + 150;
document.getElementById("demo2").innerHTML = y;
document.getElementById("demo1").innerHTML = x;

var count = 0;

 //live tracking of coordinates
$("div.frame").mousemove(function (event) {
    ...
})

即使在添加了一个全局
count
变量之后,由于
if(xco==x&&yco==y)
条件在第一次运行后失败,代码也不能正常工作。在这里,您将随机生成的
x
y
xco
yco
进行比较,并更新分数并再次调用generate

generate
函数中,您正在创建新的局部变量
x
y
,而不是更新全局
x
y
。随后的比较
(xco==x&&yco==y)
将失败,因为它仍然使用旧的
x
y

在生成函数中,更新全局x和y应该可以解决此问题

x = Math.floor(Math.random() * 500) + 150;
y = Math.floor(Math.random() * 500) + 150;
这是完整的代码,我也做了一些小改动,删除了一些冗余和重复的代码

//代码在这里
$(文档).ready(函数(){
//点击播放
var t=120;
var计数=0;
$(“button.play”)。单击(函数(事件){
event.preventDefault();
$(“.fadeout”).fadeout(2000年,函数(){
$(“.heading”).text(“准备好后单击开始按钮”);
});
$(.hidden”).attr(“hidden”,false);
});
函数start(){
//初始化游戏计时器
var Timer=setInterval(函数(){
document.getElementById(“time1”).innerHTML=t;
--t;
if(t<0){
清除间隔(计时器);
document.getElementById(“超时”).innerHTML=“时间到了”;
$(“div.frame”).attr(“隐藏”,真);
}
},1000);
var x=数学地板(数学随机()*500)+150;
变量y=数学地板(数学随机()*500)+150;
document.getElementById(“demo2”).innerHTML=y;
document.getElementById(“demo1”).innerHTML=x;
//坐标实时跟踪
$(“div.frame”).mousemove(函数(事件){
var xco=event.clientX;
var yco=event.clientY;
var xcoor=“X公司名称:”+xco;
var ycoor=“Y公司名称:”+yco;
document.getElementById(“display1”).innerHTML=xcoor;
document.getElementById(“display2”).innerHTML=ycoor;
//记分
点数(xco、yco);
})
$(“div.frame”).mouseout(函数(事件){
document.getElementById(“display1”).innerHTML=“”;
document.getElementById(“display2”).innerHTML=“”;
})
//生成坐标
函数generate(){
x=数学地板(数学随机()*500)+150;
y=Math.floor(Math.random()*500)+150;
document.getElementById(“demo2”).innerHTML=y;
document.getElementById(“demo1”).innerHTML=x;
}
功能点(xco、yco){
如果(x==xco&&y==yco){
计数++;
控制台日志(计数);
document.getElementById(“score”).innerHTML=count;
生成();
}  
}
}
$(“button.start”)。单击(函数(事件){
event.preventDefault();
start();
美元(本)。淡出(1500);
$(this.attr(“disabled”,true);
美元(“.afterstart”)。淡出(1500);
});
});
/*样式在这里*/
身体{
高度:1200px;
背景尺寸:封面;
}
琼伯伦先生{
边缘顶部:250px;
填充:20px;
高度:350px;
背景尺寸:封面;
背景附件:固定;
}
.标题{
字体大小:30px;
边缘顶部:100px;
}
.框架{
高度:1000px;
宽度:1500px;
边框:10px纯黑;
}
保险商实验室{
背景:40475A;
填充:10px;
宽度:100%;
}
.统计数据{
字体大小:30px;
边缘顶部:80px;
}
.info{
字体大小:30px;
颜色:aliceblue;
}
.bold{
字体大小:25px;
颜色:仿古白色;
}

刺激
手工作业

您只需尝试匹配屏幕上显示的坐标即可

PS:这个游戏将考验你的耐心