ahorcado por consola con C

ahorcado por consola con C

Notapor kingwar » Sab Dic 17, 2011 4:24 pm

como tenia que recordar C, que mejor forma de hacerlo que con un juego. aqui esta el codigo:
Código: Seleccionar todo
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>

#define MAX_PAL_OPCION 5
#define MAX_PALABRAS 30
#define MAX_FALLIDAS 5
#define SALIR 4


int menu(void)
{
    //funcion que muestra al usuario un menu y regresa una opcion del mismo
    char linea[MAX_PAL_OPCION+1];
    int opcion=0;

    do
   {
         system("cls");
         printf("\nEscoje mi dificultad:");
         printf("\n1)bebe");
         printf("\n2)ninyo");
         printf("\n3)joven");
         printf("\n4)<-Salir");
         
         printf("\n\nTu opcion:");gets(linea);sscanf(linea,"%d",&opcion);
         if (opcion<1||opcion>4)
              printf("Aun no tengo ese nivel, intenta de nuevo.!\n");
    }while(opcion<1||opcion>4);
     
     return opcion;
}

char *obtener_palabra(int nivel )
{
    //funcion que regresa una palabra del nivel solicitado
    char palabras[3][16][MAX_PALABRAS]={{"pelota","prueba","perro","oso","avion","maletin","foca","culebra","cueva","ayuda","facil","hombre","animal","vida","esfera","televisor"},
                                           {"aguijon","aguinaldo","plantilla","cavar","estrenar","lindo","queso","lenguaje","jubilado","reconocer","conocimiento","ahorcarse","programacion","isla","informar","abispa"},
                                            {"secuela","traslacion","clavicula","cleopatra","clandestino","mirador","esperanza","sabiduria","terraquio","aguila","difunto","perdonar","sobrevalorar","autoestima","eucaristia","leopardo"}};
    int index_aleatorio=(int) ((double) rand() / ((double) RAND_MAX + 1) * 15);
     return palabras[nivel][index_aleatorio];
}


int reemplazar(char letra,char palabra[],char palabra_reemplazar[])
{
    //esta funcion reemplaza en la posicion donde coincida 'letra' en 'palabra', 'letra' en la misma posicion pero de 'palabra_reemplazar'
    int i=0,reemplazado=0;
    while(palabra[i]!='\0')
   {
        if(palabra[i]==letra)
      {
            palabra_reemplazar[i]=letra;
            reemplazado=1;
        }
        i++;

    }
    return reemplazado;
}

int buscar(char letra,char palabra[])
{
    //busca 'letra' en 'palabra' si lo encuentra regresa 1
    int i=0;
    while(palabra[i]!='\0')
   {
        if(palabra[i]==letra)
      {
         palabra[i]=letra;
         return 1;
        }
        i++;

    }
    return 0;
}

int G_ayudado; //variable que me dira si ya ayude o no al usuario
char G_palabra[MAX_PALABRAS],G_palabra_anterior[MAX_PALABRAS]={"null"},G_palabra_oculta[MAX_PALABRAS],G_letras_tecleadas[MAX_PALABRAS];

void palabra_nueva(int opcion)
{
   int long_palabra;
   do
    strcpy(G_palabra,obtener_palabra(opcion-1));
   while(!strcmp(G_palabra,G_palabra_anterior));//mientras no sean iguales la palabra anterior con la nueva (para que no se repitan las mismas palabras)
   strcpy(G_palabra_anterior,G_palabra);//se actualiza la anterior con la nueva

   long_palabra=strlen(G_palabra);
   memset(G_palabra_oculta,'_',long_palabra);//se establecen los cuadritos de 'G_palabra_oculta'
   G_palabra_oculta[long_palabra]='\0';
   
   G_letras_tecleadas[0]='\0';
   G_ayudado=0;
}


int main(void)
{
    int perdio=0,opcion=0,puntaje,vidas,fallidas,i,palabras_descubiertas;
    char linea[MAX_PAL_OPCION],probar_letra='\0';
   
    srand( (unsigned)time( NULL ) );
    while(1)
   {

         opcion=menu(); //se optiene la opcion del usuario
         if(opcion==SALIR)break;
         
         //VALORES INICIALES
         palabra_nueva(opcion);
         puntaje=0;
         vidas=3;
         fallidas=0;
         perdio=0;
         G_ayudado=0;
         palabras_descubiertas=0;
         
         while(!perdio)//mientras no halla perdido
      {
            i=0;
         system("cls");//se borra la pantalla -creo que solo sirve para windows-
         printf("COMANDOS:\n");
         printf("\"retirarse\" me regresa al menu\n");
         printf("\"ayuda\" me obliga a ayudarte\n\n");
         
            //DIBUJA LA PALABRA CON ESPACIOS
            while(G_palabra_oculta[i]!='\0')
           {
               printf("%c ",G_palabra_oculta[i]);
                i++;
       
            }
            printf("\n\nPuntaje:%d\n",puntaje);
         printf("Vidas:%d\n",vidas);
         printf("Palabras completadas:%d\n",palabras_descubiertas);
         printf("ERRORES:%d\n",fallidas);
         if (!strcmp(G_palabra_oculta,G_palabra))//si descubrio la palabra
         {
                palabras_descubiertas+=1;
            if(palabras_descubiertas==10)
                {
                        printf("\nMe has descubierto 10 palabras. Deseas continuar \?(Y/N):");gets(linea);sscanf(linea,"%c",&probar_letra);
                        if(toupper(probar_letra)=='N')
                        {
                             printf("\nTe reconozco como un buen contrincante...\n\n");
                             system("PAUSE");
                             break;
                        }
                        printf("\n\n");
                        palabras_descubiertas=0;
                }
                else
                         printf("\nHas descubierto la palabra...!\n\n");
                palabra_nueva(opcion);
                fallidas=0;
                system("PAUSE");
               
         }
         else
         {
            printf("\nLetras tecleadas:%s",G_letras_tecleadas);
            printf("\nProbar con:");gets(linea);
                if(!strcmp(linea,"retirarse"))
                {
                system("cls");
                printf("\nTE RENDISTES POR IGNORANTE...!\n\n");
                system("PAUSE");
                perdio=1;
                }
                else if(!strcmp(linea,"ayuda"))
                {
                     if(!G_ayudado)
                     {
                         int index_ayuda=0;//index de la palabra con la que se quiere ayudar
                         
                         //ESTO ES PARA ASEGURARME QUE LA AYUDA SEA EFECTIVA
                         do
                            index_ayuda=(int) ((double) rand() / ((double) RAND_MAX + 1) * (strlen(G_palabra)-1));
                         while(G_palabra_oculta[index_ayuda]!='_'); //mientras ya no este descubierta la palabra con la que se quiere ayudar
                         
                         sprintf(G_letras_tecleadas,"%s-%c",G_letras_tecleadas,G_palabra[index_ayuda]);//agrega la palabra a letras tecleadas
                         reemplazar(G_palabra[index_ayuda],G_palabra,G_palabra_oculta);//se reemplaza la letra en palabra oculta
                         G_ayudado=1;
                         
                     }
                     else//SI YA LO HABIA AYUDADO
                     {
                    printf("\nIGNORANTE YA TE AYUDE...!\n\n");
                    system("PAUSE");
                     }
                }
                else
                {
                   
                    sscanf(linea,"%c",&probar_letra);//se obtiene la primera letra de la cadena 'linea'
                if (!buscar(probar_letra,G_letras_tecleadas))
                {
                   sprintf(G_letras_tecleadas,"%s-%c",G_letras_tecleadas,probar_letra);//agrega la palabra a letras tecleadas
                   if(reemplazar(probar_letra,G_palabra,G_palabra_oculta))
                      puntaje+=20;
                   else
                       fallidas+=1;
                }
                else
                   fallidas+=1;
                   
                if(fallidas==MAX_FALLIDAS)
                {
                   vidas-=1;
                   if(vidas<0)
                   {
                      system("cls");
                      printf("\nPERDISTES, SI ERES IGNORANTE...!\n\n");
                      system("PAUSE");
                      perdio=1;
                   }
                   else
                   {
                      system("cls");
                      printf("\nFallaste la palabra era \"%s\",concentrate mas...\n\n",G_palabra);
                      system("PAUSE");
                      fallidas=0;
                      palabra_nueva(opcion);
                   }
               }
               
            }
         }
         
         

                 
      }

    }
    printf("\nGRACIAS POR JUGAR...");
    printf("\nProgramado por:Manuel Gonzalez\n");
    system("PAUSE");   
    return 0;
}
"pero si estudias computacion deberias saber manejar todos los programas" conclusion:usuario no es gente

-linkingcrk- http://baulprogramas.blogspot.com/
Avatar de Usuario
kingwar
 
Mensajes: 35
Registrado: Dom Abr 10, 2011 9:32 pm
Ubicación: Venezuela-Miranda

Volver a Videojuegos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados