Avance del juego ahorcado (C++)

Iniciado por Danyel_Casvill, 26 Abril 2013, 02:49 AM

0 Miembros y 2 Visitantes están viendo este tema.

Danyel_Casvill

MODIFICADO

Aquí va el avance del ahorcado:

Código (cpp) [Seleccionar]
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;


int main()
{

   ifstream archivo("ahorcado.txt"); //SE ABRE EL ARCHIVO QUE CONTIENE LA PALABRA A ADIVINAR

  /*  VARIABLES  */

    char palabra[10];    //VARIABLE QUE CONTENDRÁ LA
    archivo >>  palabra; //PALABRA A ADIVINAR

    char letra; //LETRA QUE INGRESA EL USUARIO

    char *busqueda; //PARA EL ESCANEO DE LA LETRA EN LA PALABRA

    int NumTur,f=0;

    char letras[NumTur];


  /*  VARIABLES  */



 cout<<palabra;

 cout<<"\n\n\t\t\tAHORCADO\n\n\t";
 cout<<"La palabra contiene "<<strlen(palabra)<<" letras."; //BUSCA CUANTOS ELEMENTOS TIENE LA PALABRA
 cout<<"\n\tCon cuantos turnos quieres jugar?: ";
 cin>>NumTur;



 do
   {
     f++;
     cout<<"\n\n\n\t[[Tienes "<<(NumTur+1)-f<<" turnos]]\n\n\t";
     cout<<"ingrese una letra: ";
     cin>>letra;
      letras[f]=letra;



     busqueda= strchr(palabra,letra); // BUSCA SI LA LETRA INGRESADA POR EL
                                      // USUARIO SE ENCUENTRA EN LA PALABRA A ADIVINAR

     if (busqueda)  //SI LA LETRA SE haya EN LA PALABRA
       {

          cout<<"\n\t[ "<<letra<<" ] se encuentra en la palabra.\n";

       }

     else cout<<"\n\t[ "<<letra<<" ] no se encuentra en la palabra.\n\t";


     cout<<"\n\n\tHas tecleado: ";
     for (int l=1;l<=f;l++)
            {
              cout<<letras[l];
            }

   }


  while (f<NumTur);


  cout<<"\n\tSe te acabaron los turnos!\n\t";





 cin.get();cin.get();
 return 0;
}



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
adada

flony

estaba leyendo...solo busca la primer letra
CitarDevuelve 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 ?
si un problema no tiene solucion entonces no es un problema...es algo inevitable

Wofo

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

Danyel_Casvill

#3
Cita de: flony en 26 Abril 2013, 05:50 AM
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.

Cita de: 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.

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
adada

amchacon

Cita de: 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.
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 (cpp) [Seleccionar]
#include <string>

//...

string Mensaje;

Mensaje = "Cosita linda y hermosa"; //Se puede usar '=' en cualquier momento

cout<<Mensaje<<endl;

Mensaje = "Tonterias"; // El tamanyo se ajusta automaticamente al contenido

cout<<Mensaje<<endl;

string Auxiliar = Mensaje + "y ademas muy fea"; // El operador suma esta definido

cout<<Auxiliar<<endl;

cout<<"Su tamanyo es: "<<Auxiliar.size();

if (Mensaje == Auxiliar) // Definido el operador ==
  cout<<"Los mensajes son iguales";
else
  cout<<"No son iguales";


cout<<"la primera letra es: "<<Auxiliar[0]; // Definidos los operadores []

cout<<"Busquemos la palabra Cosa:";

int Posicion = Auxiliar.find("Cosa"); // Busqueda


http://www.cplusplus.com/reference/string/string/
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

flony

estaba pensando en leer esa clase  ;)
si un problema no tiene solucion entonces no es un problema...es algo inevitable

gorystyle

#6
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 (cpp) [Seleccionar]

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

using namespace std;

int main()
{
//----Sacar la palabra del archivo.
ifstream archivo("palabra.txt");
string palabra;
string aux;
archivo >> palabra;
aux = palabra;

char letra;
int turnos = 5;
int encuentro = 0;

for(int i=0; i<palabra.size(); i++)
aux[i] = '_';
//Bucle para controlar la busqueda de letras.
cout << "\n\t*****AHORCADO*****" << endl;
cout << "Tiene " << turnos << " para adivinar la palabra." << endl << endl;

do{
encuentro = 0;
cout << "\t\n\nDiga una letra: ";
cin >> letra;
for(int i=0; i<palabra.size(); i++)
{
if(palabra[i] == letra)
{
aux[i] = letra;
encuentro++;
}
}
if(encuentro == 0)//No encontro almenos 1 vez la letra
{
turnos--;
cout << "\n\tFallaste!!!  turnos: "  << turnos << endl << endl;
}
for(int i=0; i<aux.size(); i++)
cout << aux[i] << " ";

if(aux == palabra)
{
cout << "\n\n\t***CORRECTO GANO!!!!***" << endl << endl;
break;
}
}while(turnos > 0);

archivo.close();
return 0;
}

flony

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
si un problema no tiene solucion entonces no es un problema...es algo inevitable

gorystyle

Cita de: 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

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

flony

si un problema no tiene solucion entonces no es un problema...es algo inevitable