Menu

Je ne trouve pas l'erreur dans mon program !! [Résolu/Fermé]

Seiteki 3 Messages postés vendredi 21 avril 2017Date d'inscription 21 avril 2017 Dernière intervention - 21 avril 2017 à 13:01 - Dernière réponse : valouvalivalo 131 Messages postés lundi 16 février 2015Date d'inscription 25 juin 2017 Dernière intervention
- 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.


Afficher la suite 

6 réponses

jordane45 20561 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 21 avril 2017 à 13:38
0
Utile
1
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;

Seiteki 3 Messages postés vendredi 21 avril 2017Date d'inscription 21 avril 2017 Dernière intervention - 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 :)
valouvalivalo 131 Messages postés lundi 16 février 2015Date d'inscription 25 juin 2017 Dernière intervention - Modifié par valouvalivalo le 21/04/2017 à 14:18
0
Utile
3
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
jordane45 20561 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 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
Seiteki 3 Messages postés vendredi 21 avril 2017Date d'inscription 21 avril 2017 Dernière intervention - 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?
valouvalivalo 131 Messages postés lundi 16 février 2015Date d'inscription 25 juin 2017 Dernière intervention - 21 avril 2017 à 20:47
oui, le console.log fait pareil.
le math.floor permet d'arrondir a l'entier inferieur