Javascript中的随机重复功能

时间:2015-07-16 07:57:41

标签: javascript random coordinates

我想生成一个随机重复的函数Robot.prototype.seDeplacer

此函数随机移动到我的机器人(坐标),但我想创建一个随机移动的随机重复。 怎么可能?

我不想要一个计时器或类似的东西,只需从我的Robot.prototype.seDeplacer函数中重复1,2或3次随机移动。

我希望我足够清楚。

非常感谢

// Objet Robot
function Robot(nick, pv, maxSpeed, position) {
 this.nick = nick;
 this.pv = pv;
 this.maxSpeed = maxSpeed;
 this.position = position;
};

//Méthode présentation des robots
Robot.prototype.sePresenter = function() {
 console.log("Bonjour je m'appelle " + this.nick + ". J'ai " + this.pv + " points de vie." + " Je me déplace à " + this.maxSpeed + " cases par seconde. Je suis à la case de coordonnées " + this.position);
};
Robot.prototype.seDeplacer = function() {
 if (Math.random() > 0.5) {
 // mouvement sur l'axe x
 } else {
 // mouvement sur l'axe y
 }
 var dx = (Math.random() * this.maxSpeed * 2) - this.maxSpeed;
 this.position[0] += dx;

 console.log("J'avancer vers " + this.position)
};

//Variables array
var robots = [
 new Robot('Maurice',95,2,[5,8]),
 new Robot('Lilian',76,3,[12,25]),
 new Robot('Ernest',100,1,[11,14]),
 new Robot('Juliette',87,3,[2,17]),
];

//boucle
 robots.forEach(function(robot) {
 robot.sePresenter();
 robot.seDeplacer();
});

4 个答案:

答案 0 :(得分:1)

如果我理解,你只需要一个随机限制的循环:

var limit = Math.floor(Math.random() * 3) + 1; // 1, 2, or 3
for (var x = 0; x < limit; ++x) {
    // Call your function
}

或减量版本:

for (var x = Math.floor(Math.random() * 3) + 1;; x > 0; --x) {
    // Call your function
}

答案 1 :(得分:0)

首先得到&#39;类型&#39;运动并保存:

var i, l;
for (i = 0, l = Math.round(Math.random() * 3); i < l; i += 1) {
  if (movement < 0.5) {
    // mouvement sur l'axe x
  } else {
    // mouvement sur l'axe y
  }
}

然后将你的&#39; Deplacer&#39; -code包装成循环:

NSUserDefaults

答案 2 :(得分:0)

只是一个简单的循环,你当然可以转移到一个单独的功能,使其更清洁。

// Objet Robot
function Robot(nick, pv, maxSpeed, position) {
  this.nick = nick;
  this.pv = pv;
  this.maxSpeed = maxSpeed;
  this.position = position;
};

function random(max, min) {
  return parseInt((Math.random() * (max - min + 1)), 10) + min;
}

//Méthode présentation des robots
Robot.prototype.sePresenter = function() {
  console.log("Bonjour je m'appelle " + this.nick + ". J'ai " + this.pv + " points de vie." + " Je me déplace à " + this.maxSpeed + " cases par seconde. Je suis à la case de coordonnées " + this.position);
};
Robot.prototype.seDeplacer = function() {
  if (Math.random() > 0.5) {
    // mouvement sur l'axe x
  } else {
    // mouvement sur l'axe y
  }
  var dx = (Math.random() * this.maxSpeed * 2) - this.maxSpeed;
  this.position[0] += dx;

  console.log("J'avancer vers " + this.position)
};

//Variables array
var robots = [
  new Robot('Maurice', 95, 2, [5, 8]),
  new Robot('Lilian', 76, 3, [12, 25]),
  new Robot('Ernest', 100, 1, [11, 14]),
  new Robot('Juliette', 87, 3, [2, 17]),
];

//boucle
robots.forEach(function(robot) {
  robot.sePresenter();
  for (var i = 0; i < random(3, 1); ++i) {
    robot.seDeplacer();
  }
});

答案 3 :(得分:-1)

我认为你仍然需要使用setInterval,但你仍然可以让它随机触发:

setInterval(function () {
    if(Math.floor(Math.random() * 255) + 1 > 127) {
        robots.forEach(function (robot) {
            robot.seDeplacer();
        });
    }
}, 250);

仅当Math.random()函数返回大于127

时才会随机发生