Hola tengo un problema con un juego del ahorcado que saque de un libro llamado
Beggining C++ que enseña programacion de juegos. El problema es que no me reconoce mas de una letra correcta ademas de la primera. No se en que le estoy errando por que esta igual que en el libro. Saludos.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <ctime>
#include <cctype>
using namespace std;
int main(int argc, char *argv[]) {
const int res_incorrectas = 8;
vector<string> palabras;
palabras.push_back("Adivina");
palabras.push_back("Ahorcado");
palabras.push_back("Dificultad");
srand(time(0));
random_shuffle(palabras.begin() , palabras.end());
const string la_palabra = palabras[0];
int error = 0;
string hasta_ahora(la_palabra.size(), '-');
string usada = "";
cout << "\nBienvenido a Ahorcado V1.0\n";
while ((error < res_incorrectas) && (hasta_ahora != la_palabra))
{
cout << "\nTienes " << (res_incorrectas - error) << " oportunidades para acertar.\n";
cout << "\nHas usado las siguientes letras " << usada << "\n";
cout << "\nHasta ahora la palabra es: " << hasta_ahora << "\n";
char respuesta;
cout << "\n\nIngresa una letra: ";
cin >> respuesta;
respuesta = toupper(respuesta);
while (usada.find(respuesta) != string::npos)
{
cout << "\nYa has ingresado: " << respuesta << "\n";
cout << "\nIngresa tu respuesta: \n";
cin >> respuesta,
respuesta = toupper(respuesta);
}
usada+= respuesta;
if (la_palabra.find(respuesta) != string::npos)
{
cout << "\nMuy bien! " << respuesta << " esta en la palabra.\n";
for (int i=0 ; i < la_palabra.length(); ++i)
if (la_palabra == respuesta)
{
hasta_ahora = respuesta;
}
}
else
{
cout << "\nPerdon, " << hasta_ahora << " no es la palabra.\n";
++error;
}
}
if (error == res_incorrectas)
{
cout << "\nHas sido colgado!\n";
cout << "\nLa palabra es: " << la_palabra;
}
else
{
cout << "\nAcertaste!!!\n";
cout << "\nLa palabra es: " << la_palabra;
}
return 0;