Mouvement aléatoire à partir de coordonnées

Javascript

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut tout le monde,

Je m'amuse à construire une petite armée de robots en javascript POO(ou presque)

Voici où j'en suis depuis la dernière fois

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 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() {
    var point1X = (this.position(Math.random() * this.maxSpeed);
    var point1Y = (this.position(Math.random() * this.maxSpeed);
        console.log("je suis" + point1X + point1Y);
};

//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();
});

En fait j'aimerais leur permettre de se déplacer aléatoirement à chaque tour entre 1 et maxSpeed cases. J'avoue que je ne sais pas trop comment m'y prendre pour leur dire qu'ils peuvent aller en haut en bas à gauche ou à droite.

J'ai commencé à configurer quelque chose mais bon…^^ Qu'est-ce que vous en pensez?

Édité par Coyote

+0 -0
Auteur du sujet
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// 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();
});
+0 -0

Hello,

Tu es plutôt bien parti :), voici une piste:

Tu pourrais utiliser cette fonction pour tirer un nombre entre -maxSpeed et +maxSpeed. Si le nombre tiré est négatif le robot monte/recule, si il est positif le robot descend/avance

Pour gérer la question du x/y tu pourrais utiliser un modulo dans ta condition.

NB : je suis parti du principe que les déplacements se font de case en case avec des nombres entiers, si ce n'est pas le cas il y a 2/3 petites choses à modifier (fonction aléatoire, modulo)

Édité par luuka

Dev' web en alternance | LP CRSPM Laval

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte