Problème random javascript
Résolu
vivelesgrecs
Messages postés
71
Statut
Membre
-
vivelesgrecs Messages postés 71 Statut Membre -
vivelesgrecs Messages postés 71 Statut Membre -
Bonjour,
j'ai un pb avec ma commande random en JavaScript. dans ma console de Firefox, ça me renvoie :SyntaxError: missing formal parameter.
la ligne de code concernée est :
j'ai un pb avec ma commande random en JavaScript. dans ma console de Firefox, ça me renvoie :SyntaxError: missing formal parameter.
la ligne de code concernée est :
var degats = function getRandomIntInclusive(this.force/2, this.force) {
return Math.floor(Math.random() * (this.force - this.force/2 +1)) + this.force/2;}
A voir également:
- Problème random javascript
- Telecharger javascript - Télécharger - Langages
- A javascript error occurred in the main process - Forum Handicap / Accessibilté
- Afficher un tableau javascript en html ✓ - Forum Javascript
- Javascript arrondi - Forum Javascript
- Javascript arrondi après la virgule ✓ - Forum Windows
2 réponses
Bonjour
Ce n'est pas avec Random que tu as un problème, c'est avec la manière d'écrire une fonction.
Les paramètres formels (ceux qui sont entre parenthèses dans la définition de la fonction) doivent être des simples noms de variables, pas des expressions :
Ce n'est pas avec Random que tu as un problème, c'est avec la manière d'écrire une fonction.
Les paramètres formels (ceux qui sont entre parenthèses dans la définition de la fonction) doivent être des simples noms de variables, pas des expressions :
// définition de la fonction :
function getRandomIntInclusive(force1,force2) {
return Math.floor(Math.random() * (force2 - force1 +1)) + force1;}
// appel de la fonction :
var degats =getRandomIntInclusive(this.force/2, this.force);
En fait, tu définis une fonction inutilement puisque tu ne l'appelles qu'une seule fois. De plus, tu avais mal inclus le code que j'avais donné, puisque tu avais laissé un var degats= avant la définition de la fonction.
Enfin, tu avais défini la fonction au milieu du code, ce qui n'est pas interdit mais n'offre pas grand intérêt dans ton cas, si ce n'est de nuire à la lisibilité.
Je pense que depuis le début, tu n'avais pas besoin de fonction, tu pouvais écrire directement :
Mais il est possible qu'il y ait d'autre problèmes, je n'ai pas regardé le détail du code ligne à ligne.
Enfin, tu avais défini la fonction au milieu du code, ce qui n'est pas interdit mais n'offre pas grand intérêt dans ton cas, si ce n'est de nuire à la lisibilité.
Je pense que depuis le début, tu n'avais pas besoin de fonction, tu pouvais écrire directement :
var degats = Math.floor(Math.random() * (this.force - this.force/2 +1)) + this.force/2;
Mais il est possible qu'il y ait d'autre problèmes, je n'ai pas regardé le détail du code ligne à ligne.
Personnage.attaquer()
<anonyme>
C'est donc que tu essayes de l'appeler depuis un endroit où elle est hors de portée.
Pas possible d'en dire plus sans connaître le contexte,
/* Mini-jeu de rôle */ var Personnage = { // Initialise le personnage initPerso: function (nom, sante, force) { this.nom = nom; this.sante = sante; this.force = force; // L'inventaire est géré sous la forme d'une propriété de type objet this.inventaire = { or: 10, cles: 1 }; }, // Attaque un personnage cible attaquer: function (cible) { if (this.sante > 0) { var degats = // définition de la fonction : function getRandomIntInclusive(force1,force2) { return Math.floor(Math.random() * (force2 - force1 +1)) + force1;} // appel de la fonction : var degats = getRandomIntInclusive(this.force/2, this.force); console.log(this.nom + " attaque " + cible.nom + " et lui fait " + degats + " points de dégâts"); cible.sante = cible.sante - degats; if (cible.sante > 0) { console.log(cible.nom + " a encore " + cible.sante + " points de vie"); } else { cible.sante = 0; console.log(cible.nom + " est mort !"); } } else { console.log(this.nom + " ne peut pas attaquer : il est mort..."); } } }; var Joueur = Object.create(Personnage); // Initialise le joueur Joueur.initJoueur = function (nom, sante, force) { this.initPerso(nom, sante, force); this.xp = 0; }; // Renvoie la description du joueur Joueur.decrire = function () { var description = this.nom + " a " + this.sante + " points de vie, " + this.force + " en force, " + this.xp + " points d'expérience, " + this.inventaire.or + " pièces d'or et " + this.inventaire.cles + " clé(s)"; return description; }; // Combat un adversaire Joueur.combattre = function (adversaire) { this.attaquer(adversaire); if (adversaire.sante === 0) { console.log(this.nom + " a tué " + adversaire.nom + " et gagne " + adversaire.valeur + " points d'expérience, ainsi que " + adversaire.inventaire.or + " pièces d'or et " + adversaire.inventaire.cles + " clé(s)"); this.xp += adversaire.valeur; // L'inventaire de la victime est transféré à son vainqueur this.inventaire.or += adversaire.inventaire.or; this.inventaire.cles += adversaire.inventaire.cles; } }; var Adversaire = Object.create(Personnage); // Initialise les propriétés de l'adversaire Adversaire.initAdversaire = function (nom, sante, force, race, valeur) { this.initPerso(nom, sante, force); this.race = race; this.valeur = valeur; }; var joueur1 = Object.create(Joueur); joueur1.initJoueur("Aurora", 150, 25); var joueur2 = Object.create(Joueur); joueur2.initJoueur("Glacius", 130, 30); console.log("Bienvenue dans ce jeu d'aventure ! Voici nos courageux héros :"); console.log(joueur1.decrire()); console.log(joueur2.decrire()); var monstre = Object.create(Adversaire); monstre.initAdversaire("ZogZog", 40, 20, "orc", 10); console.log("Un affreux monstre arrive : c'est un " + monstre.race + " nommé " + monstre.nom); monstre.attaquer(joueur1); monstre.attaquer(joueur2); joueur1.combattre(monstre); joueur2.combattre(monstre); console.log(joueur1.decrire()); console.log(joueur2.decrire());