Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - nathaniel

#1
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
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.