Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: TopoJunior en 14 Febrero 2013, 19:58 pm



Título: Ayuda, programa en C .. El ahorcado....
Publicado por: TopoJunior en 14 Febrero 2013, 19:58 pm
El código hasta ahora me va bien. Explico : Van a ser 3 palabras, no solo uno, por eso creé el aleatorio. El caso es qué, como veis, si introducimos una tecla f, lo que el programa hará va a ser esto . F _ _ _ _ _ _ Bien... Si introducimos u , lo que correctamente debería hacer sería, F U _ _ _ _, pero claro, de esta manera, lo que hace es borrar F y poner U. ¿Cómo haría para que Si pongo por ejemplo, primero U . Salga _ U _ _ _ _ y luego, introduzco F y siga con la palabra y no diga que no está. F u _ _ _ _ __ ? Gracias de antemano:D
Código
  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <conio.h>
  4.  
  5. main()
  6. {
  7.      char ch;
  8.      char ch1;
  9.      int errores1;
  10.      errores1 = 0;
  11.   srand (time(NULL));
  12.   int aleatorio;
  13.   aleatorio = rand() % 3+1;
  14.   if(aleatorio == 2)
  15.   {
  16.   printf("Te ha tocado esta palabra\n"); // La palabra es FUTBOL
  17.   printf("_ _ _ _ _ _");
  18.   printf("Ve escribiendo las letras\n");
  19.    ch=getchar();
  20.   if(ch == 'f') {
  21.      printf("Bien, has acertado. F _ _ _ _ _\n");          
  22.          }
  23.              else if(ch == 'u') {
  24.                   printf("Has acertado. _ U _ _ _ _\n");
  25.                   }
  26.  
  27.   }
  28.  
  29.   else
  30.   {
  31.       errores1++;
  32.       printf("Has fallado. Llevas %d errores.", errores1);
  33.   }
  34. while(1);
  35. }
  36.  


Título: Re: Ayuda, programa en C .. El ahorcado....
Publicado por: Al-hazred en 14 Febrero 2013, 21:03 pm
Incluyes una cabecera que no usas (conio.h) y te falta la cabecera stdlib.h para poder usar las funciones de generación de números aleatorios. En la linea 34 usas un while infinito sin usar do anteriormente, lo cual en sí no es un error pero quiero creer que tu intención no es que se quede colgado tu juego. Trata de implementar un do-while que cheque el número de oportunidades gastadas, y definir cuantas oportunidades tiene el usuario. Incluye la cabecera ctype.h para convertir las letras introducidas por el usuario a minúsculas y compararlas en un bucle for con, en este caso, la palabra futbol, la cual puede ser un array de char previamente definida.


Título: Re: Ayuda, programa en C .. El ahorcado....
Publicado por: Puntoinfinito en 15 Febrero 2013, 15:58 pm
Creas una variable que será la de la palabra, de tipo char o string;

Código:
char palabra_padre[128] = "_ _ _ _ _ _ _";

Entonces haces los if's normales tal cual los has hecho pero ahora se modificara la variable y no se pondrá directamente un output escrito;

Código:
palabra_padre[0] = F; cout << palabra_padre;


Y así saldrá F _ _ _ _ _ _ ...

¿Era esto?, Saludos  :D


Título: Re: Ayuda, programa en C .. El ahorcado....
Publicado por: leosansan en 15 Febrero 2013, 20:36 pm
El código hasta ahora me va bien. Explico : Van a ser 3 palabras, no solo uno, por eso creé el aleatorio.

Pues yo te he puesto cuatro  :-\. Era para que una de ellas tuviera repetida alguna letra  :laugh:.

Es un código muy mejorable, pero así tienes donde fijarte:


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <ctype.h>
  5. #include <string.h>
  6.  
  7. int main(){
  8.  char ch;
  9.  char palabra[10]={0},palabras[4][10]={"futbol","pala","balon","pelota"} ;/*con letra repetida*/
  10.  int i,j,cont=0,errores=0,intentos=0,flag=0;
  11.  srand (time(NULL));
  12.  int aleatorio;
  13.  aleatorio =rand() % 3;
  14.  for (i=0;i<3;i++)
  15.    printf("%s  ",palabras[i]); /*para que veas las palabras*/
  16.  printf("\n\nTe ha tocado esta palabra: \n\n");
  17.  for (i=0;palabras[aleatorio][i]!='\0';i++){
  18.     printf("_ ");palabra[i]='_';
  19.  }
  20.  palabra[i]='\0';
  21.  printf("\n\n Tienes 10 intentos.\n\n");
  22.  do{
  23.    intentos++;
  24.    printf("\n\nVe escribiendo las letras. Intento %d\n",intentos);
  25.    ch=getchar();
  26.    while (getchar ()!='\n');
  27.    for (i=0;palabra[i]!='\0';i++){
  28.      if(ch == palabras[aleatorio][i] && palabra[i]=='_') {
  29.          palabra[i]=toupper(ch);
  30.          puts("\n");
  31.          for (j=0;j<strlen (palabra);j++)
  32.            printf("%c ",palabra[j]);
  33.          flag=1;cont++;
  34.      }
  35.    }
  36.    if (flag ==0) {
  37.      errores++;
  38.      printf("Has fallado. Llevas %d errores.\n", errores);
  39.    }
  40.    else {
  41.      printf("  Bien, has acertado.\n");
  42.      flag=0;
  43.    }
  44.    if (cont==strlen (palabra)){
  45.       if (errores==0)
  46.        printf("\n\n  TOTAL ACIERTO.\n\n");
  47.       else
  48.        printf("\n\n  ACIERTO con %d errores.\n\n",errores);
  49.       return 1;
  50.    }
  51.  } while (intentos<10);
  52.  return EXIT_SUCCESS;
  53. }
  54.  

Saluditos!.


Título: Re: Ayuda, programa en C .. El ahorcado....
Publicado por: X3R4CK3R en 15 Febrero 2013, 23:34 pm
Te dejo un ahorcado que hice hace unos 4 años como referencia, si miras abajo tienes un código completamente comentado, si aún así tienes duda no dudes en preguntar. ;)

http://foro.elhacker.net/programacion_cc/c_ahorcado_v100_anadida_la_version_v200-t239941.0.html

Saludos