Buenas a todos, estoy programando un videojuego del ahorcado que me encargaron para un proyecto. Estoy a punto de terminarlo, lo único que no pude conseguir es que los contadores funcionaran bien, dejen explico:
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
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.
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 (cpp) [Seleccionar]
#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;
}
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.