HTML5 / Javascript:从Value中减去

时间:2013-05-26 19:38:03

标签: javascript html5

我希望我写的是除了如何减去某个值之外的其他内容,但我不是。我有一个游戏设置,小行星来到玩家,你可以四处走动。如果小行星撞击玩家,则应该从分数中减去随机数量(在范围内)。实际上,它以某种方式增加了分数。以下是我的代码:

for(var i=0; i<asteroids.length; i++){
    if(player.x<asteroids[i].x+asteroids[i].radius){
        if(player.x>asteroids[i].x-asteroids[i].radius){
            if(player.y<asteroids[i].y+asteroids[i].radius){
                if(player.y>asteroids[i].y-asteroids[i].radius){
                    player.lives-=Math.floor(Math.random()*(900000-600000)-600000);
                }
            }
        }
    }
}

if语句检查玩家是否与小行星重叠。我尝试编写'player.lives - = whatever'和'player.lives = player.lives - what',这两种方法都不起作用,它只是添加到了乐谱中。

有谁知道造成这种情况的原因是什么?感谢。

2 个答案:

答案 0 :(得分:0)

如评论中所述,Math.random()*(900000-600000)-600000将等于负数。原因如下:

Math.random() >>> a random value between 0 and 1

900000-600000 >>> a constant = 300000

Math.random() * 300000 >>> a random value between 0 and 300000

Math.random() * 300000 - 600000 >>> a random value between -600000 and -300000

解决方案是改变

player.lives-=Math.floor(Math.random()*(900000-600000)-600000);

player.lives+=Math.floor(Math.random()*(900000-600000)-600000);

或只是

player.lives-=Math.floor(Math.random()*300000+300000);

答案 1 :(得分:-1)

正如评论所说:

  • 如果使用碰撞系统而不是4个怪物条件
  • ,那你最好做
  • Math.random()*(900000-600000)-600000是一个负数。