Duda con ahorcado en C

Iniciado por folostia, 26 Diciembre 2011, 12:26 PM

0 Miembros y 1 Visitante están viendo este tema.

satu

Hola

Yo también he hecho una versión un poco parecida a la de Sagrini, aunque yo no utilizo lo de las pistas

Aquí la teneis


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

#define num_elementos 15 //Numero de palabras que hay en el fichero
#define fich "palabras.txt" //En el fichero "palabras.txt" guardamos las palabras. Una por linea. Deja una linea en blanco al final

int main ()
{
    int intentos, cont, p, tam, flag;
    char palabra[12], car, palabras[num_elementos][12], salir = 'n';

    printf("\n\n-----=====BIENVENIDO AL JUEGO DEL AHORCADO=====-----    by satu");

    FILE *fp;
    fp = fopen(fich, "r");
    if(!fp)
    {
        printf("Fallo al abrir fichero %s\n\n", fich);
        return -1;
    }

    for(cont = 0; cont < num_elementos; cont++)
    {
        fgets(palabras[cont], 12, fp);
        tam = strlen(palabras[cont]);
        palabras[cont][tam-1] = '\0';
    }
    fclose(fp);

    do
    {
        intentos = 5; //Numero de intentos para acertar la palabra
        flag = 0; //Nos indica si la letra esta en la palabra o no
        car = 0; //Caracter que vamos introduciendo en cada iteracion

        srand(time(NULL));
        p = rand() % num_elementos; //Seleccionamos una palabra al azar

        tam = strlen(palabras[p]);

        memset (&palabra, '_', tam);
        palabra[tam] = '\0';

        while((strcmp(palabra, palabras[p]) != 0) && (intentos > 0))
        {
            printf ("\n\nIntentos restantes: %i\nPalabra de %i letras: %s\n", intentos, tam, palabra);

            printf ("\nEscribe una letra: ");
            car = getchar (); // car = fgetc (stdin);

            while(getchar() != '\n') ;

            for (cont=0; cont < tam; cont++)
                if (car == palabras[p][cont])
                {
                    palabra[cont] = car;
                    flag = 1;
                }

            if(flag == 0)
                intentos--;
            flag = 0;
        }

        if(intentos)
            printf("\n\nMUY BIEN La palabra era: %s\n\n", palabra);
        else
            printf("\n\nOOOOOOOOHHHHHHHHHH La palabra era: %s\n\n", palabras[p]);

        printf("Quieres salir? (s/n) ");
        salir = getchar();
        while(getchar() != '\n') ;
    }
    while(salir != 's' && salir != 'S');

    printf("Pulsa Enter para continuar...");
    getchar();
    return 0;
}


Saludos
Breakbeat como forma de vida

folostia

Lo de los dibujitos lo hago de otra forma,como no puedo poner nada de lo que habéis puesto vosotros,pongo: if (fallos=1) {
                                                    printf ("  
                                                                 |
                                                                 |
                                                                _|_ ")


y así sucesivamente,es un coñazo,pero es lo que puedo hacer de momento.


Buff me está costando más de lo que pensaba este juego...  >:(
"Antes de que un software pueda ser reusable, primero ha de ser usable." (Ralph Johnson)
Usuario Linux:547941

satu

Hola

Recuerda que las comparaciones se hacen con == no con =

Saludos
Breakbeat como forma de vida

folostia

#13
Cita de: satu en 30 Diciembre 2011, 16:07 PM
Hola

Recuerda que las comparaciones se hacen con == no con =

Saludos
sisi eso ya está corregido.Os pongo mi código(lo que llevo hecho) a ver si voy bien encaminado:

/*Juego del ahorcado*/
# include <stdio.h>
# include <stdlib.h>
# include <time.h>
# define f 6
# define c 6
int main ()
{
   char frase[i][c],palabra,letra;
   int cont,intentos=6,fallos=0,i,j;
   bool acertado=false;
   
   printf ("Introduce palabras \n");
   fflush (stdin);
   for (i=0;i<6;i++) {
       for (j=0;j<6;j++) {
           scanf ("%c",&frase[i][j]); } } /*Leemos las palabras que introducen*/

           
   printf ("Tienes 6 intentos \n");
   

   srand(time(NULL));  
   palabra = rand() % i; /*Seleccionamos una palabra aleatoria*/
 
   /*hay que escribir tantos guiones como letras haya*/
   for(i=0;i<26;i++){
                       frase[f][c]=0;}
   for(i=0;palabra!='\0';i++){
                       j=palabra-97;
                       frase[f][c]++;}
   for(i=0;i<26;i++){
            letra=i+97;
            printf("%c %i\n",letra,frase[f][c); /*aquí se tienen que escribir los guiones*/
                       
            for(cont=0;cont<=frase[f]c];cont++) {
                      printf ("_\t");}
            for (cont=0;cont<6;cont++) {
      printf ("Introduce letra: \n");
      fflush(stdin);
      scanf ("%c",&letra); } /*leemos la palabra introducida*/          
                     
                     
                     
                      }
 
   
   system ("PAUSE");
   return 0;
}
"Antes de que un software pueda ser reusable, primero ha de ser usable." (Ralph Johnson)
Usuario Linux:547941

folostia

aún tengo muchas cosas que corregir y muchas incompletas,pero es lo que llevo hecho y me gustaría saber si voy bien encaminado
"Antes de que un software pueda ser reusable, primero ha de ser usable." (Ralph Johnson)
Usuario Linux:547941