Programación General > C/C++

 Re: Ahorcado para 2 jugadores...

<< < (2/4) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa