Código C++:
Ver original#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
const int numero_intentos=7;
int rellenado (char, string, string&);
int azar(){
int n
= (0 + rand() % 10); return n;
}
int main (){
int continuar;
bool play;
string name;
int puntos=0;
char letra;
int menu;
int num_fallos=0;
string palabra_secreta;
string palabras[] ={
"Perro",
"sandia",
"caracol",
"sorpresa",
"gato",
"queso",
"sombrero",
"neptuno",
"monje",
"ladron"
};
// menu de bienvenida y reglas
cout << "\n\nBienvenido al ahorcado";
cout << "\n\nREGLAS:";
cout << "\n\nCada letra esta representada por un asterisco";
cout << "\n\nPuedes ingresar una o varias letras a la vez pero cada una cuenta como un intento";
cout << "\n\nAcertar suma dos puntos, errar resta uno. Siempre que resuelvas antes de que se te terminen los intentos sumas 10 puntos";
cout << "\n\nTienes " << numero_intentos << " intentos, acertar no resta intentos";
cout << "\n----------------------------------------------";
//GAMELOOP
while( play ){
// seleccionamos una palabra al azar dentro de 'palabras' a la que llamamos 'palabra_secreta'
string palabras[] ={
"Perro",
"sandia",
"caracol",
"sorpresa",
"gato",
"queso",
"sombrero",
"neptuno",
"monje",
"ladron"
};
int n=azar();
palabra_secreta=palabras[n];
//cout << endl << "chuletillaXD: " << palabras[n] << endl;
// convertimos la palabra a asteriscos
string oculta(palabra_secreta.length(),'*');
// estructura while que nos hace ingresar una letra hasta que se nos terminen los intentos
while (num_fallos < numero_intentos){
cout << "\n\n" << oculta;
cout << "\n\nIngresa una letra: ";
cin >> letra;
// utilizamos la función de rellenado, si la letra no está dentro de la palabra se imprime el mensaje y nos resta un punto pero si acertamos, nos suma 2 y nos imprime los puntos y el mensaje de acierto
if (rellenado(letra, palabra_secreta, oculta)==0){
cout << endl << "La letra no se encuentra en la palabra" << endl;
num_fallos++;
puntos -= 1;
}
else{
cout << endl << "Has acertado una letra" << endl;
puntos += 2;
cout << endl << "Puntos: " << puntos << endl;
}
// imprime el numero de intentos que nos quedan
cout << "Te queda " << numero_intentos - num_fallos;
cout << " intentos." << endl;
// comprobamos si el usuario ya ha adivinado la palabra secreta al completo
if (palabra_secreta==oculta){
cout << palabra_secreta << endl;
cout << "Lo conseguiste! la palabra secreta era " << palabra_secreta << endl;
puntos +=10;
cout << "Tu puntuacion es " << puntos << endl;
num_fallos = 0;
break;
}
if(num_fallos == numero_intentos){
cout << "\nPerdiste, se te acabaron los intentos" << endl;
cout << "La palabra era: " << palabra_secreta << endl;
num_fallos = 0;
break;
}
}//FIN DE WHILE
//jugamos otra vez?
cout << "desea seguir jugando?" << endl;
cout << "1 - si" << endl << "2 - no" << endl;
cin >> continuar;
if ( continuar == 2){
play = false;
}
else{
play = true;
}
}//ENDGAMELOOP
cout << "Adios!";
cin.ignore();
cin.get();
return 0;
}//ENDMAIN
/* tomamos la la letra, la palabra secreta y vamos rellenando secreta_rellenar, despues devolvemos los aciertos. Si la letra
ya la probamos en un intento anterior entonces se devuelve 0 */
int rellenado (char letra_intento, string palabrasecreta, string &secreta_rellenar){
int i;
int aciertos=0;
int numletras=palabrasecreta.length();
for (i = 0; i< numletras; i++){
// si la letra ya la probamos en un intento anterior
if (letra_intento == secreta_rellenar[i])
return 0;
// si la letra esta en la palabra que tenemos que adivinar
if (letra_intento == palabrasecreta[i]){
secreta_rellenar[i] = letra_intento;
aciertos++;
}
}
return aciertos;
}//FIn DE LA FUNCION RELLENO
ahí lo tienes XD
creo que va bien, el beta tester eres tu XD
Suerte!
PD:Recuerda una cosa:
Casi todos los juegos están dentro de un gameloop