Sie sind auf Seite 1von 7

COLEGIO DE EDUCACION PROFESIONAL TECNICA DEL ESTADO DE

VERACRUZ
PLANTEL Lic. Jess Reyes Heroles #165


UNIDAD: 2


NOMBRE DEL ALUMNO: MATRCULA:
Martha L. Lorenzo Cervantes 111650276- 4

DOCENTE:
ING. MIGUEL ANGEL RAMOS GRANDE


MDULO:
PROGRAMACION DE VIDEOJUEGOS

CARRERA: GRUPO: SEMESTRE:
Profesional Tcnico en Informtica 603 6




TITULO DE LA INVESTIGACIN O TAREA:

PRACTICA NUMERO 11










OBSERVACIONES:












CALIFICACIN
Este Es El Cdigo Del Programa Que Se Juega Con El Mouse Y No Con Teclado:

#include <stdlib.h> // Para "rand"
#include <math.h> // Para "sqrt"
#include <allegro.h>

//Se declaran las constantes globales
#define ANCHOPANTALLA 320
#define ALTOPANTALLA 200
#define MAXRADIODIANA 25
#define MINRADIODIANA 5
#define NUMDIANAS 12
#define MAXINCREMXDIANA 20
#define MININCREMXDIANA 10
#define RETARDO 7
//Declaramos las variables globales
int
TamanyoDianaActual,
numDianaActual,
posXdiana,
posYdiana,
radioDiana,
incremXdiana,
incremYdiana,
acertado = 0; // Si se acierta -> plato nuevo

long int
puntos = 0,
contadorActual = 0;
float
a,b,c; // Para la parbola del plato
//Ahora la rutina de inicializacin donde iniciamos en allegro e intentamos entrar a modo grfico...
int inicializa()
{
allegro_init();
install_keyboard();
install_timer();
install_mouse();

if (set_gfx_mode(GFX_SAFE, ANCHOPANTALLA, ALTOPANTALLA, 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;
}
numDianaActual = 1;
srand(time(0));
show_mouse(screen);
return 0;
}
//Rutina de nuevo plato
void nuevoPlato()
{
int xVerticeParabola,
yVerticeParabola;
float pParabola;
// Un radio al azar entre el valor mximo y el mnimo
radioDiana = (rand() % (MAXRADIODIANA - MINRADIODIANA))
+ MINRADIODIANA;
// La velocidad (incremento de X), similar
incremXdiana = (rand() % (MAXINCREMXDIANA - MININCREMXDIANA))
+ MININCREMXDIANA;
// Vrtice de la parbola, cerca del centro en horizontal
xVerticeParabola = ANCHOPANTALLA/2 + (rand() % 40) - 20;
// Y mitad superior de la pantalla, en vertical
yVerticeParabola = (rand() % (ALTOPANTALLA/2));

// Calculo a, b y c de la parbola
Parabola = ALTOPANTALLA/2;
a = 1 / (2*pParabola);
b = -xVerticeParabola / pParabola;
c = ((xVerticeParabola*xVerticeParabola) / (2*pParabola) )
+ yVerticeParabola;
// Posicin horizontal: junto margen izquierdo
posXdiana = radioDiana;
// Posicin vertical: segn la parbola
posYdiana =
a*posXdiana*posXdiana +
b*posXdiana +
c;
}
//Redibujar pantalla...
void redibujaPantalla()
{
// Oculto ratn
scare_mouse();
// Borro pantalla
clear_bitmap(screen);
// Sincronizo con barrido para menos parpadeos
vsync();
// Y dibujo todo lo que corresponda
rectfill(screen,0,0,ANCHOPANTALLA,ALTOPANTALLA-40,
makecol(70, 70, 255)); //Cielo
textprintf(screen, font, 4,4, palette_color[11],
"Puntos: %d", puntos); // Puntuacin
rectfill(screen,0,ALTOPANTALLA-40,ANCHOPANTALLA,ALTOPANTALLA,
makecol(0, 150, 0)); //Suelo
circlefill(screen,
posXdiana, posYdiana, radioDiana,
palette_color[15]); // Diana
if (numDianaActual <= NUMDIANAS) {
textprintf(screen, font, 4,190, palette_color[10],
"Platos: %d", NUMDIANAS-numDianaActual);
} // Restantes, si no acab

unscare_mouse();
}
//Distncia entre dos puntos
float distancia(int x1, int x2, int y1, int y2) {
return (sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)) );
}
//Rutina de temporizacin
volatile long int contador = 0;

void aumentaContador(void) { contador++; }
END_OF_FUNCTION(aumentaContador);
//Cuerpo del programa
int main()
{
// Intentamos inicializar
if (inicializa() != 0)
exit(1);
// Bloqueamos la variable y la funcin del temporizador
LOCK_VARIABLE( contador );
LOCK_FUNCTION( aumentaContador );
// Y ponemos el temporizador en marcha: cada 10 milisegundos
install_int(aumentaContador, 10);
do { // Parte que se repite para cada plato

nuevoPlato(); // Calculo su posicin inicial
redibujaPantalla(); // Y dibujo la pantalla
acertado = 0; // Todava no se ha acertado, claro

do { // Parte que se repite mientras se mueve

// Compruebo el ratn
if (mouse_b & 1) {
if (distancia(mouse_x, posXdiana, mouse_y,posYdiana)
<= radioDiana) {
puntos += ANCHOPANTALLA-posXdiana;
acertado = 1;
}
}

// Si ya ha pasado el retardo, muevo
if (contador >= contadorActual+RETARDO) {
contadorActual = contador+RETARDO;
posXdiana += incremXdiana;
posYdiana =
a*posXdiana*posXdiana +
b*posXdiana +
c;
redibujaPantalla();
}
} while ((posXdiana <= ANCHOPANTALLA - radioDiana)
&& (acertado == 0));
numDianaActual ++; // Siguiente diana

} while (numDianaActual <= NUMDIANAS);

redibujaPantalla();
scare_mouse();
textprintf(screen, font, 40,100, palette_color[2],
"Partida terminada");
unscare_mouse();
readkey();
return 0;
}
/* Termino con la "macro" que me pide Allegro */
END_OF_MAIN();











Como ven aqu ya se hicieron las declaraciones



Aqu compilamos para detectar errores y como ven si
se detectaron erroresNos faltaban variables, esta
parte es donde se introducen los platillos







Aqu de nuevo volvi a marcar error porque no declaramos o
pusimos igual que como se declar









Una vez terminado el programa compilamos para empezar a jugar, probar que todo est bien y
funcionando


como podemos ver la primer pantalla si funciona y el primer platillo
es grande

En esta segunda pantalla el platillo es pequeo

Y como pueden ver en la ltima pantalla pues nos muestra los puntos
que acumulaste y el final de la partida, por ultimo este programa se
juega con el mas y no con el teclado

Das könnte Ihnen auch gefallen