当我点击它时,我试图获得一个向不同方向移动的对象,每次点击它都会更快。我有它几乎运作,但我不能让程序排除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);
});
答案 0 :(得分:0)
这真的归结为这一行:
var direction = ((Math.random() * (max - min)) + min);
如果将可接受的值(-1
和1
)存储在数组中,则可以根据数组的长度随机选择其中一个值。通过将值存储在数组中,您不仅可以使过程更简单,而且可以扩展,因为如果需要,您可以随后添加新值。
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();

您还可以删除声明max
和min
变量的两行,因为它们不再需要。
答案 1 :(得分:0)
更改为此行
var direction = (Math.random()) > .5 ? 1 : -1;