hilfe komm nicht auf den fehler
-
Hallo liebe Foren Mitglieder kann mir jemand sagen wo ich einen fehler gemacht habe ich komm einfach nicht drauf
#include "CommandNewMonster.h" #include "UserInterface.h" #include "Monster.h" #include <string> CommandNewMonster::CommandNewMonster(UserInterface& ui) : cnm_ui(ui) { //cnm_ui = ui; } CommandNewMonster::~CommandNewMonster() { } Attack* CommandNewMonster::execute() { std::string name; std::string type; unsigned int health; unsigned int attack; unsigned int defense; std::string temp; overload = true; damage_count = 0; while(name.empty()) { std::cout<<"Monster Name? "; name = cnm_ui.readString(); } while(type.empty()) { std::cout<<"Monster Type? "; type = cnm_ui.readString(); } while (overload == true) { overload == false; while(temp.empty()) { std::cout<<"Monster Health? "; temp = cnm_ui.readString(); if(!(cnm_ui.stringToUnsignedInt(temp, health))) { std::cout<<"Error: Please enter an integer."<<std::endl; } else { if(!(addDamageCounter(damage))) { temp.clear(); } } } while (overload == true) { overload == false; while(temp.empty()) { std::cout<<"Monster Attack? "; temp = cnm_ui.readString(); if(!(cnm_ui.stringToUnsignedInt(temp, attack))) { std::cout<<"Error: Please enter an integer."<<std::endl; } else { if(!(addDamageCounter(damage))) { temp.clear(); } } } while (overload == true) { overload == false; while(temp.empty()) { std::cout<<"Monster Defense? "; temp = cnm_ui.readString(); if(!(cnm_ui.stringToUnsignedInt(temp, defense))) { std::cout<<"Error: Please enter an integer."<<std::endl; } else { if(!(addDamageCounter(damage))) { temp.clear(); } } } return &attack; } bool CommandNewMonster::addDamageCounter(unsigned int add) { if((damage_count+add)<=150) { damage_count+=add; return true; } else { std::cout<<"Error: Monster is too powerful. "<< "The sum of status values has to be max. 150 points."<<std::endl; overload = true; return false; } }
-
So viel Code, und keine einzige Beschreibung, WAS denn jetzt genau falsch läuft?
-
Und für C/C++-Codetags anstelle von Code-Tags wären wir auch dankbar.
-
Lies dir mal bitte den Link in meiner Signatur durch, und dann stell die Frage nochmal. Und zwar:
- mit [ cpp ]-Tags statt [ code ]-Tags
- mit einem aufs Wesentliche reduzierten Code.
- mit der Fehlermeldung, die du bekommst (oder einer genauen Beschreibung des falschen Verhaltens und des Verhaltens, das du eigentlich erwartest)
-
#include "CommandNewMonster.h" #include "UserInterface.h" #include "Monster.h" #include <string> CommandNewMonster::CommandNewMonster(UserInterface& ui) : cnm_ui(ui) { //cnm_ui = ui; } CommandNewMonster::~CommandNewMonster() { } Attack* CommandNewMonster::execute() { std::string name; std::string type; unsigned int health; unsigned int attack; unsigned int defense; std::string temp; overload = true; damage_count = 0; while(name.empty()) { std::cout<<"Monster Name? "; name = cnm_ui.readString(); } while(type.empty()) { std::cout<<"Monster Type? "; type = cnm_ui.readString(); } while (overload == true) { overload == false; while(temp.empty()) { std::cout<<"Monster Health? "; temp = cnm_ui.readString(); if(!(cnm_ui.stringToUnsignedInt(temp, health))) { std::cout<<"Error: Please enter an integer."<<std::endl; } else { if(!(addDamageCounter(damage))) { temp.clear(); } } } while (overload == true) { overload == false; while(temp.empty()) { std::cout<<"Monster Attack? "; temp = cnm_ui.readString(); if(!(cnm_ui.stringToUnsignedInt(temp, attack))) { std::cout<<"Error: Please enter an integer."<<std::endl; } else { if(!(addDamageCounter(damage))) { temp.clear(); } } } while (overload == true) { overload == false; while(temp.empty()) { std::cout<<"Monster Defense? "; temp = cnm_ui.readString(); if(!(cnm_ui.stringToUnsignedInt(temp, defense))) { std::cout<<"Error: Please enter an integer."<<std::endl; } else { if(!(addDamageCounter(damage))) { temp.clear(); } } } return &attack; } bool CommandNewMonster::addDamageCounter(unsigned int add) { if((damage_count+add)<=150) { damage_count+=add; return true; } else { std::cout<<"Error: Monster is too powerful. "<< "The sum of status values has to be max. 150 points."<<std::endl; overload = true; return false; } }es dient rein zur erstellung von mostern in dem das programm den user nach name, typ, gesundheit, angrif und verteidigung abfragt. bei den ersten 2 fragt er nach einem string und bei den anderen einen unsigned int wobei die summe der 3 werte welche der user eingibt nicht 150 punkte übersteigen dürfen
sorry bin ein anfänger und kenn mich noch nicht so gut aus
-
Gut - was genau nun nicht funktionier wissen wir immernoch nicht.
Aber Möglicherweise ja folgendes:Dein Programm fragt unaufhörlich nach den Lebenspunkten, der Monster-Angriffskraft und der Verteidigungs-rate?
Grund dafür: Zeile 44
Du weist overload nirgends einen anderen Wert zu, somit bleibt overload immer true.overload == false ist keine Zuweisung!
-
aria00 schrieb:
sorry bin ein anfänger und kenn mich noch nicht so gut aus
Eine sinnvolle Beschreibung des Fehlers solltest du dennoch hinbekommen:
1. Fehlermeldung vom Compiler, wenn zutreffen angeben.
(Auf die ersten paar Beschränken, da häufig Folgefehler)2. Was erwartest du von dem Programm, und was passiert tatsächlich.
(Wir wissen noch immer nicht was du von uns willst)