Javascript 中的随机重复功能
Random repetition function in Javascript
我想生成一个随机重复的函数 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();
});
如果我理解,你只需要一个随机限制的循环:
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
}
我认为您仍然需要使用 setInterval,但您仍然可以让它随机触发:
setInterval(function () {
if(Math.floor(Math.random() * 255) + 1 > 127) {
robots.forEach(function (robot) {
robot.seDeplacer();
});
}
}, 250);
这会随机发生,只有当 Math.random() 函数 returns 大于 127
先获取运动的'type'并保存:
var movement = Math.random();
然后将您的 'Deplacer' 代码包装在一个循环中:
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
}
}
只是一个简单的循环,您当然可以将其移至单独的函数以使其更清晰。
// 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();
}
});
我想生成一个随机重复的函数 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();
});
如果我理解,你只需要一个随机限制的循环:
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
}
我认为您仍然需要使用 setInterval,但您仍然可以让它随机触发:
setInterval(function () {
if(Math.floor(Math.random() * 255) + 1 > 127) {
robots.forEach(function (robot) {
robot.seDeplacer();
});
}
}, 250);
这会随机发生,只有当 Math.random() 函数 returns 大于 127
先获取运动的'type'并保存:
var movement = Math.random();
然后将您的 'Deplacer' 代码包装在一个循环中:
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
}
}
只是一个简单的循环,您当然可以将其移至单独的函数以使其更清晰。
// 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();
}
});