[ Foro de C ]

ayuda con mi programa en C (ahorcado)

06-Nov-2019 02:41
ian piñones
1 Respuestas

Hola buenas soy nuevo en este foro y requiero de su ayuda, bueno estoy haciendo un programa en c sobre el ahorcado y tengo un problema el programa me compila pero no corre nada, lo dejo aca para que me pudieran ayudar y decirme en que falle. gracias de antemano.


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include"dibujos.h"


//Funciones

void palabras();
void juego(char palabra[50][20], int n);
void oportunidades(int e);
void PiernaDerecha();
void BrazoDerecho();
void BrazoIzquierdo();
void Tronco();
void Cabeza();
void SinAhorcado();

 void palabras(){

char palabras[50][20]={"arbol","rey","perro","lluvia","gato","avion","mano","plato","argentina","vehiculo","cohete","helicoptero","primavera","invierno","soledad","hidraulica","electronica","electrostatica","esdrujula","hipopotamo","probiotico","antibioticos"};
int n=0, i;
 char op;
 fflush(stdin);
}
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");
    printf("\n                               JUEGO DEL AHORCADO");
    printf("\n                               ==================");
  oportunidades(0);
  longitud=rand()%(m+n);
  e=0;
  contador=0;
  strcpy(palabras,palabra[longitud]);
  longitud=strlen(palabras);
  for (i=0; i<longitud ; i++){fflush(stdin);
   respuesta[i]='-';
   printf (" %c ", respuesta[i]);
  }

  do{
   fflush (stdin);
   printf ("Ingrese una letra: ");
   scanf ("%c", &letra);
   letra=tolower(letra);
   printf("     ");
   error=0;

   for(j=0; j<longitud; j++)  {
    if (letra==palabras[j]){
     if(letra!=respuesta[j]){
      respuesta[j]=letra;
      contador++;
     }
    }
    else{
     error++;
    }
    printf (" %c ", respuesta[j]);
   }
   if(error==longitud){
    e++;
   }
   oportunidades(e);
     switch (e){//segun el numero de errores selecciona un caso
      case 0:SinAhorcado();break;
      case 1:Cabeza();break;
      case 2:Tronco();break;
      case 3:BrazoDerecho();break;
      case 4:BrazoIzquierdo();break;
      case 5:PiernaIzquierda();break;
      case 6:PiernaDerecha();break;
     }
  }while(contador<longitud && e<6);

  if(e==6){//entra si ninguna de las letras corresponden a la palabra o se cometieron 6 errores
    printf("\n");
    printf("\n           XXXXX XXXXX XXXXX XXXX  XXXXX  XXXX XXXXX XXXXX  X  X  X ");
    printf("\n           X   X X     X   X X   X   X   X       X   X      X  X  X ");
    printf("\n           XXXXX XXX   XXXX  X   X   X   XXXXX   X   XXX    X  X  X ");
    printf("\n           X     X     X XX  X   X   X       X   X   X              ");
    printf("\n           X     XXXXX X   X XXXX  XXXXX XXXX    X   XXXXX  X  X  X ");
    printf("\n\nPresione una tecla para ver la palabra secreta");
   for(j=0; j<longitud; j++){
    printf (" %c ", palabras[j]);
   }
  }
  if(contador==longitud){

   if(e==0){//si no se cometio ningun error
                 printf("\n");
                 printf("\n              XXXXX XXXXX X   X XXXXX XXXXX XXXXX XXXXX  X  X  X ");
                 printf("\n              X     X   X XX  X X   X X       X   X      X  X  X ");
                 printf("\n              X  XX XXXXX X X X XXXXX XXXXX   X   XXX    X  X  X ");
                 printf("\n              X   X X   X X  XX X   X     X   X   X              ");
                 printf("\n              XXXXX X   X X   X X   X XXXXX   X   XXXXX  X  X  X ");
   }
   else{//si se cometieron pocos errores
    printf("\n");
                     printf("\n              XXXXX XXXXX X   X XXXXX XXXXX XXXXX XXXXX  X  X  X ");
                     printf("\n              X     X   X XX  X X   X X       X   X      X  X  X ");
                     printf("\n              X  XX XXXXX X X X XXXXX XXXXX   X   XXX    X  X  X ");
                     printf("\n              X   X X   X X  XX X   X     X   X   X              ");
                     printf("\n              XXXXX X   X X   X X   X XXXXX   X   XXXXX  X  X  X ");
                     printf("\n              ---------------------------------------------------");
                     printf("\n              Con %d intentos fallidos", e);
   }
  }
fflush(stdin);
  printf ("\n\n\n\n\n\n\n\n\n\n\n\nDesea continuar en la misma categoria S/N....  ");
  scanf("%s",&res);fflush(stdin);
 }while(res=='S' || res=='s');
 printf ("\nDesea volver a jugar S/N....  ");
 scanf("%s",&res);
 if(res=='S' || res=='s'){

  }
  else{
  printf("\n Gracias por jugar al ahorcado......");
 }
}

void oportunidades(int e){
 int f=0;
 f=6-e;
  printf("|    Usted tiene   %d          |",f);
  printf("|    Oportunidades            |");
}


 


06-Nov-2019 10:32
Nacho Cabanes (+83)

No se puede probar, porque no existen en tu programa las funciones como "void palabras();", que imagino que serán parte de "dibujo.h".

Aun así, si no sabes usar el depurador que incluya tu herramienta de programación, puedes optar por añadir órdenes "printf" adicionales que te muestren el valor de las variables en momentos clave, por ejemplo después de comprobar si una letra es parte de la cadena que estás comparando.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)