ayuda con ahorcado en C

dani
22 de Julio del 2010
corregidmelo por favor, que funcione. gracias de antemano.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

void main()
{

FILE *fichero;

char palabra[20];
char letra=0;
int repetir=1, pal=0, reg=0, cont=0;

srand(time(NULL));

while(repetir==1)
{
char op;
clrscr();
printf(\"\\n\\n ···EL JUEGO DEL AHORCADO··· \");

printf(\"\\n\\n\\n\");
printf(\"\\n\\nELIJA OPCION:\");
printf(\"\\n\\n 1.- Ingresar nombres\");
printf(\"\\n\\n 2.- Jugar ahorcado\");
printf(\"\\n\\n\");
printf(\"\\n\\n 0.- Salir\");
op=getch();
switch(op)
{
case \'1\':
if ((fichero = fopen( \"ahorcado.txt\", \"a+\" ))==NULL)
{
clrscr();
printf(\"Error de lectura...\");
return;
}
else
{
clrscr();
printf (\"\\nPor favor introduzca palabra (fin para salir): \");
gets(palabra);
while((strcmp(palabra,\"fin\"))!=0)
{
strcat(palabra,\",\");
fputs(palabra, fichero);
clrscr();
printf (\"\\nPor favor introduzca palabra (fin para salir): \");
gets(palabra);
}
fclose(fichero);
}
break;
case \'2\':
if ((fichero = fopen( \"ahorcado.txt\", \"r\" ))==NULL)
{
clrscr();
printf(\"\\n\\n\\tNo puedo abrirlo, debe tener una palabra \");
printf(\"como minimo para jugar.\");
getch();
break;
}
else
{
pal=0;
do{
letra=fgetc(fichero);
if (letra==\',\') pal++;
}while(letra!=EOF);

reg = rand()% pal + 1;

pal=0, cont=0;
do{
letra=fgetc(fichero);
if (letra==\',\') pal++;
if (pal==reg-1)
{
palabra[cont]=letra;
cont++;
}
}while(letra!=EOF);

fclose(fichero);
}

clrscr(); printf(\"%s\",palabra); getch();

break;

case \'0\':
repetir=0;
break;

default:
clrscr();
printf(\"\\n\\nERROR: OPCION NO DISPONIBLE\");
getch();
}
}
clrscr();
printf(\"ADIOS.\");
}

Mahareth
27 de Julio del 2010
bueno mira yo te puedo dar este ahorcado espero te sirva saludos.

#include <stdio.h>
#include <string.h>

int main()
{
char letrasusadas[50] = "", solucion[50] = "",
palabra[50] = "" , letra[2] = "";
int longitud = 0, letras = 0, contador = 0,
numeroletrasusadas = 0, opcion = 1, aciertos = 0,
errores = 0, comparacion = 0;

printf ("AHORCADOn");
printf ("Atencion, no emplear la letra Ñ ni tildesn");
printf ("Introduce la palabra o palabras a adivinarn");
fgets(palabra, 49, stdin);
longitud = strlen(palabra) - 1;
letras = longitud;
for ( contador = longitud - 1 ; contador >-1 ; contador-- )

{
if (palabra[contador] == 32)
letras--;
}
for ( contador = 0 ; contador <50 ; contador++ )
printf ("n");


for ( contador = 0 ; contador < longitud; contador++ )
{
if (palabra[contador] != 32)
solucion[contador] = 45;
else
solucion[contador] = 32;
}
printf ("Palabra a adivinar: %sn", solucion);


while ( 1 < 2 )
{
opcion = 1;
scanf ("%s", letra);
numeroletrasusadas = strlen(letrasusadas);
for ( contador = numeroletrasusadas ; contador >-1 ; contador-- )
{
if (letrasusadas[contador] == letra[0])
opcion = 0;
}

if (opcion == 1)
{

letrasusadas[numeroletrasusadas] = letra[0];

contador = 0;
comparacion = aciertos;
while ( contador < longitud )
{
if (palabra[contador] == letra[0])
{
solucion[contador] = letra[0];
aciertos++;
}
contador ++;
}
if (aciertos == comparacion)
errores++;
}


if (aciertos == letras)
{
for ( contador = 0 ; contador <50 ; contador++ )
printf ("n");
printf ("Has acertado la palabra, ganasten");
return 0;
}
if (errores == 8)
{
for ( contador = 0 ; contador <50 ; contador++ )
printf ("n");
printf ("Demasiados errores, perdisten");
printf ("La palabra a adivinar era:n%sn", palabra);
return 0;
}
for ( contador = 0 ; contador <50 ; contador++ )
printf ("n");
if (opcion == 0)
printf ("Letra ya usada, eligir otran");
printf ("Palabra a adivinar: %sn", solucion);
printf ("Letras ya usadas: %sn", letrasusadas);
printf ("Número de aciertos = %dn", aciertos);
printf ("Número de errores = %dn", errores);
}
}