Está en la página 1de 6

Colegio de Educacin Profesional Tcnica del Estado de

Veracruz
Plantel Tuxpan Lic. Jess Reyes Heroles165
Docente: Miguel ngel Ramos Grande
Modulo: Programacin de videojuegos
Practica 4: Elaborar el juego del Ahorcado
Propsito: La idea bsica de lo que tiene que hacer el juego es
generar un nmero al azar, y con ese nmero escoger una
palabra de entre las predefinidas. Esa es la palabra que deber
adivinar el usuario.

Alumna: Diana Laura Ramrez Xochihua


604-INFORMATICA



INTRODUCCIN
En esta practica se realizo un videojuego El ahorcado, utilizando el rand para que las
palabras que el usuario tenga que adivinar aparezcan al azar, dndole ciertos intentos y
pidindole una palabra a la vez.
DESARROLLO
Para comenzar a desarrollar esta practica abrimos DEVC++ y en la practica venia el link de
el videojuego.
Cdigo
#include <stdio.h> /* Rutinas estandar, 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
/* No deberamos modificar el numero mximo de intentos,
porque vamos a dibujar 5 "cosas" cuando se equivoque" */

char palabra[80], intento[80], letras[80];
/* Declaracin de arreglos */

int oportunidades; /* El numero de intentos permitido */
char letra; /* Cada letra que prueba el jug */
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]=
{
"Manzana","Pera","Platano","Papaya",
"Granada","Sandia","Sangria","Aguacate",
"Zapote","Naranja"
};
/*Palabras que estarn en el rand, que el jugador tendr que adivinar*/




void PrimerFallo() /* Primer fallo: */
{ /* Dibujamos la "plataforma" */
line(screen,20,180,120,180, palette_color[13]);
}
void SegundoFallo() /* Segundo fallo: */
{ /* Dibujamos el "palo vertical" */
line(screen,100,180,100,125, palette_color[13]);
line(screen,100,125,70,125, palette_color[13]);
}
void TercerFallo() /* Tercer fallo: */
{ /* Dibujamos el "palo superior" */
line(screen,70,125,70,130, palette_color[13]);
}
void CuartoFallo() /* Cuarto fallo: */
{
/* Cabeza */
circle(screen,70,138,8, palette_color[12]);
}

void QuintoFallo() /* Quinto fallo: */
{
int j; /* Dibujamos el resto de la "persona" */

/* Tronco */
line(screen,70,146,70,160, palette_color[12]);
/* Brazos */
line(screen,50,150,90,150, palette_color[12]);
/* 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,640,480,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;
}

srand(time(0)); /* Valores iniciales */
strcpy(palabra, datosPalabras[ rand()%(NUMPALABRAS+1)]);
oportunidades = MAXINTENTOS;
strcpy(letras,"");

/* Relleno con _ y " " lo que ve Jug */
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);

/* Dibujo lo que corresponde a cada fallo/
if (oportunidades <=4) PrimerFallo();
if (oportunidades <=3) SegundoFallo();
if (oportunidades <=2) TercerFallo();
if (oportunidades <=1) CuartoFallo();
if (oportunidades <=1) CuartoFallo();

textprintf(screen, font, 200,10, palette_color[15],
"Frutas", oportunidades);
/* Digo cuantos intentos le quedan */
textprintf(screen, font, 180,28, palette_color[15],
"Te quedan %d intentos", oportunidades);

/* Le muestro como va */
textprintf(screen, font, 230,130, palette_color[15],
intento, oportunidades);

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

/* muestra una frase donde pida otra palabra*/
textprintf(screen, font, 20,60, palette_color[14],
"Precione una letra?");

letra = readkey()&0xff;

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

acertado = 0; /* Miro a ver si ha acertado */
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 fallo, le queda un intento menos */
oportunidades --;

}
while ( strcmp (intento,palabra) /* Hasta que acierte */
&& (oportunidades>0)); /* o gaste sus oportunidades */

/* Le felicito o le digo cual era */

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;

}

END_OF_MAIN();






Pantallas del video juego en ejecucin






CONCLUSIN
Al realizar esta practica, le modifique algunas cosas como la palabras a adivinar, lo que se
dibuja en cada fallo, el tamao de la ventana y la ubicacin de la lnea donde aparecern
las palabras acertadas, se me hizo muy fcil ya que pude entender el cdigo, que tambin
en una clase pasa la profesora ya nos haba explicado algo de esto.