Fecha y hora actual: Sab 19 May, 2012 20:20 pm
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Ayuda con el juego Ahorcado, Gracias

Responder al Tema

Índice del Foro > C, C#, Visual C++ > Ayuda con el juego Ahorcado, Gracias

Autor Mensaje
skull5



Registrado: 19 Dic 2011
Mensajes: 1

Mensaje Publicado: Mar 20 Dic, 2011 00:02 am

Título del mensaje: Ayuda con el juego Ahorcado, Gracias

Responder citando

Necesito modificar uno de mis programas, el juego Ahorcado, muy simple por cierto. Si usan el código que les dejo, sirve, pero únicamente con la palabra ‘programación’ , y pues deseo hacerle unos cambios pero la verdad necesito ayuda, pues no se mucho sobre esto que es un poco más complejo. Gracias de antemano.

1. Crear dos modos de juego: uno que sea COMP vs PLAYER, en el cual el programa escoge aleatoriamente una palabra de un “banco de palabras” (se hace con matrices, creo) que como programador he llenado con anterioridad. ¿Cómo se hace ese banco, como escoge aleatoriamente alguna palabra? El segundo modo es: PLAYER vs PLAYER, el modo clásico, en el cual el usuario 1 digita una palabra, para que el usuario 2 la adivine. ¿Cómo asignar lo que escriba el usuario1 al array “palabra” para jugar con otra palabra que no sea ‘programacion’ ?

2. No se porque nunca se cumple la condición para mostrar el mensaje -“Esa letra ya fue digitada”-, que se supone aparece cuando es digitada por segunda vez una letra anteriormente digitada.

3. Tengo este programa dentro de un switch, entro al programa, juego y bien. Pero regreso al menú principal y entro de nuevo al juego y está cargada la “partida anterior”, según haya ganado o perdido, ¿Cómo “REINICIO” el juego para poder jugar otra partida ?

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;

char palabra[50]=("programacion"), rep[100], temp [100];
int longitud = 0, i, j=0, inicial=0, acierto=0, temporal=0, oport=6;
bool repetido=false, ganar=false;

class Juego{
private:
char word;

public:

void Ahorcado(){
do{
temporal=0;
if(inicial==0){
for(i=0;i<strlen(palabra);i++){
if(palabra[i] == ' '){
temp[i] = ' ';
longitud++;
}
else{
temp[i] = '_';
longitud++;
}
}
}

inicial = 1;
temp[longitud] = '\0';
for(i=0;i<strlen(rep);i++){
if(rep[i] == word){
repetido = true;
break;
}
else{
repetido = false;
}
}

if(repetido == false){
for(i=0;i<strlen(palabra);i++){
if(palabra[i] == word){
temp[i] = word;
acierto++;
temporal = 1;
}
}
}

if(repetido == false){
if(temporal == 0){
oport = oport - 1;
}
}
else{
printf("Esa letra ya fue digitada");
printf("\n\n");
}

printf("\n");

for(i=0;i<strlen(temp);i++){
printf(" %c ", temp[i]);
}

printf("\n");

if(strcmp(palabra,temp) == 0){
ganar = true;
break;
}

printf("\n");

printf("Letras acertadas: %d",acierto);
printf("\n");
printf("Oportunidades restantes: %d",oport);
printf("\n");
rep[j] = word;
j++;
printf("Digita una letra para adivinar la palabra: ");
scanf("\n%c",&word);
}while(oport != 0);
}
};

class Imprimir{
private:
string mensaje;
public:
void setmensaje(string a){
mensaje = a;
}
string getmensaje(){
return mensaje;
}
};

int main()
{
system("CLS");
rep[0] = ' ';
rep[1] = '\0';

Juego Victima;
Imprimir mostrar;

Victima.Ahorcado();

if(ganar){
printf("\n\n");
mostrar.setmensaje("¡¡Felicitaciones!! Adivinaste la palabra");
cout<<mostrar.getmensaje();
}
else{
printf("\n\n");
mostrar.setmensaje("Perdiste =(, pero puedes volver a intentarlo");
cout<<mostrar.getmensaje();
}

printf("\n\n");
system("PAUSE");
return 0;
}

Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
Moderador Global


Registrado: 20 Mar 2009
Mensajes: 2084
Ubicación: y*width+x

Mensaje Publicado: Mar 20 Dic, 2011 16:16 pm

Título del mensaje: Re: Ayuda con el juego Ahorcado, Gracias

Responder citando

skull5 escribió:
¿Cómo se hace ese banco, como escoge aleatoriamente alguna palabra?
Tu lo has dicho, el banco que comentas es un array, el array contiene palabras, palabras que están indexadas, asociadas con un número, por ejemplo, 0 para Libro, 1 para Ornitorrinco, etc... Entonces, para escoger la palabra aleatoria, debes producir números aleatorios que servirán para extraer de ese banco la palabra asociada.
Código:
...
palabraAleatoria=BancoDePalabras[ numAleatorio ] ;
...


skull5 escribió:
No se porque nunca se cumple la condición para mostrar el mensaje -“Esa letra ya fue digitada”-, que se supone aparece cuando es digitada por segunda vez una letra anteriormente digitada.
¿Y cómo saberlo? Pues muy fácil, primero si se encuentra en la palabra que buscas acertar.

Cita:
PL__T__O

Introduce letra: O
Como ves la O ya está en la palabra, entonces con comprobar que ya está es suficiente.

La segunda es que, si la letra no tiene cabida en la palabra y se desea poner por desconocimiento, pero queremos indicarle al jugador que esa letra ya intentó ponerla anteriormente, entonces deberemos usar flags o banderas. Se crea un banco boelano que tenga todo en false o cero, estará indexado con el mismo orden que se encuentra el alfabeto o los caracteres ASCII, luego cuando se introduzca una letra, se buscará en el banco citado el indice que corresponda a esa letra y se pondrá true o a uno, pero si al realizar esta operación se comprueba que no se encuentra false o a cero, el juego responderá al jugador "Esa letra ya fue digitada”.

skull5 escribió:
¿Cómo “REINICIO” el juego para poder jugar otra partida ?
Un juego siempre debe tener una función de inicio, en ella se configuran las variables de entorno y se pone todo a cero. Es bueno que elabores el juego por funciones, funciones que devuelvan la letra introducida, función que compruebe si existe esa letra en la palabra oculta, funcion que devuelva la palabra aleatoria según el banco que le pasemos por argumento, etc...


http://www.youtube.com/watch?v=-lT1zCukNQY
Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Ayuda por favooor

Yeranea Aviña Preséntate a la comunidad 2 Sab 19 May, 2012 03:35 am Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda Por favor estoy aprendiendo, Error en C++

Leisnar23 C, C#, Visual C++ 1 Vie 18 May, 2012 21:37 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda sentencia

WhiteSkull Java 1 Mar 15 May, 2012 17:20 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda problema con proyecto de C. URGE

nlce C, C#, Visual C++ 1 Dom 13 May, 2012 18:28 pm Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda con Listas Enlazadas! Memoria Dinamica

GuateGio C, C#, Visual C++ 1 Sab 12 May, 2012 00:22 am Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,