Hola amig@s en esta ocasión les traigo la versión 1 de la adaptacion del juego del ahorcado en C pero esta vez en modo gráfico escrito en C++ y la librería Allegro por el momento solo les presento el ejecutable del juego y una ves que termine el juego lo pondré todo el proyecto para su descarga.
Hasta el momento al juego se puede cargar un máximo de 300 palabras x dificultad. Para agregar nuevas palabras al juego se puede hacer de 2 maneras:
1- Manualmente abriendo cada uno de los fichero y pegando las palabras.
2- Automaticamente con la herramienta que he añadido al estilo drag and drop (arrastrar y soltar)
solo tienes que crear o copiar un archivo de texto en la carpeta files y el programa agregara
las palabras al cada uno de los ficheros de dificultad dependiendo de la longitud de cada
palabra.
Capturas:
Descarga el juego y el proyecto desde aquí.
Mostrando entradas con la etiqueta ahorcado. Mostrar todas las entradas
Mostrando entradas con la etiqueta ahorcado. Mostrar todas las entradas
viernes, 9 de agosto de 2013
martes, 16 de julio de 2013
Juego del Ahorcado en C
Bueno amig@s en esta ocasion les traigo uno de los juegos mas populares que podemos encontrar como lo es el juego del ahorcado en lenguaje C.
Funciones del juego:
- Permite seleccionar entre 3 categorías de palabras (Animales, Países, Difíciles).
- Podemos ingresar nuevas palabras o utilizar las que ya están guardadas.
- Muestra el numero de oportunidades restantes.
- Podemos volver a jugar nuevamente en una categoría distinta si lo deseamos.
Capturas:
Código:
Ahorcado.c
Funciones del juego:
- Permite seleccionar entre 3 categorías de palabras (Animales, Países, Difíciles).
- Podemos ingresar nuevas palabras o utilizar las que ya están guardadas.
- Muestra el numero de oportunidades restantes.
- Podemos volver a jugar nuevamente en una categoría distinta si lo deseamos.
Capturas:
Código:
Ahorcado.c
/*Version 1.0.1*/ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #include<time.h> #include<windows.h> #include<math.h> #include<ctype.h> //Prototipo de funciones void menu(); void carga(); void animales(); void paises(); void dificiles(); void juego(char palabra[50][20], int n); void rotulo(int e); void pieder(); void pieizq(); void made(); void maiz(); void base(); void cuerpo(); void cabeza(); void gotoxy(short x, short y); //Funcion principal se encarga de llamar a la funciones carga y menu int main(){ carga();//llamada de la funcion "carga" menu();//llamada de la funcion "menu" system("pause"); return 0; }// Termina la funcion principal void carga(){//funcion encargada de de mostrar la barra de carga del programa int c, m=6; system("cls"); system("color 48"); gotoxy (30,5);printf("Cargando......"); Sleep(200); for(c=15;c<=75; c++){ m++; gotoxy (m,10); printf("%c",219); gotoxy(6,15);printf("\n\n\n\n\n\tAHORCADO V 1.0.0 "); Sleep(100); } printf("\a");system("cls"); } void menu(){ char op; do{//imprime el menu principal varias veces hasta que sea necesareo system("cls"); gotoxy (30,1); printf ("JUEGO DEL AHORCADO"); gotoxy (30,4); printf("Seleccione Categoria");fflush(stdin); gotoxy (30,6); printf("1.Animales"); gotoxy (30,8); printf("2.Paises"); gotoxy (30,10); printf("3.Dificiles"); gotoxy (30,12); printf("4.Salir"); gotoxy (30,14); printf("Ingrese opcion: "); scanf("%c",&op); }while(op<'1'||op>'4');//evalua los datos ingresados por el usuario switch(op){//seleeciona el caso ingresado por el usuario case '1': animales();break;// llamado a la funcion animales case '2': paises();break;// llamado a la funcion paises case '3': dificiles();break;// llamado a la funcion dificiles case '4':printf("\n\nGracias por utilizar nuestro programa.....\n\n");break; } } void animales(){ char palabra[50][20]={"murcielago","tiburon","perro","chancho","gato","cerdo","gallina","elefante","vaca","serpiente","mono","rata"}; //asignacion de palabras a una lista int n=0, i; char op; fflush(stdin); do{// muestra el menu si no se cumple la condicion fflush(stdin); system("cls"); gotoxy (30,1); printf("CATEGORIA NOMBRE DE ANIMALES"); gotoxy (30,4); printf("1.Ingresar nueva palabra"); gotoxy (30,6); printf("2.Jugar con lista existente"); gotoxy (30,8); printf("3.Retornar al menu principal"); gotoxy (30,10); printf(" Ingrese opcion: "); scanf("%c",&op); }while(op<'1'||op>'3');//evaluacion de las datos ingresados por el usuario switch(op){ case'1':// añade mas palabras a la lista do{ system("cls"); printf("\n Digite cantidad de palabras: "); scanf("%d",&n);//captura el numero de palabras }while(n<0); for(i=3;i<=n+2;i++) {fflush(stdin); system("cls"); printf("\n Ingrese palabra: "); gets(palabra[i]);//captura la palabra y la almacena en la pocision i de la lista } juego(palabra,n);break;//llamado a la funcion juego y la manda la lista modificada case'2':juego(palabra,n);break;//llama al funcion juego y le manda la lista con las palabras asignadas case'3':menu();break;// llama a la funcion menu } } void paises(){ char palabra[50][20]={"afganistan","japon","alemania","cuba","venezuela","alemania","peru","paraguay","turquia","checoslovaquia","suriname","banladesh","africa"}; //asignacion de palabras a una lista int n=0, i; char op; do{// muestra el menu si no se cumple la condicion fflush(stdin); system("cls"); gotoxy (30,1); printf("CATEGORIA NOMBRE DE PAISES "); gotoxy (30,4); printf("1.Ingresar nueva palabra"); gotoxy (30,6); printf("2.Jugar con lista existente"); gotoxy (30,8); printf("3.Retornar al menu principal"); gotoxy (30,10); printf(" Ingrese opcion: "); scanf("%c",&op); }while(op<'1'||op>'3');//evalua los datos imgresados por el usuario switch(op){ case'1':// añade mas palabras a la lista do{system("cls"); printf("\n Digite cantidad de palabras: "); scanf("%d",&n);//captura el numero de palabras }while(n<0); for(i=3;i<=n+2;i++){fflush(stdin); system("cls"); printf("\n Ingrese palabra: "); gets(palabra[i]);//captura la palabra y la almacena en la pocision i de la lista } juego(palabra,n);break;//llamado a la funcion juego y la manda la lista modificada case'2':juego(palabra,n);break;//llama al funcion juego y le manda la lista con las palabras asignadas case'3':menu();break;// llama a la funcion menu } } void dificiles(){ char palabra[50][20]={"hidraulica","clorhidrato","electrostatica","miercoles","computadora","musica","nada","sandia","puta","mundo","ahorcado","teclado","palabra"}; //asignacion de palabras a una lista int n=0, i; char op; do{ // muestra el menu si no se cumple la condicion fflush(stdin); system("cls"); gotoxy (30,1); printf("CATEGORIA PALABRAS DIFICILES"); gotoxy (30,4); printf("1.Ingresar nueva palabra"); gotoxy (30,6); printf("2.Jugar con lista existente"); gotoxy (30,8); printf("3.Retornar al menu principal"); gotoxy (30,10); printf(" Ingrese opcion: "); scanf("%c",&op); }while(op<'1'||op>'3');//evaluacion de las datos ingresados por el usuario switch(op){ case'1'://añade mas palabras a la lista do{system("cls"); printf("\n Digite cantidad de palabras: "); scanf("%d",&n);//captura el numero de palabras }while(n<0); for(i=3;i<=n+2;i++) {fflush(stdin); system("cls"); printf("\n Ingrese palabra: "); gets(palabra[i]);//captura la palabra y la almacena en la pocision i de la lista } juego(palabra,n);break;//llamado a la funcion juego y la manda la lista modificada case'2':juego(palabra,n);break;//llamado a la funcion juego y la manda la lista modificada case'3':menu();break;// llama a la funcion menu } } void juego(char palabra[50][20], int n){ int contador,longitud,i,j, e,error, m=13; char palabras[30], respuesta[30], letra, res, res1; do{system("cls"); gotoxy (30,1); printf ("JUEGO DEL AHORCADO"); base();//lama a la funcion base rotulo(0);//llama ala funcion rotulo para ver el numero de oportunidades restantes srand (time (NULL)); longitud=rand()%(m+n);//genera un numero aleatorio y lo almacena en la variable longitud e=0; contador=0; strcpy(palabras,palabra[longitud]);//copia en la variable una variable de la lista longitud=strlen(palabras);//se obtiene el tamaño de la palabra y se almacena en longitud gotoxy(4,30); for (i=0; i<longitud ; i++){fflush(stdin); respuesta[i]='*';//se almacena * en un vector printf (" %c ", respuesta[i]);// se imprime * en el lugar de las letras } do{ fflush (stdin); gotoxy (4,32); printf ("Ingrese una letra: "); scanf ("%c", &letra);//captura una letra letra=tolower(letra);//convierte unna letra mayuscula en minuscula gotoxy (21,32);printf(" "); error=0;//se inicializa en 0 gotoxy(4,30); for(j=0; j<longitud; j++) { if (letra==palabras[j]){/*compara si la letra ingresada por el usuario corresponde a una posicion de la palabra*/ if(letra!=respuesta[j]){ respuesta[j]=letra;// la susttituye por el * contador++;//aumenta contador en uno } } else{ error++;//aumenta error en uno } printf (" %c ", respuesta[j]);//imprime la letra correcta } if(error==longitud){//entra si la letra ingresada no corresponde a ninguna de la palabra a adivinar e++;//segun la cantidad de letras erroneas aumenta en 1 } rotulo(e);//llama ala funcien rotunlo y le envia e switch (e){//segun nel numero de errores selecciona un caso case 1:cabeza();break;//llama a la funcion que dibuja la cabeza case 2:cuerpo();break;//llama a la funcion que dibuja el cuerpo case 3:made();break;//llama a la funcion que dibuja la mano derecha case 4:maiz();break;//llama a la funcion que dibuja la mano izquierda case 5:pieizq();break;//llama a la funcion que dibuja la piena izquierda case 6:pieder();break;//llama a la funcion que dibuja la piena derecha } }while(contador<longitud && e<6); if(e==6){//entra si ninguna de las letras corresponden ala palabra o se cometieron 6 errores gotoxy(4,32);printf ("Lo siento, Usted ha perdido. \n Presione una tecla para ver la respuesta correcta"); getch();gotoxy(4,30); for(j=0; j<longitud; j++){ printf (" %c ", palabras[j]);//imprime la palabra } } if(contador==longitud){//entra si todas las letras ingresadas corresponden a la palabra o se cometieron menos de 6 errores if(e==0){//si no se cometio ningun error gotoxy(4,32);printf ("Felicidades, Usted ha ganado sin cometer ningun error"); } else{//si se cometirooon pocos errores gotoxy(4,32);printf ("Felicidades, Usted ha ganado, con %d intentos fallidos", e); } } fflush(stdin); gotoxy(4,35);printf ("Precione S para continuar la misma categoria.... "); scanf("%s",&res);fflush(stdin); }while(res=='S' || res=='s');//si el caracter ingresado es S repite el juego gotoxy(4,37);printf ("Precione N para cambiar de categoria.... "); scanf("%s",&res1); if(res1!='N' || res1!='n'){// si el caracter ingresado es N cambia de categoria menu(); } else{ printf("\n Gracias por usar nuestro programa......"); } } /*funcion que muestra el rotulo en donde menciona el numero de oportunidades que quedan*/ void rotulo(int e){ int f=0; f=6-e; gotoxy (40,3); printf(" _____________________________"); gotoxy (40,4); printf("| |"); gotoxy (40,5); printf("| Usted tiene %d |",f); gotoxy (40,6); printf("| Oportunidades |"); gotoxy (40,7); printf("|_____________________________|"); } //Funcion que imprime la mano derecha void made( void){ int j; for(j=0;j<3;j++){ gotoxy(19-j,10+j); printf("*"); } } //Funcion que imprime la mano izquierda void maiz(void){ int i; for(i=0;i<3;i++) { gotoxy(23-i,12-i); printf("*"); } } // funcion que imprime el cuerpo void cuerpo(){ int i; for(i=0;i<9;i++) { gotoxy(20,9+i); printf("*"); } } //funcion que imprime la horca void base(){ int x,y; system("mode 80"); for(x=2;x<=27;x++){ gotoxy(10,x);printf("*"); } for(y=11;y<=20;y++){ gotoxy(y,2);printf("*"); } for(y=5;y<=15;y++){ gotoxy(y,28);printf("*"); } gotoxy(20,3);printf("*"); gotoxy(20,4);printf("*"); } //Funcion que imprime la pierna izquierda void pieizq(void){ int i; for(i=0;i<3;i++) { gotoxy(21+i,18+i); printf("*"); } } //Funcion que imprime la pierna derecha void pieder(void){ int i; for(i=0;i<3;i++) { gotoxy(19-i,18+i); printf("*"); } } //Funcion que imprime la cabeza void cabeza(){ int i,j; for(i=0;i<5;i++){ gotoxy(18+i,4); printf("*"); gotoxy(18+i,8); printf("*"); } gotoxy(19,5); //////////////////// for(j=0;j<3;j++){ gotoxy(18,5+j); printf("*"); gotoxy(22,5+j); printf("*"); } } // funcio goto x y void gotoxy(short x, short y) { HANDLE hConsoleOutput; COORD Cursor_Pos = {x, y}; hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hConsoleOutput, Cursor_Pos); }puedes descargar el proyecto desde aquí.
Etiquetas:
ahorcado
,
c
,
juego
,
programacion I
Suscribirse a:
Entradas
(
Atom
)