[ Foro de C ]
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 |");
}
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.)