Colegio de educacin profesional tcnica del estado de
Veracruz Lic. Jess Reyes Heroles Plantel #165
Modulo: Programacin de videojuegos Docente: Miguel ngel Ramos Grande Alumna: Reina Mndez Daz Carrera: Informtica Matricula: 111650432-3 Tema: Reporte de la prctica #8 Elaboracin de una serpiente 3
Propsito: Elabora una aplicacin de videojuego mediante aproximaciones, para que evite parpadeos al avanzar. En la siguiente prctica, es la continuacin y conclusin de las prcticas 6 y 7. En la cual slo agregamos la utilizacin del doble Buffer. Presentacin del cdigo #include <allegro.h> /* Posiciones X e Y iniciales */ #define POS_X_INI 16 #define POS_Y_INI 10
#define INC_X_INI 1 #define INC_Y_INI 0 /* Pausa en milisegundos entre un "fotograma" y otro */ #define PAUSA 350 /* Teclas predefinidas */ #define TEC_ARRIBA KEY_E #define TEC_ABAJO KEY_X #define TEC_IZQDA KEY_S #define TEC_DCHA KEY_D int posX, posY; /* Posicion actual */ int incX, incY; /* Incremento de la posicion */ /* Terminado: Si ha chocado o comida todas las frutas */ int terminado; /* La tecla pulsada */ int tecla; /* Escala: relacion entre tama?o de mapa y de pantalla */ #define ESCALA 10 /* Ancho y alto de los sprites */ #define ANCHOSPRITE 10 #define ALTOSPRITE 10 /* Y el mapa que representa a la pantalla */ /* Como usaremos modo grafico de 320x200 puntos */ /* y una escala de 10, el tablero medira 32x20 */ #define MAXFILAS 20 #define MAXCOLS 32
char mapa[MAXFILAS][MAXCOLS]={ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "X X X", "X F X X", "X X F X", "X XXXXX X X", "X X X X", "X X X X X", "X X X X X", "X X X X", "X X X X", "X X X X", "X F X X", "X X X", "X X F X", "X X X X", "X X X X", "X X F X X", "X F X X X", "X X F X", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" };int numFrutas = 7;
/* Parte repetitiva: */ do { dibujaFondo(); draw_sprite (screen, jugador, posX*ESCALA, posY*ESCALA);
terminado = FALSE;
/* Si paso por una fruta: la borro y falta una menos */ if (mapa[posY][posX] == 'F') { mapa[posY][posX] = ' '; numFrutas --; if (numFrutas == 0) { textout(screen, font, "Ganaste!", 100, 90, palette_color[14]); terminado = TRUE; } }
/* Si choco con la pared, se acabo */ if (mapa[posY][posX] == 'X') { textout(screen, font, "Chocaste!", 100, 90, palette_color[13]); terminado = TRUE; } if (terminado) break; /* Compruebo si se ha pulsado alguna tecla */ if ( keypressed() ) { tecla = readkey() >> 8;
switch (tecla) { case TEC_ARRIBA: incX = 0; incY = -1; break; case TEC_ABAJO: incX = 0; incY = 1; break; case TEC_IZQDA: incX = -1; incY = 0; break; case TEC_DCHA: incX = 1; incY = 0; break; } } posX += incX; posY += incY; /* Peque?a pausa antes de seguir */ rest ( PAUSA ); } while (TRUE); /* Repetimos indefininamente */ /* (la condici?n de salida la comprobamos "dentro") */ readkey(); return 0; } /* Termino con la "macro" que me pide Allegro */ END_OF_MAIN(); En conclusin, aprendimos a conceptualizar el trmino de buffer apoyadas por el profesor, y tambin quedamos satisfechas porque concluimos sta prctica que pareca que no iba a tener fin por la continuidad que se le dio. Ya que se hizo un cdigo bastante extenso y nos llev como 2 semanas para realizar completamente esta prctica bastante complicada.