Вы находитесь на странице: 1из 6

Colegio de educacin profesional tcnica del

estado de Veracruz. Plante #165 Lic. Jess Reyes


Heroles

Modulo: Programacin de videojuegos
Docente: Miguel ngel Ramos Grande
Alumnos:
Karen Lizbeth Nolasco Garca.
Manuel Alexis Hurtado Morales.
Carrera:
Informtica
Tema: Practica 11: Aplicacin de matemticas
para Juego: Tiro Al Plato. Usando lenguaje de
programacin
Propsito: Elabora una aplicacin de videojuego
de Tiro Al plato usando lenguaje de programacin
para la aplicacin de conceptos de geometra
plana.
Tuxpan Veracruz de Rodrguez Cano.
En esta prctica realizaremos un juego de tiro al plato, el cual consiste de un paisaje en el
cual se van tirando platos y con el mouse vamos rompiendo los mismo y vamos ganando
puntos.
Comenzamos declarando las libreras a utilizar ya que son importantes en el videojuego.

#include <stdlib.h> // Para declarar lo que es el "rand"
#include <math.h> // Para declarar lo que es el "sqrt"
#include <allegro.h>


Definimos 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

Definimos las variables Globales.
int
TamanyoDianaActual,
numDianaActual,
posXdiana,
posYdiana,
radioDiana,
incremXdiana,
incremYdiana,
acertado = 0; // Si atinamos a un plato, pasa otro plato nuevo.

long int
puntos = 0,
contadorActual = 0;

float
a,b,c; // Se dibuja la parbola del plato.


/* -------------- Se empieza con la Rutina de inicializacin -------- */
int inicializa()
{
allegro_init(); // Se inicia Allegro
install_keyboard();
install_timer();
install_mouse();

// Intentamos entrar a modo grafico
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;
}

// Ahora se inicializan las variables
numDianaActual = 1;
srand(time(0));
show_mouse(screen);

// Y termino indicando que no ha habido errores
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
pParabola = 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;
}


/* -------------- Rutina de 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[13],
"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[13],
"Platos: %d", NUMDIANAS-numDianaActual);
}

unscare_mouse();
}


/* -------------- Distancia entre dos puntos ------ */
float distancia(int x1, int x2, int y1, int y2) {
return (sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)) );
}
/* -------------- Rutinas 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 mouse
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 ++;

} while (numDianaActual <= NUMDIANAS);


redibujaPantalla();
scare_mouse();
textprintf(screen, font, 40,100, palette_color[15],
"Partida terminada");
unscare_mouse();
readkey();
return 0;

}END_OF_MAIN() Aqu termina Allegro.





Programa compilado


Conclusin: En esta prctica realizamos un videojuego con el uso del mouse ya
que al dar clic en el plato este se rompe y pasa otro plato y se acumulan puntos,
tuvimos que conocer e investigar ms comandos, y definimos constantes.
Aqu se muestran los puntos
que llevamos acumulados.
Plato
Indica que nuestra partida ha
terminado

Вам также может понравиться

  • Ramos Practica 11 C
    Ramos Practica 11 C
    Документ6 страниц
    Ramos Practica 11 C
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Practica 12 MRDE
    Practica 12 MRDE
    Документ11 страниц
    Practica 12 MRDE
    Alexis Hurtado
    Оценок пока нет
  • Reporte Practica 8
    Reporte Practica 8
    Документ7 страниц
    Reporte Practica 8
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Práctica 10 Ramos
    Práctica 10 Ramos
    Документ16 страниц
    Práctica 10 Ramos
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Práctica 8
    Práctica 8
    Документ10 страниц
    Práctica 8
    Alexis Hurtado
    Оценок пока нет
  • Proyecto MRDE
    Proyecto MRDE
    Документ31 страница
    Proyecto MRDE
    Alexis Hurtado
    Оценок пока нет
  • Reporte MQE
    Reporte MQE
    Документ10 страниц
    Reporte MQE
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Práctica 8
    Práctica 8
    Документ10 страниц
    Práctica 8
    Alexis Hurtado
    Оценок пока нет
  • Reporte MQE
    Reporte MQE
    Документ10 страниц
    Reporte MQE
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Practica 13 Ramos
    Practica 13 Ramos
    Документ11 страниц
    Practica 13 Ramos
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Practica 13 Ramos
    Practica 13 Ramos
    Документ11 страниц
    Practica 13 Ramos
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • POVI Practica02
    POVI Practica02
    Документ2 страницы
    POVI Practica02
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Reporte MQE
    Reporte MQE
    Документ10 страниц
    Reporte MQE
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Práctica 10 Punteria
    Práctica 10 Punteria
    Документ5 страниц
    Práctica 10 Punteria
    Alexis Hurtado
    Оценок пока нет
  • Practica 4
    Practica 4
    Документ17 страниц
    Practica 4
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Practica 9 Ramos
    Practica 9 Ramos
    Документ19 страниц
    Practica 9 Ramos
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Practica 11 Ramos
    Practica 11 Ramos
    Документ8 страниц
    Practica 11 Ramos
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Práctica 6 MRDE
    Práctica 6 MRDE
    Документ8 страниц
    Práctica 6 MRDE
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Practica7 Reporte
    Practica7 Reporte
    Документ4 страницы
    Practica7 Reporte
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Practica7 Reporte
    Practica7 Reporte
    Документ4 страницы
    Practica7 Reporte
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Practica 5
    Practica 5
    Документ6 страниц
    Practica 5
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Ramos Practica 4
    Ramos Practica 4
    Документ7 страниц
    Ramos Practica 4
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Practica 4
    Practica 4
    Документ17 страниц
    Practica 4
    Kareen Lizbeeth NOlaasco D'Juarez
    100% (1)
  • Practica7 Reporte
    Practica7 Reporte
    Документ4 страницы
    Practica7 Reporte
    Alexis Hurtado
    Оценок пока нет
  • Practica 5 Ramos
    Practica 5 Ramos
    Документ7 страниц
    Practica 5 Ramos
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Actividades Del Blog
    Actividades Del Blog
    Документ32 страницы
    Actividades Del Blog
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Web Quest
    Web Quest
    Документ5 страниц
    Web Quest
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Actividad 1 Terminado
    Actividad 1 Terminado
    Документ5 страниц
    Actividad 1 Terminado
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет
  • Actividad2 (Yolanda) Terminar
    Actividad2 (Yolanda) Terminar
    Документ6 страниц
    Actividad2 (Yolanda) Terminar
    Kareen Lizbeeth NOlaasco D'Juarez
    Оценок пока нет