Javascript:将变量设置为1或-1

时间:2018-02-01 23:51:00

标签: javascript

当我点击它时,我试图获得一个向不同方向移动的对象,每次点击它都会更快。我有它几乎运作,但我不能让程序排除0或只做-1或1;我只能在-1和1之间做一个随机数。这意味着如果它达到零,它就无法进展。

(以下代码是使用名为&#34的Javascript引擎构建的; Crafty"。我尽可能地评论非JavaScript部分。)

    Crafty.init(400,320, document.getElementById('game')); // Creates canvas

    // Create variables
    var speed = 10;
    var min = -1;
    var max = 1;

    // Create a 32px by 32px red box
    var square = Crafty.e('2D, Canvas, Color, Mouse, Motion') 
        .attr({x: 50, y: 50, w: 32, h: 32}) 
        .color('red') 
    // When the red box is clicked, move it in a random direction. Make it go faster each time.
        .bind('Click', function(MouseEvent){
            speed *= 2;
            var vel = square.velocity();
            var direction = ((Math.random() * (max - min)) + min);
            vel.x;
            vel.y;
            vel.x = (speed *= direction);
            vel.y = (speed *= direction);
        });

2 个答案:

答案 0 :(得分:0)

这真的归结为这一行:

var direction = ((Math.random() * (max - min)) + min);

如果将可接受的值(-11)存储在数组中,则可以根据数组的长度随机选择其中一个值。通过将值存储在数组中,您不仅可以使过程更简单,而且可以扩展,因为如果需要,您可以随后添加新值。



function getRandom(){
    var acceptable = [-1, 1];
    
    // Get a random number from 0 to 1 (the length of the array, 2, will never be reached)
    var direction = Math.floor(Math.random() * acceptable.length);
    console.log(acceptable[direction]); // Choose either array element 0 or element 1
}
  
  
// Run this code snippet a few times and you'll see that you only get -1 and 1
getRandom();
getRandom();
getRandom();
getRandom();




您还可以删除声明maxmin变量的两行,因为它们不再需要。

答案 1 :(得分:0)

更改为此行

var direction = (Math.random()) > .5 ? 1 : -1;