#include "Trivia.h" #include #include #include #include Trivia::~Trivia() { for (size_t i = 0; i < preguntas.size(); ++i ) delete preguntas[i]; } int Trivia::jugar() { std::cout << "Trivia v0.1 [31-mar-2014] Jeisson Hidalgo\n"; if ( ! cargarPreguntas() ) return 1; //imprimirPreguntas(); return jugarSesion(); } bool Trivia::cargarPreguntas() { std::ifstream archivo("trivia3.txt"); while ( true ) { std::string tipo; if ( ! std::getline(archivo, tipo) ) break; Pregunta* pregunta = construirPregunta(tipo); if ( pregunta && pregunta->cargar(archivo) ) preguntas.push_back(pregunta); else break; } archivo.close(); return true; } int Trivia::jugarSesion() { srand( time(nullptr) ); while ( true ) { size_t azar = rand() % preguntas.size(); (*preguntas[azar]).preguntar(); } return 0; } void Trivia::imprimirPreguntas() { for (size_t i = 0; i < preguntas.size(); ++i) preguntas[i]->imprimir(); } #include "PreguntaNumerica.h" #include "PreguntaSeleccionUnica.h" Pregunta* Trivia::construirPregunta(const std::string& tipo) { if ( tipo == "numeric" ) return new PreguntaNumerica(); if ( tipo == "textual" ) return new Pregunta(); if ( tipo == "single_choice" ) return new PreguntaSeleccionUnica(); return nullptr; }