为我的游戏设置计时器
Setting a timer for my game
我目前一直在为我的迷宫游戏设置计时器。我基本上希望计时器立即启动,一旦到达终点,计时器就会停止。
这是我目前的代码,我还没有包含任何与时间有关的代码,因为我一直在为此而苦恼。任何帮助都会非常有用!
var canvas;
var ctx;
var mazeWidth = 510;
var mazeHeight = 510;
var y = 300;
var x = 120;
var maze = new Image();
var collision = 0;
var time = 0
function init()
{
canvas = document.getElementById('canvasMaze');
ctx = canvas.getContext("2d");
maze.src = "maze.png";
return setInterval(draw, 10);
}
function draw()
{
clear();
ctx.fillStyle = "Red";
rect(x, y, 15,15);
ctx.fillText(time + " seconds",10,50);
if (x <= 15)
{
var restart = confirm("It took you " + time + " seconds to complete the maze!");
if (restart == true)
{
x = 250;
y = 250;
time = 0;
}
}
}
function clear()
{
ctx.clearRect(0, 0, mazeWidth, mazeHeight);
ctx.drawImage(maze, 1, 1);
}
function rect(x,y,w,h)
{
ctx.beginPath();
ctx.rect(x,y,w,h);
ctx.closePath();
ctx.fill();
}
function doKeyDown(e)
{
switch (e.keyCode)
{
case 38:
case 87:
if (y - 6 > 10)
{
y -= 6;
clear();
collisionCheck();
if (collision == 1)
{
y += 6;
collision = 0;
}
}
break;
case 40:
case 83:
if (y + 6 < 466 )
{
y += 6;
clear();
collisionCheck();
if (collision == 1)
{
y -= 6;
collision = 0;
}
}
break;
case 37:
case 65:
if (x - 6 > 0)
{
x -= 6;
clear();
collisionCheck();
if (collision == 1)
{
x += 6;
collision = 0;
}
}
break;
case 39:
case 68:
if (x + 6 < 468)
{
x += 6;
clear();
collisionCheck();
if (collision == 1)
{
x -= 6;
collision = 0;
}
}
break;
}
}
function collisionCheck()
{
var imageData = ctx.getImageData(x, y, 18, 18);
var pix = imageData.data;
for (var i = 0; n = pix.length, i < n; i += 4)
{
if (pix[i] == 0)
{
collision = 1;
}
}
}
init();
window.addEventListener('keydown',doKeyDown,true);
您可能希望在页面加载或初始化时获得当前时间,并可能将其存储在全局变量中。然后,每次调用draw函数时,都可以确定从初始时间减去当前时间所经过的时间。
var initialTime = new Date();
var lastUpdate = new Date();
var minTime = 100;
function draw()
{
...
var currentTime = new Date();
//Don't update if enough time has not passed
if(currentTime - lastUpdate < minTime)
{
//Don't update the timer
}
else
{
//Update the timer
}
var timeTaken = currentTime - initialTime;
if(x <= 15)
{
var restart = confirm("It took you " + timeTaken + " seconds to complete the maze!");
}
...
lastUpdate = Date.Now();
}
}
相关文章:
- 设置倒计时计时器,IE出现问题
- 在Jquery倒计时计时器上设置每个数字的动画
- 我如何才能确保计时器设置为每天4点半,所以我不会;不用在Javascript中提及某个日期
- 在JS中设置计时器1秒
- 设置Javascript倒计时计时器的初始值
- 如何设置此javascript倒计时计时器的样式
- 如何使用momentjs将澳大利亚/墨尔本时区设置为倒计时计时器
- 设置计时器并使用javascript/PHP进行检查
- 设置计时器以等待为flash回退视频播放器加载swfobject脚本
- 如何设置计时器以显示警报消息并将该警报消息与另一条警报消息重叠
- 在JavaScript中设置倒计时计时器
- 如何使用javascript设置计时器
- 如何在控制器中设置计时器
- 设置用户交互计时器
- 如何使用计时器在图像之间切换?(设置间隔)
- JQuery 设置事件触发的计时器
- 如何在 JavaScript 中设置计时器持续时间
- 如何使用计时器设置循环,该计时器发出 ajax 请求,直到达到响应
- php/js-当我的计时器设置为00:00时触发一个按钮
- 使用JS中的计时器设置变量