Programación General > C/C++
Re: Ahorcado para 2 jugadores...
Geo:
xorio: ¿qué compilador usaste para crear el ejecutable de tu juego? es que no pude compilarlo con el mingw, voy a ver con el TurboC, pero igual me dices y me la pones más fácil;)
davidrj:
Hola.
Esta muy bueno el programita, pero bueno hay una serie de problemas que son faciles de ver a simple vista, el primero es que procure no usar VARIABLES GLOBALES, esto es un serio problema a la hora de hacer un programa medianamente grande (500 lineas de codigo). No deberia usar arrays sino seria mejor usar apuntadores, con esto no desperdiciaria espacio en memoria. Y por ultimo no me gusto para nada lo de introdicir la palabra (mi novia es una tramposa y se que mirara) asi que es mucho mejor usar la funcion getpass("...").
si quiere luego coloco las pequeñas mejoras en este mismo lugar.
Pero el programa le quedo bien.
Adios:)
gmantil:
Le he hecho algunas modificaciones a tu programa. Entre algunas cosas, convertí todas las variables a local con paso por parámetros. Lo modularicé, sin cambiar la esencia de lo que estaba hecho y le quite los retornos innecesarios.
Mientras mas modular sea un programa es mas fácil entenderlo y corregirlo. Además, la programación estructurada mientras sea mas modular, es mas fácil de pasar a objetos, hacia donde debe tender la programación.
Aún se pueden hacer mas mejoras pero esta es un comienzo,para aquellas personas que quieren ir avanzando y mejorando su forma de programar.
Espero os sirva.
Suerte,
gmantil
Está versión fue compilada en Turbo C 2.01.
#include <stdio.h> /*LIBRERIA STANDAR*/
#include <stdlib.h> /*LIBRERIA PARA MANEJAR EL EXIT*/
#include <ctype.h> /*LIBRERIA PARA MANEJAR EL ISALPHA*/
#include <conio.h> /*LIBRERIA DE GRAFICOS*/
#include <string.h> /*LIBRERIA PARA MANEJAR EL STRLEN*/
#include <dos.h> /*LIBRERIA PARA MANEJAR EL DELAY (PAGINA DE PRESENTACIÓN
Y DESPEDIDA*/
void imprime(int longitud);
void presenta(void);
void presenta2(void);
void alfabeto(void);
void captura(char *palabra);
void compara(int longitud,char *palabra,char *respuesta,int *opor);
void ahorcado(char *palabra);
void main(void)
{
char palabra[80],respuesta[80]; /*VARIABLE DONDE IRE ALMACENANDO LAS LETRAS*/
char letra,opc; /*VARIABLE QUE ALMACENO LA LETRA*/
int i,j,longitud,opor;
presenta();
clrscr(); /*LIMPIO PANTALLA*/
do{
textbackground(BLUE); /*COLOR DE FONDO AZUL*/
textcolor(WHITE); /*COLOR DE LETRA BLANCO*/
i=longitud=opor=0; /*INICIALIZO LAS VARIABLES CON CERO*/
for(i=0;i<10;i++)
{
respuesta=NULL; /*CON ESTE FOR LIMPIO LA CADENA*/
}
/*-------------DESPLIEGO EL JUEGO DEL AHORCADO----------------------*/
clrscr();
gotoxy(32,1);
cprintf("JUEGO DEL AHORCADO");
/*AQUI DESPLIEGA EL ALFABETO*/
alfabeto();
/*AQUI CAPTURA LA PALABRA*/
captura(palabra);
/*---------------AQUI ES LA PANTALLA PARA ADIVINAR LA PALABRA------------*/
clrscr();
gotoxy(32,1);
cprintf("JUEGO DEL AHORCADO");
/*AQUI DESPLIEGA EL ALFABETO*/
alfabeto();
longitud=strlen(palabra);
imprime(longitud);
/* COMPARA LA PALABRA DADA CON LAS LETRAS A ADIVINAR */
compara(longitud,palabra,respuesta,&opor);
/* MUESTRA EL AHORCADO */
if (opor==20)
ahorcado(palabra);
textcolor(RED);
gotoxy(28,23);
cprintf("¨DESEAS VOLVER A JUGAR? [S/N]");
do{
opc=toupper(getch());
} while(opc!='S' && opc!='N');
}while(opc!='N'); /**FIN DEL PRIMER DO**/
presenta2();
clrscr();
exit(1);
}/** FIN DEL main **/
/*ESTE MODULO DESPLIEGA EL ALFABETO*/
void alfabeto(void)
{
int i;
for(i=0;i<26;i++)
{
gotoxy(i*2+18,4);
cprintf("%c",65+i);
}
}
/* MODULO QUE CAPTURA LA PALABRA */
void captura(char *palabra)
{
gotoxy(25,10);
cprintf("I N T R O D U C E U N A P A L A B R A");
gotoxy(30,14);
gets(palabra);
}
/* COMPARA LA PALABRA DADA CON LAS LETRAS A ADIVINAR */
void compara(int longitud,char *palabra,char *respuesta,int *opor)
{
int i,y=0;
char letra;
do{
gotoxy(25,9);
printf("A D I V I N A L A P A L A B R A");
gotoxy(28,12);
printf("E L I G E L A L E T R A=>>");
letra=getch(); /*CON ESTE DO NO ADMITO NUMEROS*/
gotoxy(10+(*opor)*3,22);
printf("%c",letra);
gotoxy(25,15);
printf("MAXIMO 20 INTENTOS. INTENTO[%d]",(*opor)+1);
for(i=0;i<longitud;i++)
{
if(letra==palabra)
{
gotoxy(15+i*4+18,19);
printf("%c",letra);
respuesta=letra;
}
}
y=strcmp(palabra,respuesta);
if(y==0)
{
gotoxy(32,23);
{
textcolor(YELLOW);
cprintf("C O R R E C T O");
}
}
(*opor)++;
} while((*opor)<20 && y!=0);
}
/* MUESTRA EL AHORCADO */
void ahorcado(char *palabra)
{
clrscr();
gotoxy(26,13);
textcolor(RED);
cprintf(" A H O R C A D O ! ! !");
{
textcolor(YELLOW);
gotoxy(28,16);
cprintf("LA PALABRA CORRECTA ES: %s",palabra);
{
textcolor(BROWN);
gotoxy(36,5);
cprintf("ßßßßßßß");
gotoxy(38,6);
cprintf("³ ²");
gotoxy(38,7);
cprintf(" ²");
gotoxy(36,8);
cprintf("--³-- ²");
gotoxy(38,9);
cprintf("³ ²");
gotoxy(38,10);
cprintf("^ ²");
gotoxy(37,11);
cprintf("/ ²");
}
}
}
void presenta()
{
textbackground(BLACK);
textcolor(GREEN);
clrscr();
gotoxy(20,1);
cprintf("U N I V E R S I D A D D E L E à N");
gotoxy(25,8);
cprintf("CARLOS ISRAEL NEGRETE ROJAS");
gotoxy(31,9);
cprintf("MAT. 17029");
gotoxy(33,11);
cprintf("PRESENTA");
gotoxy(26,13);
cprintf("EL JUEGO DEL AHORCADO 2K2");
{
textbackground(BLUE);
textcolor(YELLOW);
gotoxy(1,25);
cprintf("ESPERA UN MOMENTO...");
}
delay(8000);
}
void presenta2()
{
textbackground(BLACK);
textcolor(GREEN);
clrscr();
gotoxy(20,1);
cprintf("U N I V E R S I D A D D E L E à N");
gotoxy(25,8);
cprintf("CARLOS ISRAEL NEGRETE ROJAS");
gotoxy(31,9);
cprintf("MAT. 17029");
gotoxy(33,11);
cprintf("PRESENTà");
gotoxy(26,13);
cprintf("EL JUEGO DEL AHORCADO 2K2");
{
textbackground(BLUE);
textcolor(YELLOW);
gotoxy(1,25);
cprintf("GRACIAS POR JUGAR...");
}
delay(8000);
}
void imprime(int longitud)
{
int i;
for(i=1;i<=longitud;i++)
{
gotoxy(15+i*4+14,20);printf("_");
}
}
xorionx2k2:
Que bueno que todos nos pongamos a trabajar en equipo, asi podremos ir mejorando los programas.
Obiamente como podran observar, soy un principiante en programación, todavia no se utilizar puntadores y ese tipo de cosas, pero ahí la llevo, poco a poco y con la ayuda de vosotros.
Geo:
xorio: ¿qué compilador usaste para crear el ejecutable de tu juego? es que no pude compilarlo con el mingw, voy a ver con el TurboC, pero igual me dices y me la pones más fácil;)
Utilice el Borland C++ ver. 3.1, a ver si te sirve de algo;).
Se siguen aceptando comentarios!!!:D;)B)
xorionx2k2:
Para el compañero desorden:
Si me hubieras pasado tu codigo cuando lo solicite, te hubiera puesto un altar de dios en programacón!!!:P
La verdad que esta muy sencillo y muy bueno tu codigo, pero estoy casi seguro de que el profesor se hubiera dado cuenta de que yo no lo hubiera hecho...
Exelente de todas formas!!!
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa