1

In Visual C++ in Express 2013 für Windows-Desktop habe ich eine ASCII Rogueike, aber der folgende Code ist alles versauen.im Spiel, wenn Sie besiegen.Eine Feind Sie Erfahrungen sammeln, die Spieler hinzugefügt und Levels, wenn genug. Hier ist der Code. Es ist in einer Spielerklasse, die ich erstellt habe. druckte ich eine Taste drücken Geebneter bis zu .. nicht mal wie die while-Schleife endet nie .presses nivelliert ein Schlüssel dann wieder erscheint ein Schlüssel nivelliert ich drücke erscheint esVisual C++ unendlich while-Schleife

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

auf Laufen hält Wenn ich geändert die Code ->

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

Es nur einmal gedruckt nivelliert bis zu .. Also ich weiß, dass das Problem in diesem Code ist, aber was. Ich weiß es nicht.

Antwort

0

Ich habe Ihre Beschreibung einige Male erneut gelesen, um Ihr Problem zu verstehen. Ich habe es richtig verstanden.

Wir wissen nicht den Wert von Erfahrung. Wenn es nicht im Hintergrund weiterläuft, sollten die Schleifen unendlich oft oder null Mal basierend auf dem Wert experience laufen.

Das erste Fragment des Codes erhöht Ebene jedes Mal um 1 verringert es _experience um 50. Aber die while-Schleife prüft, ob Erfahrung statt _experience, so dass die Schleife nie bricht.