• Miércoles 6 de Noviembre de 2024, 06:30

Autor Tema:  Re: Ahorcadito  (Leído 1988 veces)

gjbotero

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Ahorcadito
« en: Viernes 20 de Septiembre de 2002, 00:20 »
0
Mi problema es el siguiente:
Estoy haciendo el juego del ahorcado, el usuario gana el juego cuando completa las 20 palabras de la serie.

pero al utilizar la variable y para comparar la palabra con la respuesta, que supuestamente me debe dar cero y asi continuar con la siguiente palabra, no funciona:

y=strcmp(palabra,respuesta);

if(y==0)

Que puedo hacer para solucionarlo.

Un millon de gracias a quien me pueda ayudar.

Coloco el codigo fuente para que lo vean mejor.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Wicked

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Ahorcadito
« Respuesta #1 en: Viernes 20 de Septiembre de 2002, 18:52 »
0
Hola yo tambien e realizado ese programa (aunque en graficos) y pues a lo mejor te puedo orientar

El problema era en un ciclo while de la funcion juego que no lo cerrabas adecuadamenta y ademas te faltaba el contador de malas=malas +1 para que se ciclara correctamente. Ya con eso con el strcmp si las letra conciden exactamente le dara a "y" el valor de 0 y entrara al siguiente if.

aqui te dejo tu codigo con el pequeño cambio que le hice.

void juego(void)
{
      inicio:
      clrscr();
      elegir();
      imprime();
      int esta=0, y, i=0;
      int malas=0,k=0;
      respuesta=NULL;
      _setcursortype(_NOCURSOR);  /*para que no aparezca el cursor*/
      while(malas<=7)
      {
      int j=0,esta = 0;
      gotoxy(12,24);
         cprintf("digite la letra: ");
      letra = toupper(getche());   /*CON ESTA FUNCION NO SE ADMITEN NUMEROS*/
      for(i=0; i<longitud;i++)
       {
      if(letra==palabra)
          {
         j=i+1;
         gotoxy((80-longitud)/2 + (j*2)-2, 20);
         printf("%c",letra);
         respuesta=letra;
         esta=1;
           }
        }
        malas++;  // mas que malas serian las oportunidades que tiene
       }  //el ciclo se repite hasta que haya tenido 7 oportunidades malas
   y=strcmp(palabra,respuesta);
     gotoxy(22,1);
     cprintf("%d",respuesta);
     gotoxy(22,3);
     cprintf("%d",y);
     getch();


    if(y==0)
     {
      gotoxy(32,20);
      printf("C  O  R  R  E  C  T  O");
       strcpy(buenas,palabra); //aqui guardamos en buenas la palabra que ya completo
       clrscr();
       goto inicio;
       getch();
       /*if(serie == 20)
       {
      gotoxy(32,24);
         printf("YA GANO TODA LA SERIE");
       }
       /*else
       {
       menu();
       } */

    }
     if(esta==0)
     {
        malas++;
        gotoxy(k+1,1);
        cprintf("%c", letra);
        k+=2;
     }


}

Como veo que no esta completo tu programa y si te surge algun inconveniente y si te puedo colaborar decimelo que por aqui andare.

Arleko

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
    • http://www.mundoarleko.vze.com
Ahorcadito
« Respuesta #2 en: Lunes 11 de Noviembre de 2002, 07:15 »
0
/*TE INVITO A QUE VEAS ESTE PROGRAMA  TAL VES TE FUNCIONE */

#include <stdio.h>               /*LIBRERIA POR DEFAULT*/
#include <stdlib.h>              /*LIBRERIA PARA MANEJAR EL RANDOM*/
#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*/

char palabras[10][10];           /*ARREGLO DONDE GUARDO LOS NOMBRES*/
char palabra[10],respuesta[10];  /*VARIABLE DONDE IRE ALMACENANDO LAS
LETRAS*/
char letra,opc,catego;                  /*VARIABLE QUE ALMACENO LA
LETRA*/

int i,j,y,elegida,longitud,opor,a;

int presenta(void);
int categoria(void);
int elegir(int);
int imprime(void);

void main(void)
{

presenta();
do{
    categoria();
    textbackground(BLUE);  /*COLOR DE FONDO AZUL*/
    textcolor(WHITE);      /*COLOR DE LETRA BLANCO*/
    clrscr();              /*LIMPIO PANTALLA*/

    switch(catego){
    case '1':
    gotoxy(1,1);printf("CATEGORIA:FRUTAS");
    break;
    case '2':
    gotoxy(1,1);printf("CATEGORIA:DEPORTES");
    break;
    case '3':
    gotoxy(1,1);printf("CATEGORIA:PAISES");
    break;
    }

    i=j=y=elegida=longitud=opor=a=0;   /*INICIALIZO LAS VARIABLES CON
CERO*/

   for(i=0;i<10;i++)
   {
       respuesta=NULL;        /*CON ESTE FOR LIMPIO LA CADENA*/
   }

   /*DESPLIEGO JUEGO DEL AHORCADO*/
   gotoxy(32,1);
   printf("JUEGO DEL AHORCADO");

   /*ESTE FOR DESPLIEGA EL ALFABETO*/
   for(i=0;i<26;i++)
   {
      gotoxy(i*2+18,4);
      printf("%c",65+i);
   }


       /*ESTA FUNCION CARGA LOS NOMBRES AL ARREGLO*/


       /*ESTA FUNCION ELIGE UN NUMERO ALEATORIO PARA ESCOGER UNA
PALABRA*/
       randomize();
       j=random(9);

       /*FUNCION QUE ELIGE ALEATORIAMENTE LA PALABRA*/
       elegir(j);
       longitud=strlen(palabra);
       imprime();


   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=>>");

          do{
        letra=toupper(getch());     /*CON ESTE DO NO ADMITO
NUMEROS*/
     }while(!isalpha(letra) );

     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);
      printf("C  O  R  R  E  C  T  O");
           }


      opor++;
   }while(opor<20 && y!=0);

    if(opor==20)
    {
       gotoxy(26,23);
       textcolor(RED);
       cprintf("**INCORRECTO LA PALABRA ERA** %s",palabra);
    }


    gotoxy(28,25);
    printf("¨DESEA VOLVER A JUGAR[S/N]=>>?");

    do{
      opc=toupper(getch());
    }while(opc!='S' && opc!='N');

}while(opc!='N');

   presenta();
   clrscr();
   exit(1);
   return;

}



cargarfrutas()
{

  strcpy(palabras[0],"MANZANA");
  strcpy(palabras[1],"NARANJA");
  strcpy(palabras[2],"SANDIA");
  strcpy(palabras[3],"FRESA");
  strcpy(palabras[4],"TORONJA");
  strcpy(palabras[5],"MANGO");
  strcpy(palabras[6],"PLATANO");
  strcpy(palabras[7],"UVAS");
  strcpy(palabras[8],"GUAYABA");
  strcpy(palabras[9],"CIRUELA");
  return 0;

}


elegir(int pal)
{
  strcpy(palabra,palabras[pal]);
  return 0;


}

imprime()
{
 for(i=1;i<=longitud;i++){
    gotoxy(15+i*4+14,20);printf("_");
    }
    return 0;
}


presenta()
{


   textbackground(CYAN);
   textcolor(WHITE);
   clrscr();
   gotoxy(25,12);
   cprintf("JUEGO DEL AHORCADO 2-NOV-2000");
   gotoxy(30,13);
   cprintf("ESPERA UN MOMENTO...");
   delay(2000);
   return 0;



}

cargardeportes()
{
  strcpy(palabras[0],"FUTBOL");
  strcpy(palabras[1],"BASEBALL");
  strcpy(palabras[2],"GOLF");
  strcpy(palabras[3],"TENNIS");
  strcpy(palabras[4],"GIMNASIA");
  strcpy(palabras[5],"PINPON");
  strcpy(palabras[6],"SOCCER");
  strcpy(palabras[7],"NATACION");
  strcpy(palabras[8],"MARATON");
  strcpy(palabras[9],"CICLISMO");
  return 0;

}

cargarpaises()
{
strcpy(palabras[0],"JAPON");
  strcpy(palabras[1],"COREA");
  strcpy(palabras[2],"FRANCIA");
  strcpy(palabras[3],"ITALIA");
  strcpy(palabras[4],"MEXICO");
  strcpy(palabras[5],"CANADA");
  strcpy(palabras[6],"USA");
  strcpy(palabras[7],"ARGENTINA");
  strcpy(palabras[8],"BRASIL");
  strcpy(palabras[9],"PARAGUAY");
  return 0;




}


categoria()
{
  textbackground(RED);
  textcolor(WHITE);
  clrscr();
  gotoxy(25,1);
  cprintf("***C A T E G O R I A S***");
  gotoxy(30,5);
  cprintf("1.-F R U T A S");
  gotoxy(30,8);
  cprintf("2.-D E P O R T E S");
  gotoxy(30,11);
  cprintf("3.-P A I S E S");
  gotoxy(30,15);
  cprintf("ELIGE TU OPCION=>>");

  do{
    catego=getch();
  }while(catego!='1' && catego!='2' && catego!='3');

  switch(catego){
   case '1':cargarfrutas();
   break;
   case '2':cargardeportes();
   break;
   case '3':cargarpaises();
   break;
   }
   return 0;
}


TU AMIGO: