Je ne trouve pas l'erreur dans mon program !!

Résolu/Fermé
Seiteki Messages postés 3 Date d'inscription vendredi 21 avril 2017 Statut Membre Dernière intervention 21 avril 2017 - Modifié le 21 avril 2017 à 13:35
valouvalivalo Messages postés 130 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 25 juin 2017 - 21 avril 2017 à 20:47
Bonjour, je suivais un tuto sur Youtube ( qui date de 2012, donc aucune chance de demander de l'aide dans les commentaires), et pour connaitre son niveau il y avait un exercice simple(voici le lien de la vidéo: https://www.youtube.com/watch?v=r52izpVnCGY&list=PLB87FA10C02CC3CA8&index=12 ), mais mon programme
(c'est du JavaScript) ne fonction pas correctement, la boucle while est censé se répéter jusqu'à que la vie de un des personnages atteigne zéro, or elle s’arrête des que l'attaque de l'un des personnages réussi.
voici le code:


#pragma strict


function Start () {

var vieHeros:int = 100;
var vieEnnemi:int = 100;

Debug.Log("je suis Link");
Debug.Log("je suis Armos");

 while(vieHeros > 0 && vieEnnemi > 0)
 {   Debug.Log("vie de link: " + vieHeros);
  Debug.Log("vie de armos: " + vieEnnemi);

  Debug.Log("link attaque!");
  var attaqueHeros:int;
  attaqueHeros = Random.Range(1,6);
  if(attaqueHeros == 1){
  vieEnnemi =- 10;
  Debug.Log("link a enlevé 10 pv à armos!");
  }else{
  Debug.Log("link a échoué!");
  }

  Debug.Log("armos attaque!");
  var attaqueEnnemi:int;
  attaqueEnnemi = Random.Range(1,6);
  if(attaqueEnnemi == 1){
  vieEnnemi =- 10;
  Debug.Log("armos a enlevé 10 pv à link!");
  }else{
  Debug.Log("armos a échoué!");
  }
 }
 Debug.Log("fin de partie");
 if(vieEnnemi == 0){
  Debug.Log("link gagne!");
 }else{}
 if(vieHeros == 0){
  Debug.Log("armos gagne!");
 }else{}
}



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.


2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
21 avril 2017 à 13:38
Bonjour,
vieEnnemi =- 10;

Donc la variable vieEnnemi est égale à moins dix ....

Si tu veux soustraire 10 ... il faut écrire
vieEnnemi  -= 10;



et puis
if(attaqueEnnemi == 1){
  vieEnnemi =- 10;

... ne serait-ce pas la vie du héro dans ce cas ?
if(attaqueEnnemi == 1){
  vieHeros  -= 10;

0
Seiteki Messages postés 3 Date d'inscription vendredi 21 avril 2017 Statut Membre Dernière intervention 21 avril 2017
21 avril 2017 à 14:55
Merci, maintenant que je vois mon erreur elle me parait toute bête, j'ai pas encor le niveau pou se genre d'exercice :)
0
valouvalivalo Messages postés 130 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 25 juin 2017 38
Modifié le 21 avril 2017 à 14:18
Bonjour,

var vieHeros = 100; 
var vieEnnemi = 100; 

console.log("je suis Link"); 
console.log("je suis Armos"); 

while(vieHeros != 0 && vieEnnemi != 0) 
{ 
 console.log("vie de link: " + vieHeros); 
 console.log("vie de armos: " + vieEnnemi); 

 console.log("link attaque!"); 
 var attaqueHeros; 
 attaqueHeros = Math.floor((Math.random() * 6) + 1);

 if(attaqueHeros == 1)
 { 
  vieEnnemi = vieEnnemi - 10; 
  console.log("link a enlevé 10 pv à armos!"); 
 }
 else console.log("link a échoué!"); 

 console.log("armos attaque!"); 
 var attaqueEnnemi; 
 attaqueEnnemi = Math.floor((Math.random() * 6) + 1);
 
 if(attaqueEnnemi == 1)
 { 
  vieHeros =vieHeros- 10; 
  console.log("armos a enlevé 10 pv à link!"); 
 }
 else console.log("armos a échoué!"); 
} 
console.log("fin de partie"); 
if(vieEnnemi == 0){ 
console.log("link gagne!"); 
}else{} 
if(vieHeros == 0){ 
console.log("armos gagne!"); 
}else{} 
}

la sa marche mieux
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
21 avril 2017 à 14:35
....
 vieEnnemi = vieEnnemi - 10; 

peut s'écrire .. comme je l'ai marqué dans ma réponse précédente :
  vieEnnemi -=  10; 


...
la sa marche mieux

la ça marche mieux
0
Seiteki Messages postés 3 Date d'inscription vendredi 21 avril 2017 Statut Membre Dernière intervention 21 avril 2017
21 avril 2017 à 14:59
Merci pour ta réponse mais dans ton programme il y a des terme que je n'est pas encor apprise comme math.floor et console.log non-plus mais je pense que sa fonctionne comme un Debug.Log non?
0
valouvalivalo Messages postés 130 Date d'inscription lundi 16 février 2015 Statut Membre Dernière intervention 25 juin 2017 38
21 avril 2017 à 20:47
oui, le console.log fait pareil.
le math.floor permet d'arrondir a l'entier inferieur
0