苹果不会随意掉落

时间:2014-11-01 04:37:15

标签: javascript arrays

这是我的第一个问题,如果你在这里指出任何错误,那就太好了,谢谢。

我正在尝试使用jQuery制作游戏。这个想法很简单,在屏幕上你可以看到5个苹果随机生成,一个接一个地开始摔倒,所以玩家必须抓住它们。

即使我使用随机选择而setInterval()尝试让苹果一次掉落,但所有的苹果都会立即掉落。

显然有些不对劲。我该如何解决?

这里有关于苹果的代码的一些部分。

//apples 
game.apples = [];
game.greenApple = true;
game.appleSpeed = 1;
game.count = 2;
game.timeDrop = 1000;

function init() {
  for (i = 0; i < 5; i++) {
    game.apples.push({
      x: Math.floor((Math.random() * game.width / 2) + 150),
      y: Math.floor((Math.random() * game.height / 3)),
      size: 30,
      image: 1,
      green: true
    });
  }
  loop();
}

function update() {
  var intervalVar = setInterval(function () {
    getRandApple()
  }, 1000);

  function getRandApple() {
    var randApple = game.apples[Math.floor(Math.random() * game.apples.length)];
    randApple.green = false;    
    return randApple;
  }

  for (i in game.apples[i]) {
    if (!randApple.green) {
      randApple.y += game.appleSpeed;
    }
  }
});

可在此处找到整个JavaScript文件 - &gt;&gt; fiddle&lt;&lt;

1 个答案:

答案 0 :(得分:0)

这是让5个苹果以一定的间隔逐个落下的小提琴,

http://jsfiddle.net/h3m5hqzd/6/

您可以将您的逻辑放入小提琴中的hook()函数中。这就是我所做的,

var appleArray = ['apple1', 'apple2', 'apple3', 'apple4', 'apple5'];
var appleExistArray = [true, true, true, true, true];
var fallenAppleCount = 0;

var refreshIntervalId = setInterval(function () {
    while (true) {
        // randomIndex will be within 0 to 4
        var randomIndex = Math.floor((Math.random() * 5));
        if (appleExistArray[randomIndex] === true) {
            hook(randomIndex);
            appleExistArray[randomIndex] = false;
            if (fallenAppleCount++ === 4) {
                clearInterval(refreshIntervalId);
            }
            break;
        }
    }
}, 1000);

function hook(randomIndex) {
    var para = document.createElement("p");
    var node = document.createTextNode(appleArray[randomIndex] + ' is falling');
    para.appendChild(node);
    document.getElementById('msgHolder').appendChild(para);
}