Can';不要在Javascript中正确结束游戏
我是使用JavaScript进行游戏编程的初学者。这是我尝试做的第一场比赛。比赛结束后,我无法显示时间 游戏详情:Can';不要在Javascript中正确结束游戏,javascript,html5-canvas,Javascript,Html5 Canvas,我是使用JavaScript进行游戏编程的初学者。这是我尝试做的第一场比赛。比赛结束后,我无法显示时间 游戏详情: 鼠标用于移动与球碰撞并改变方向的块 当球经过画布左端时,游戏结束,画布上的显示停止 当上述事件发生且显示时间的代码随后出现时,变量game将变为true。(但它不起作用) var画布; var canvascontext; var ballX=50; var-ballY=50; var ballXspeed=15; var-ballYspeed=15; var-Battery=2
var画布;
var canvascontext;
var ballX=50;
var-ballY=50;
var ballXspeed=15;
var-ballYspeed=15;
var-Battery=225;
var deltaY;
var gameover=false;
函数calculateMousePos(evt){
var rect=canvas.getBoundingClientRect();
var root=document.documentElement;
var mouseX=evt.clientX-rect.left-root.scrollLeft;
var mouseY=evt.clientY-rect.top-root.scrollTop;
返回{
x:鼠标,
y:老鼠
};
}
window.onload=函数(){
canvas=document.getElementById('gameCanvas');
canvasContext=canvas.getContext('2d');
var fps=30;
设置间隔(两次调用,1000/30);
canvas.addEventListener('mousemove',函数(evt){
var mousePos=calculateMousePos(evt);
白板=鼠标点。y-50;
})
var date1=新日期();
}
函数calleath(){
如果(gameover==true){
回来
}否则{
移动一切();
抽屉物品();
}
}
函数moveEverything(){
ballX=ballX+ballX速度;
巴利=巴利+巴利速度;
如果(球>画布宽度){
ballXspeed=-ballXspeed;
}
if(ballY>canvas.height | | ballY<0){
ballYspeed=-ballYspeed;
}
if(ballX<0){
如果(球>桨和球<(桨+150)){
ballXspeed=-(ballXspeed+ballXspeed*0.1);
德尔泰=巴利-(75+桨);
ballYspeed=deltaY*0.35;
}否则{
gameover=true;
var date2=新日期();
var diff=date2-date1;
document.getElementById(“time”).innerHTML=diff;
}
}
}
函数drawerything(){
canvasContext.fillStyle='black';
canvasContext.fillRect(0,0,canvas.width,canvas.height);
canvasContext.fillStyle='white';
canvasContext.fillRect(0,百利,10150)
canvasContext.fillStyle='red';
canvasContext.beginPath();
canvasContext.arc(ballX,ballY,15,0,Math.PI*2);
canvasContext.fill();
}
函数重置(){
gameover=false;
ballX=画布宽度;
ballY=画布高度/2;
ballYspeed=15;
球速=15;
date1=新日期();
}
重置您在window.onload中本地声明了date1
,这就是为什么它在其他函数中不可访问的原因。从那里删除var
,并将var date1
添加到顶部,使其成为全局的。一些事情
启动date1 onload-它必须在全局范围内
正确更新日期1(键入新日期())
重置日期和文本
var画布;
var canvascontext;
var ballX=50;
var-ballY=50;
var ballXspeed=15;
var-ballYspeed=15;
var-Battery=225;
var deltaY;
var gameover=false;
var date1=0;//全局变量
函数calculateMousePos(evt){
var rect=canvas.getBoundingClientRect();
var root=document.documentElement;
var mouseX=evt.clientX-rect.left-root.scrollLeft;
var mouseY=evt.clientY-rect.top-root.scrollTop;
返回{
x:鼠标,
y:老鼠
};
}
window.onload=函数(){
canvas=document.getElementById('gameCanvas');
canvasContext=canvas.getContext('2d');
var fps=30;
设置间隔(两次调用,1000/30);
canvas.addEventListener('mousemove',函数(evt){
var mousePos=calculateMousePos(evt);
白板=鼠标点。y-50;
})
date1=new Date();//更新全局变量
}
函数calleath(){
如果(gameover==true){
回来
}否则{
移动一切();
抽屉物品();
}
}
函数moveEverything(){
ballX=ballX+ballX速度;
巴利=巴利+巴利速度;
如果(球>画布宽度){
ballXspeed=-ballXspeed;
}
if(ballY>canvas.height | | ballY<0){
ballYspeed=-ballYspeed;
}
if(ballX<0){
如果(球>桨和球<(桨+150)){
ballXspeed=-(ballXspeed+ballXspeed*0.1);
德尔泰=巴利-(75+桨);
ballYspeed=deltaY*0.35;
}否则{
gameover=true;
var date2=新日期();
var diff=date2-date1;
document.getElementById(“time”).innerHTML=parseInt(diff/1000)+“秒”;//显示秒数
}
}
}
函数drawerything(){
canvasContext.fillStyle='black';
canvasContext.fillRect(0,0,canvas.width,canvas.height);
canvasContext.fillStyle='white';
canvasContext.fillRect(0,百利,10150)
canvasContext.fillStyle='red';
canvasContext.beginPath();
canvasContext.arc(ballX,ballY,15,0,Math.PI*2);
canvasContext.fill();
}
函数重置(){
gameover=false;
ballX=画布宽度;
ballY=画布高度/2;
ballYspeed=15;
球速=15;
date1=新日期();//重置日期
document.getElementById(“time”).innerHTML=“”;//重置字段
}
重置
因此我为您制作了一个代码段,当我单击重置时控制台会给出一个错误。-您需要'date1=新日期()`还有更多的问题。但是,拼写错误不会导致给定的问题。(当该命令执行时会变得很明显。)