1

En visual C++ en express 2013 pour Windows desktop j'ai fait un roguelike ASCII mais le code suivant est en train de tout chambouler. Dans le jeu quand tu vaincs.un ennemi tu obtiens de l'expérience qui s'ajoute aux joueurs et augmente le niveau si c'est suffisant. Il y a le code.it dans une classe de joueur que j'ai créée. faire imprimer nivelées jusqu'à .. pas de fois j'appuie sur une touche comme la boucle while ne se termine jamais .presses une clé nivelé apparaît alors à nouveau que j'appuie sur une touche nivelé apparaît, il continue à allerVisual C++ infinite while loop

void Player::addExperience(int experience){_experience += experience; 
    while(_experience >50) { 
     _experience -= 50; 
     _level++; 
     printf("Leveled up%s",_level); 
     _getch(); 
    } 
} 

Quand j'ai changé le code à ->

void Player::addExperience(int experience) {_experience += experience;while(_experience >50) { _experience = 0;_level++/printf("Leveled up%s",_level); 
     _getch(); 
    } 
} 

Il imprimé qu'une seule fois nivelé jusqu'à .. donc, je sais que le problème est dans ce code, mais quoi. je ne sais pas

Répondre

0

J'ai relu votre description plusieurs fois pour comprendre votre problème. J'espère avoir bien compris.

Nous ne connaissons pas la valeur de expérience. A moins de continuer à chanter en arrière-plan, les boucles sont supposées s'exécuter un nombre infini de fois OU zéro fois en fonction de la valeur de expérience.

Le premier fragment de code de niveau par incréments de 1 à chaque fois qu'il diminue _la force par 50. Mais, les contrôles de boucle while pour expérience au lieu de _la force, de sorte que la boucle ne se rompt jamais.