2016-10-11 3 views
1

Ok, donc je suis nouveau à ce sujet s'il vous plaît nu avec moi. Je travaille sur un jeu-questionnaire simple, et juste pour tester, j'ai créé ce petit bout de code pour m'assurer qu'il fonctionne correctement.Trivia Boucle de jeu et d'obtenir des questions de ligne

// Trivia game for one player. Player will choose a category and program 
// will ask you questions within set category. Correct answers are 
// worth 5 points and incorrect answers are worth only 2.5 points. 

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main() 
{ 
    float score = 0; 
    string name, question, ans1, ans2, ans3, ans4; 
    char ans, correct; 

    ifstream history; 
    history.open("History.txt"); 

    while (!history.eof()) 
    { 
     getline(history, question); 
     cout << question << '\n'; 
     getline(history, ans1); 
     cout << ans1 << '\n'; 
     getline(history, ans2); 
     cout << ans2 << '\n'; 
     getline(history, ans3); 
     cout << ans3 << '\n'; 
     getline(history, ans4); 
     cout << ans4 << '\n'; 
     history >> correct; 
     cout << "Enter your answer: "; 
     cin >> ans; 

     if (ans = correct) 
     { 
      cout << "You are correct!\n"; 
      cout << "5 Points awarded...\n"; 

      score = score + 5; 
     } 
     else 
     { 
      cout << "Wrong!\n"; 
      cout << "2.5 Points awarded...\n"; 

      score = score + 2.5; 
     } 
    } 
} 

History.txt ressemble à ceci ....

What was the first Tudor monarch in England? 
A. Henry V 
B. Edward IV 
C. Henry VII 
D. Edmund 
C 
The Kingdom of Joseon was founded in 1392 in what country? 
A. England 
B. Isreal 
C. China 
D. Korea 
D 
The Spanish Civil War began in what year? 
A. 1936 
B. 1874 
C. 1920 
D. 1948 
A 

Alors qu'est-ce qui se passe est-il lit et produit la première question et les réponses correctement, pour la prochaine série, il va seulement à C. puis à B, et ainsi de suite. Il compte également toutes les réponses de l'utilisateur comme correctes. Qu'est-ce que je fais mal?

Répondre

0

qu'il compte chaque réponse correcte parce que l'état de votre déclaration if:

if (ans = correct) 

est une mission, qui évalue techniquement true (car il est non nul).

Modification:

if (ans == correct) 

pour évaluer l'égalité.

+0

Merci pour la réponse! Cela fait parfaitement sens. – Brice

+0

Une raison pour laquelle vous voyez pourquoi il lit correctement les 4 premières lignes, puis je vais lire des lignes mixtes? Il sort parfaitement la première question et 4 options de réponses, puis la suivante ne fait que la question et 3 réponses avec la bonne réponse donnée par history.txt – Brice