我正在制作一个蛇游戏,就像你从看到我之前的问题时所知道的那样。我正在跟进这样的数组:
var snakeX = new Array();
var snakeY = new Array();
然后在for循环中:
for (var i = 0;i<=num;i++) {
snakeX[0] = xCoord;
snakeY[0] = yCoord;
context.fillRect(snakeX[0], snakeY[0], sH, sW);
xCoord = xCoord + 11;
console.log('xCoord = ' + xCoord + ', yCoord = ' + yCoord);
}
并且xCoord
和yCoord
vars都设置为0
。
我的问题是为什么这不起作用?
setInterval(function() {
num++;
}, 1000);
以下是我所拥有的一切:
function snake() {
//Let's make the snake start at 4 squares wide, and 1 square tall
function createSnake() {
var xCoord = 0;
var yCoord = 0;
var snakeX = new Array();
var snakeY = new Array();
var num = 3;
setInterval(function() {
num = num + 1;
}, 1000);
for (var i = 0;i<=num;i++) {
snakeX[0] = xCoord;
snakeY[0] = yCoord;
context.fillRect(snakeX[0], snakeY[0], sH, sW);
xCoord = xCoord + 11;
console.log('xCoord = ' + xCoord + ', yCoord = ' + yCoord);
}
}
createSnake();
}
snake();
答案 0 :(得分:0)
您似乎永远不会修改xCoord
和yCoord
。同样,你的“间隔”只是增加一个数字,它实际上并没有做任何其他事情。你需要有一些“重绘”功能来移动蛇。此外,您创建snakeX
和snakeY
作为数组,但只使用snakeX[0]
和snakeY[i]
- 事实上,您甚至没有使用i
迭代器。
总的来说,看起来您的代码有点像火车残骸。也许你的项目对你目前的技能水平有点雄心勃勃,你应该在尝试之前先研究一些基础知识。我不是想通过这样说来劝阻你,我只是想提供一些建议。
答案 1 :(得分:0)
如果你希望for循环每秒变长,你可以创建一个每秒增加一个全局变量的区间,然后在你的for循环中引用该全局变量,如下所示:
var num = 0;
var interval = setInterval(function () {
num++;
}
function spin () {
for(var i = 0; i < num; i++) {
console.log(num);
}
}
问题是,对于上面的代码真正做任何事情,你需要继续调用spin()
,并且为了花费更长的时间你需要知道间隔已经过去,所以你可以做到以下几点:
var num = 0;
var interval = setInterval(function () {
num++;
for(var i = 0; i < num; i++) {
console.log(num);
}
}
让循环在增加全局变量的区间内执行以增加循环次数,我只是不明白你为什么要这样做。