Capitulo 5: Programando las raquetas de juego.    

INTRODUCCION  
============  
Vamos a aprender en este cap¡tulo como mover las raquetas de juego. En  nuestro juego ser necesario conocer en todo momento las coordenadas (X,Y)  que tiene cada una de las raquetas, y controlar si se pulsan las teclas  que hacen que se mueva, como hay dos raquetas que se controlan con  distintas teclas podr¡amos crear dos procedimientos, uno para cada una  de ellas o almacenar también las teclas que hacen moverlas en variables  y un único procedimiento que recibe como par metros las teclas que lo  hacen mover y las coordenadas que se deben incrementar o decrementar.  Parece m s cómoda la segunda opci¢n pero a£n puede serlo m s si  en vez de hacer que reciba tantos par metros definimos un nuevo tipo  que tenga todos esos campos y declaramos dos variables de este tipo, que  son las que recibe el procedimiento que las controla. Algo del tipo:     

 

 

TYPE

Raqueta = RECORD

X,Y : INTEGER; (* Coordenadas *)

TArr,TAba : BYTE; (* Teclas que lo controlan *)

Imagen : BYTE; (* Numero de imagen dentro del BSF *)

Puntos : BYTE; (* Puntuaci¢n de cada raqueta *)

END;

VAR

RaquetaRoja, RaquetaAzul : Raqueta;

PROCEDURE Inicializaciones;

BEGIN

(* Inicio las coordenadas de las raquetas y las teclas que las controlan *)

RaquetaRoja.X:=20;

RaquetaRoja.Y:=90;

RaquetaRoja.Imagen:=1;

RaquetaRoja.TArr:=T_Q;

RaquetaRoja.TAba:=T_A;

RaquetaRoja.Puntos:=0;

RaquetaAzul.X:=300;

RaquetaAzul.Y:=90;

RaquetaAzul.Imagen:=2;

RaquetaAzul.TArr:=T_ARRIBA;

RaquetaAzul.TAba:=T_ABAJO;

RaquetaAzul.Puntos:=0;

END;

PROCEDURE ControlaRaqueta (VAR QueRaqueta : Raqueta);

BEGIN

IF ((Teclado[QueRaqueta.TArr]) AND (QueRaqueta.Y>10)) THEN DEC (QueRaqueta.Y);

IF ((Teclado[QueRaqueta.TAba]) AND (QueRaqueta.Y<141)) THEN INC (QueRaqueta.Y);

PonSpriteBSF (QueRaqueta.X,QueRaqueta.Y,QueRaqueta.Imagen,Sprites,PV3);

END;

 

 

El campo Imagen del tipo de variable almacena el n£mero de sprite dentro  del archivo BSF es el que le corresponde visualizar, as¡ si recordamos,  el primer archivo del BSF era ROJO.SPR luego haremos RaquetaRoja.Imagen:=1;  y el segundo era AZUL.SPR luego haremos RaquetaAzul.Imagen:=2;  Para que cuando hagamos PonSpriteBSF en el procedimiento de controlar la  raqueta le digamos las coordenadas y el n£mero de sprite en funci¢n de la  variable de tipo raqueta que recibe.  Observar adem s que donde le indico que quiero que dibuje el sprite es  en la pantalla de mezcla (PV3) para hacer una animaci¢n suave.  OJO!!!! para poder dibujar uno de los sprites es necesario haber cargado  el fichero BSF en una variable de tipo SPRITEBSF, en mi caso se llama  SPRITES (Ver el c¢digo fuente (PINPON.PAS) en caso de duda).  Para controlar las posiciones de las raquetas lo que hacemos es comprobar  si se pulsa alguna de las teclas de movimiento, si es as¡, decrementamos  o incrementamos la coordenada Y de la raqueta recibida como par metro.  Adem s se establece un rango de movimiento para que las raquetas no puedan  salir de la pantalla.  En el programa principal bastar con cambiar las l¡neas que escribian en  pantalla por: ControlaRaqueta (RaquetaRoja);  ControlaRaqueta (RaquetaAzul);  y ya estar , al ejecutar el programa las raquetas funcionar n correcta-  mente con las teclas (en mi ejemplo) Q,A (Roja) y Arriba, Abajo (Azul).  Ya que definimos un tipo de variable para almacenar las teclas... ser  necesario inicializar cada variable de ese tipo con unos valores correctos,  por claridad creamos un nuevo procedimiento para incializar las variables.  OJO!!! Hay que tener en cuenta que las posiciones de las raquetas y los  puntos deben inicializarse cada vez que empieza una partida por lo que  justo antes de entrar en el bucle de partidas es cuando llamamos al modulo  de inicializaciones.  Como vemos es un buen m‚todo el definir nuevos tipos de variable para cada  elemento del juego, aunque la bola solo tenga dos variables (X,Y) la  implementaremos como un tipo por comodidad.    

 

DESPEDIDA  
=========  
Hasta aqu¡ el cap¡tulo de hoy, ya hemos aprendido a mover sprites en  funci¢n de las teclas pulsadas y hacer la animaci¢n mediante el volcado  de pantallas virtuales. En el pr¢ximo cap¡tulo controlaremos la bola.  No olvides que siempre encontraras el c¢digo fuente completo de todo lo  que llevamos hecho para que compares con tu c¢digo (PINPON.PAS)    

Por: Ismael Fernandez Bustos