#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( time( 0) );
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;
}
jueves, 22 de diciembre de 2011
Ahorcado por consola con C
como dice el titulo es un juego realizado con C que se juega por la consola. disculpen que no ponga los "<>" a los include es que si se los ponia el codigo perdia formato.
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario