我实施了一个测验代码,并在最后做了一个简短的更改,以检查用户是否正确回答了它.
我的if/else看起来像这样:
if (answer == rightanswer){ rightA = true; } else { rightA = false; } return rightA;
我已经用调试器检查过,如果输入正确答案,则转到rightA = true; 并返回,所以这是有效的.但是,如果我检查rightA的值,那就是假的.如果需要,这是我用来调用测验的函数:
void gameOver(char field[HEIGHT][WIDTH], char newField[HEIGHT][WIDTH]){ // TODO bool rightA = false; showQuizDialog(rightA); do{ system("cmd /c cls"); switch (rightA){ case true : cout << "menu"; menu(field, newField); break; case false : showQuizDialog(rightA); break; default : cout << " "; } }while(rightA == false); }
我有点暗示.我可能有一些逻辑上的失败,我现在还没有看到.问候
E:我不想用代码轰炸你们.但就是这样:
bool showQuizDialog(bool rightA){ Quiz* quiz = Quiz::getInstance(); quiz -> askQuestion(rightA); return rightA; }
并且完整的问题问题:
bool Quiz::askQuestion(bool rightA) { int fragenID = rand() % this->fragen.size(); //zufällige Fragen auswählen struct Question frage = this->fragen.at(fragenID); std::cout << frage.frage.c_str() << std::endl << endl; //Frage stellen int rightanswer = this->listAnswers(frage.antworten); int answer = this->readAnswer(0, frage.antworten.size() - 1); if (answer == rightanswer){ rightA = true; } else { rightA = false; } return rightA; }
Luchian Grig.. 9
是showQuizDialog(rightA)
应该幻化的价值rightA
?(我假设你没有通过引用传递它).
你的意思是写rightA = showQuizDialog(rightA)
还是rightA = quiz -> askQuestion(rightA)
?
此外,在您switch
打开bool时,您是否期望除a true
或a 之外的任何其他值false
?