Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Danyel_Casvill en 26 Abril 2013, 02:49 am



Título: Avance del juego ahorcado (C++)
Publicado por: Danyel_Casvill en 26 Abril 2013, 02:49 am
MODIFICADO

Aquí va el avance del ahorcado:

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. int main()
  9. {
  10.  
  11.    ifstream archivo("ahorcado.txt"); //SE ABRE EL ARCHIVO QUE CONTIENE LA PALABRA A ADIVINAR
  12.  
  13.   /*  VARIABLES  */
  14.  
  15.     char palabra[10];    //VARIABLE QUE CONTENDRÁ LA
  16.     archivo >>  palabra; //PALABRA A ADIVINAR
  17.  
  18.     char letra; //LETRA QUE INGRESA EL USUARIO
  19.  
  20.     char *busqueda; //PARA EL ESCANEO DE LA LETRA EN LA PALABRA
  21.  
  22.     int NumTur,f=0;
  23.  
  24.     char letras[NumTur];
  25.  
  26.  
  27.   /*  VARIABLES  */
  28.  
  29.  
  30.  
  31.  cout<<palabra;
  32.  
  33.  cout<<"\n\n\t\t\tAHORCADO\n\n\t";
  34.  cout<<"La palabra contiene "<<strlen(palabra)<<" letras."; //BUSCA CUANTOS ELEMENTOS TIENE LA PALABRA
  35.  cout<<"\n\tCon cuantos turnos quieres jugar?: ";
  36.  cin>>NumTur;
  37.  
  38.  
  39.  
  40.  do
  41.    {
  42.      f++;
  43.      cout<<"\n\n\n\t[[Tienes "<<(NumTur+1)-f<<" turnos]]\n\n\t";
  44.      cout<<"ingrese una letra: ";
  45.      cin>>letra;
  46.       letras[f]=letra;
  47.  
  48.  
  49.  
  50.      busqueda= strchr(palabra,letra); // BUSCA SI LA LETRA INGRESADA POR EL
  51.                                       // USUARIO SE ENCUENTRA EN LA PALABRA A ADIVINAR
  52.  
  53.      if (busqueda)  //SI LA LETRA SE haya EN LA PALABRA
  54.        {
  55.  
  56.           cout<<"\n\t[ "<<letra<<" ] se encuentra en la palabra.\n";
  57.  
  58.        }
  59.  
  60.      else cout<<"\n\t[ "<<letra<<" ] no se encuentra en la palabra.\n\t";
  61.  
  62.  
  63.      cout<<"\n\n\tHas tecleado: ";
  64.      for (int l=1;l<=f;l++)
  65.             {
  66.               cout<<letras[l];
  67.             }
  68.  
  69.    }
  70.  
  71.  
  72.   while (f<NumTur);
  73.  
  74.  
  75.   cout<<"\n\tSe te acabaron los turnos!\n\t";
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  cin.get();cin.get();
  82.  return 0;
  83. }
  84.  
  85.  

Aún no hace gran cosa que digamos ... :xD

Ahora estoy pensando en guardar las letras ingresadas en un arreglo. (Listo)
Separar las letras acertadas, de las no acertadas. (En proceso)

Me hace falta demasiado :c
Pero bueno, que sirva de algo para los que también estén intentando hacerlo.

Saludos  ;D

PD: Tema procedente de ---> http://foro.elhacker.net/programacion_cc/juego_de_palabras_c_sencillo-t388690.0.html


Título: Re: Avance del juego ahorcado (C++)
Publicado por: flony en 26 Abril 2013, 05:50 am
estaba leyendo...solo busca la primer letra
Citar
Devuelve un puntero a la primera ocurrencia del carácter en la cadena str C.
que pasa si la palabra es como mama que tiene dos m y dos a ?...para eso sirve el for ?


Título: Re: Avance del juego ahorcado (C++)
Publicado por: Wofo en 26 Abril 2013, 10:20 am
¿Por qué no usas la librería "string"? Te facilitaría las cosas y te permitiría tener palabras de distinta longitud.


Título: Re: Avance del juego ahorcado (C++)
Publicado por: Danyel_Casvill en 26 Abril 2013, 13:33 pm
estaba leyendo...solo busca la primer letra que pasa si la palabra es como mama que tiene dos m y dos a ?...para eso sirve el for ?

Tienes razón en ello, la función strchr sólo busca la primera letra de izquierda a derecha. Ejemplo "Mama" Sólo encontraría Mama y pararía de buscar.
Hay otra función que busca de derecha a izquierda. Ejemplo: Mama pero si la palabra repitiera 3 o mas veces una letra tampoco serviría.
Aún no sé como hacer para que busque la letra en toda la cadena mas de una vez, independiente de si ya encontró la letra una vez. Mama.

El ciclo for sólo sirve para recordarte las letras que has tecleado, nada mas.

¿Por qué no usas la librería "string"? Te facilitaría las cosas y te permitiría tener palabras de distinta longitud.

No sabría donde aplicarla, intenté sustituir las variables tipo char por string pero me daba error. :(

Alguna idea de cómo hacerlo?


Gracias porresponder, saludos!  ;D


Título: Re: Avance del juego ahorcado (C++)
Publicado por: amchacon en 26 Abril 2013, 13:42 pm
¿Por qué no usas la librería "string"? Te facilitaría las cosas y te permitiría tener palabras de distinta longitud.
Resalto lo que dice el compañero.

La clase string forma parte de las estándares del lenguaje y sería adecuado que la usaras (más cómodas, más funcionales).

Código
  1. #include <string>
  2.  
  3. //...
  4.  
  5. string Mensaje;
  6.  
  7. Mensaje = "Cosita linda y hermosa"; //Se puede usar '=' en cualquier momento
  8.  
  9. cout<<Mensaje<<endl;
  10.  
  11. Mensaje = "Tonterias"; // El tamanyo se ajusta automaticamente al contenido
  12.  
  13. cout<<Mensaje<<endl;
  14.  
  15. string Auxiliar = Mensaje + "y ademas muy fea"; // El operador suma esta definido
  16.  
  17. cout<<Auxiliar<<endl;
  18.  
  19. cout<<"Su tamanyo es: "<<Auxiliar.size();
  20.  
  21. if (Mensaje == Auxiliar) // Definido el operador ==
  22.   cout<<"Los mensajes son iguales";
  23. else
  24.   cout<<"No son iguales";
  25.  
  26.  
  27. cout<<"la primera letra es: "<<Auxiliar[0]; // Definidos los operadores []
  28.  
  29. cout<<"Busquemos la palabra Cosa:";
  30.  
  31. int Posicion = Auxiliar.find("Cosa"); // Busqueda

http://www.cplusplus.com/reference/string/string/


Título: Re: Avance del juego ahorcado (C++)
Publicado por: flony en 26 Abril 2013, 20:30 pm
estaba pensando en leer esa clase  ;)


Título: Re: Avance del juego ahorcado (C++)
Publicado por: gorystyle en 26 Abril 2013, 21:21 pm
jeje desde q vi este post me puse a programar un ahorcado yo tb y lo q mas me costo fue conseguir una manera de ir mostrando las letras adivinadas de la palabra cuando el usuario las decia jeje resulto ser muy facil aqui mi codigo.. se podria mejorar en cuanto a detalles pero creo que en lo que al ahorcado se refiere pues hace lo que se quiere

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <stdio.h>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10. //----Sacar la palabra del archivo.
  11. ifstream archivo("palabra.txt");
  12. string palabra;
  13. string aux;
  14. archivo >> palabra;
  15. aux = palabra;
  16.  
  17. char letra;
  18. int turnos = 5;
  19. int encuentro = 0;
  20.  
  21. for(int i=0; i<palabra.size(); i++)
  22. aux[i] = '_';
  23. //Bucle para controlar la busqueda de letras.
  24. cout << "\n\t*****AHORCADO*****" << endl;
  25. cout << "Tiene " << turnos << " para adivinar la palabra." << endl << endl;
  26.  
  27. do{
  28. encuentro = 0;
  29. cout << "\t\n\nDiga una letra: ";
  30. cin >> letra;
  31. for(int i=0; i<palabra.size(); i++)
  32. {
  33. if(palabra[i] == letra)
  34. {
  35. aux[i] = letra;
  36. encuentro++;
  37. }
  38. }
  39. if(encuentro == 0)//No encontro almenos 1 vez la letra
  40. {
  41. turnos--;
  42. cout << "\n\tFallaste!!!  turnos: "  << turnos << endl << endl;
  43. }
  44. for(int i=0; i<aux.size(); i++)
  45. cout << aux[i] << " ";
  46.  
  47. if(aux == palabra)
  48. {
  49. cout << "\n\n\t***CORRECTO GANO!!!!***" << endl << endl;
  50. break;
  51. }
  52. }while(turnos > 0);
  53.  
  54. archivo.close();
  55. return 0;
  56. }
  57.  


Título: Re: Avance del juego ahorcado (C++)
Publicado por: flony en 26 Abril 2013, 21:39 pm
jajaja estaba investigando para hacer el code....pucha llegue tarde,  bueno me pongo a leer tu code haber si era mas o menos lo que pensaba hacer


Título: Re: Avance del juego ahorcado (C++)
Publicado por: gorystyle en 26 Abril 2013, 21:41 pm
jajaja estaba investigando para hacer el code....pucha llegue tarde,  bueno me pongo a leer tu code haber si era mas o menos lo que pensaba hacer

jaja si dale.. eso es lo que se busca que cada vez se valla mejorando mas el código y entre todos saquemos un buen ahorcado quien quita que logremos hasta ir pintando el muñeco ahorcandoce cuando el usuario falla se veria muy bien


Título: Re: Avance del juego ahorcado (C++)
Publicado por: flony en 26 Abril 2013, 23:07 pm
disculpen ...me tente lo vi en el face
http://subefotos.com/ver/?90f8003f62f575ae960d734b569a777ao.jpg (http://subefotos.com/ver/?90f8003f62f575ae960d734b569a777ao.jpg)


Título: Re: Avance del juego ahorcado (C++)
Publicado por: NoLife en 27 Abril 2013, 05:47 am
disculpen, quizas esta sea una pregunta tonta, pero por que siempre hay una variable llamada 'Aux'; es algun nombre en especial? Siempre que veo codigos por aca, hay quienes tienen una varaible llamada así...


Título: Re: Avance del juego ahorcado (C++)
Publicado por: amchacon en 27 Abril 2013, 10:03 am
disculpen, quizas esta sea una pregunta tonta, pero por que siempre hay una variable llamada 'Aux'; es algun nombre en especial? Siempre que veo codigos por aca, hay quienes tienen una varaible llamada así...
Se llama así porque es una variable usada como "auxiliar".

Pero vamos que no tiene ningún porque, podría haberse llamado aux como esternocleidomastoideo.