El contador de "letras acertadas" debe empezar desde cero y el contador de "oportunidades restantes" en 5 cada vez que suba de nivel. En el segundo nivel si empieza de cero lo de "letras acertadas" pero en las "oportunidades restantes" puede empezar con un 4 en vez de un 5. Entenderán todo el lío en el código. Y bueno si alguien puede tomarse la molestia de leer el siguiente código y decir por lo menos algo que vale la pena intentar, sera de gran ayuda para alguien que ha perdido las esperanzas y ha recurrido a un foro.
DEV C++5.11
Código
Nota: Puede que a algunos les salga [Warning]deprecated conversion from...En mi caso era que el programa se desconfigura de vez en cuando, como solución lo abría en otro archivo nuevo.
#include<stdio.h> #include<string.h> #include <stdlib.h> #include <iostream> #include "conio.h" #include <time.h> using namespace std; int main() { char rep[100],temporal[100]; char pal; char *palabra[]={"ambiente","cuidado","ecosistema","naturaleza","conservacion","recursos","equilibrio","forestacion","purifica","tierra","vida","ecologico","animales","ambiental","reciclaje","atmosfera","diversidad","energia"}; char *frase; int tacertado,nivel; srand(time(NULL)); int k=0; int longitud,i,j,inicial,acertado=0,temp=0,oportunidades=5,n=1; int repetido=0,gano=0, nrepetidos = 0; char nombre, apellido,edad, direccion; cout<<" AHORCADO JUEGO"<<endl; system("pause"); while(oportunidades != 0) { oportunidades=5; acertado=0; repetido=0; nrepetidos=0; frase=0; for(int v=0;v<=1;v++) { frase=palabra[rand()%18]; //Guarda un palabra al azar de las 18 existentes } system("cls"); longitud = 0; //Variables utilizadas para longitud de la palabra inicial = 0; j = 0; rep[0] = ' '; rep[1] = '\0'; do{ //Hacer todo hasta que las oportunidades(Vidas del juego) se acaben o adivine la palabra system("cls"); temp=0; cout<<" JUEGO DEL AHORCADO"<<endl; cout<<endl; if(inicial == 0) { //Calcula cuantas letras hay en la palabra con la funcion "strlen" y dependiendo de ello imprime los guiones bajos for(i=0;i<strlen(frase);i++) { if(frase[i] == ' ') { temporal[i] = ' '; longitud++; } else { temporal[i] = '_'; longitud++; } } } inicial = 1; temporal[longitud] = '\0'; //////////////////////////////////////////////////////////////////////////////// //FOR REPETIDOS repetido = 0; for(i=0;i<nrepetidos;i++) { //For para cuando se repite la letra, empieza si se introduce la misma letra 2 veces if(rep[i] == pal) { //Ejemplo Palabra casa: repetido = 1; // _ _ _ _ <----------Ingresa "a" el usuario REPETIDO=0 // _ a _ a <----------Ingresa "a" } } if(repetido == 0) { //For para contar los ACIERTOS for(i=0;i<=strlen(frase);i++) { if(frase[i] == pal ) { temporal[i] = pal; acertado++; temp=1; } } if(temp == 0) { oportunidades = oportunidades - 1; } //Si la letra es diferente y no es una repetitiva ni tampoco es un acierto se le quita una oportunidad nrepetidos++; } else { printf("Ya se ha introducido este caracter"); printf("\n\n"); } //////////////////////////////////////////////////////////////////////////////// printf("\n"); for(i=0;i<strlen(temporal);i++) { printf(" %c ",temporal[i]); } printf("\n"); if(strcmp(frase,temporal) == 0) { gano = 1; break; } cout<<endl; cout<<"Nivel "<<n<<endl; printf("\n"); printf("Letras Acertadas: %d",acertado); printf("\n"); printf("Oportunidades Restantes: %d",oportunidades); printf("\n"); rep[j] = pal;//Guarda el valor de "pal"(Letra que introduce el usuario) en un arreglo j++; if (oportunidades==0) { break; } printf("Introduzca una letra:"); scanf("\n%c",&pal); }while(oportunidades != 0); //Hasta que no haya oportunidades o adivine la palabra imprime: nivel=n-1; if(gano && oportunidades>0) { printf("\n\n"); printf("Enhorabuena, has ganado."); } else{ printf("\n\n"); printf("Has perdido."); cout<<"La palabra era : "<<frase<<endl; cout<<"Puntaje total :"<<tacertado<<endl; cout<<"Nivel maximo : "<<nivel<<endl; } system ("pause"); n++; tacertado+=acertado; } printf("\n\n"); system("PAUSE"); return 0; }