SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: gjbotero en Viernes 20 de Septiembre de 2002, 00:20
-
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.
-
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.
-
/*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: