Está en la página 1de 5

PRACTICA 4

Elaborar el juego del ahorcado con mtodo aleatorio


PROPOSITO
Elabora una aplicacin de videojuego genera un numero al
azar con mtodo aleatorio, para que con ese nmero se
seleccione una palabra de entre las predefinidas y sea
adivinada por el usuario


Introduccion.
Se realizar el famoso juego del ahorcado, utilizando
mtodos con el rand para seleccionar una palabra de manera
aleatoria de un grupo ya determinado, el usuario tendr las
oportunidades necesarias para poder adivinar esta palabra
antes de que su mueco muera.

El cdigo se ir explicando mediante los comentarios
ingresados en el programa, aqu se muestra el cdigo
completo.
(Los comentarios estn de color AZUL)


#include <stdio.h> /* Rutinas estndar, como "printf" */
#include <string.h> /* Manejo de cadenas */
#include <stdlib.h> /* Para "rand" */
#include <time.h> /* Para "time" */
#include <ctype.h> /* Para "tolower" */
#include <allegro.h>
#define NUMPALABRAS 10
#define MAXINTENTOS 5
/* Es preciso tomar en cuenta que solo se le daran 5 oportunidades pues solo sern 5
cosas las que se dibujaran*/
char palabra[80], intento[80], letras[80];
/* La palabra a adivinar, la que el jugador va consiguiendo y las letras que se han
probado */
int oportunidades; /*Cantidad de intentos permitido */
char letra; /* Cada letra que prueba el jugador */
int i; /* Para mirar cada letra, con "for" */
int acertado; /* Si ha acertado alguna letra */
char ficticia[2]; /* Aux, para aadir letra a cadena */
char mensaje[80]; /* Los letreros que mostrar en pantalla */
char datosPalabras [NUMPALABRAS][80]=
{
"yari","katya","Oso","dificil",
"practica","cuatro","informatica","ramos",
"hola","conalep"
};
void PrimerFallo() /* Primer fallo: Dibujamos la "plataforma" */
{
line(screen,20,180,120,180, palette_color[13]);
line(screen,100,180,100,125, palette_color[13]);
line(screen,100,125,70,125, palette_color[13]);
line(screen,70,125,70,130, palette_color[13]);
}
void SegundoFallo() /* Segundo fallo */
{
/* Cabeza */
circle(screen,70,138,8, palette_color[12]);
}
void TercerFallo() /* Tercer fallo*/
{
/* Tronco */
line(screen,70,146,70,160, palette_color[12]);
}
void CuartoFallo() /* Cuarto fallo */
{
/* Brazos */
line(screen,50,150,90,150, palette_color[12]);
}
void QuintoFallo() /* Quinto fallo: */
{
int j;

/* Piernas */
line(screen,70,160,60,175, palette_color[12]);
line(screen,70,160,80,175, palette_color[12]);
}

int main()
{

allegro_init(); /* Inicializamos Allegro */
install_keyboard();

/* Intentamos entrar a modo grafico */
if (set_gfx_mode(GFX_SAFE,320,200,0,0)!=0){
set_gfx_mode(GFX_TEXT,0,0,0,0);
allegro_message(
"Incapaz de entrar a modo grafico\n%s\n",
allegro_error);
return 1;
}
/* Si no hay error: comenzamos con valores iniciales */
strcpy(palabra, datosPalabras[ rand()%(NUMPALABRAS+1)]);
oportunidades = MAXINTENTOS;
strcpy(letras,"");
/* Relleno con _ y " " lo que ve Jug. 2 */
for (i=1; i<=strlen(palabra); i++)
if (palabra[i-1]==' ' )
intento[i-1]=' ';
else
intento[i-1]='_';
intento[i]='\0'; /* Y aseguro que termine correctamente */
/* Parte repetitiva: */
do {
clear_bitmap(screen);


/* Se dibuja las partes segun se valla equivocando */
if (oportunidades <=4) PrimerFallo();
if (oportunidades <=3) SegundoFallo();
if (oportunidades <=2) TercerFallo();
if (oportunidades <=1) CuartoFallo();

/* Se muestran los intentos restantes */
textprintf(screen, font, 80,18, palette_color[15],
"Te quedan %d intentos", oportunidades);


/* Se le muestra como va */
textprintf(screen, font, 80,32, palette_color[15],
intento, oportunidades);

/* Se muestran las letras intentadas */
textprintf(screen, font, 20,72, palette_color[14],
"Letras intentadas: %s", letras);

/* Aqu se le pie una letra ms */
textprintf(screen, font, 20,60, palette_color[14],
"Que letra?");

letra = readkey()&0xff;

/* Aade esa letra a las tecleadas*/
strcpy (ficticia,"a"); /* Usando una cadena de texto aux */
ficticia[0]= letra;
strcat (letras, ficticia);

acertado = 0; /* Se checa si el usuario acerto */
for (i=1; i<=strlen(palabra); i++)
if(tolower(letra)== tolower(palabra[i-1]))
{
intento[i-1]= palabra[i-1];
acertado = 1;
}


if (! acertado ) /* Si falla, se le resta un intento */
oportunidades --;

}
while ( strcmp (intento,palabra) /* Se repite hasta que acierte */
&& (oportunidades>0)); /* osus oportunidades se agoten*/


/* Se le felicita o en caso contrario se muestra la palabra correcta */

if ( strcmp (intento,palabra)==0)
textprintf(screen, font, 20,100, palette_color[11],
"Acertaste!");
else
{
textprintf(screen, font, 20,100, palette_color[11],
"Lo siento. Era: %s", palabra);
QuintoFallo();
}


readkey();
return 0;

}

/* Termino con la "macro" que me pide Allegro */
END_OF_MAIN();





Conclusin:
Esta prctica fue una de las que ms se nos complic pues
nos cost mucho hacer que el cdigo se ejecutara con
normalidad y cuando lo hizo, no hacia la comparacin de las
palabras, pero despues de mucho buscar lo logramos, y es
grato saber que pudimos lograr esta prctica.

También podría gustarte