MODIFICADO
Aquí va el avance del ahorcado:
#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
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 ?
¿Por qué no usas la librería "string"? Te facilitaría las cosas y te permitiría tener palabras de distinta longitud.
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: Ma
ma 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.
Ma
ma.
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
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).
#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/
estaba pensando en leer esa clase ;)
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
#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;
}
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
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
disculpen ...me tente lo vi en el face
http://subefotos.com/ver/?90f8003f62f575ae960d734b569a777ao.jpg (http://subefotos.com/ver/?90f8003f62f575ae960d734b569a777ao.jpg)
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í...
Cita de: 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í...
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.