Capitulo 4: La estructura del procedimiento principal de nuestro juego
INTRODUCCIÓN
============
Vamos a empezar ya a escribir c¢digo, empezaremos dise¤ando nuestro procedimiento principal para en posteriores cap¡tulos dise¤ar los procedimientos que controlen a las raquetas y a la pelota.
PROCEDIMIENTO PRINCIPAL
=======================
En nuestro juego deber¡amos ver claramente dos bucles, el primero y m s externo visualizar la pantalla de presentaci¢n hasta que se pulsa una tecla y en funci¢n de la tecla pulsada hace dos cosas: Empieza la partida o sale del juego. En el primer caso vemos el segundo bucle, que es la duraci¢n de la partida, estar en ‚l hasta que uno de los jugadores obtenga 3 puntos o se pulse la tecla ESCAPE.
Por tanto nuestro programa principal podr¡a ser del tipo:
PROGRAM PINPON;
USES UGO,CRT;
VAR
PV1 : PV; (* Una pantalla virtual *)
PV2 : PV; (* Otra pantalla virtual *)
PV3 : PV; (* Y la £ltima necesaria *)
Pal1 : Paleta; (* Una paleta de colores *)
Pal2 : Paleta; (* Otra paleta de colores *)
BEGIN
IniciaUGO;
(* Instalo la rutina de teclado de UGO *)
InstalaTeclado;
(* Creo las pantallas virtuales (reservo memoria) que alamacenaran las
imagenes IMAGEN1.PCX e IMAGEN2.PCX *)
CreaPV (320,200,PV1);
CreaPV (320,200,PV2);
(* Creo la tercer pantalla virtual que servir para escribir en ella:
El contenido de PV2 (la imagen de fondo), luego los sprites, luego
el marcador y ya se vuelca a la pantalla real. *)
CreaPV (320,200,PV3);
(* Activamos la clave del archivo BTF que creamos *)
ActivaClaveBTF ('PINPON.BTF','');
(* Cargo el archivo PCX de la presentacion y su paleta en las variables
definidas al principio del programa y tambi‚n el archivo de fondo de
la partida (tiene la misma paleta que el de presentacion) *)
BTFCargaPCX (0,0,'PINPON.BTF','IMAGEN1.PCX',Pal1,PV1);
BTFCargaPCX (0,0,'PINPON.BTF','IMAGEN2.PCX',Pal2,PV2);
(* Inicializo el modo gr fico *)
IniciaModoGrafico (VGA,320,200);
(* Establezco la paleta de colores de la imagen *)
CambiaPaleta (Pal1);
(* Visualizo la imagen copiando la pantalla virtual a la pantalla real *)
CopiaPV (PV1,Pantalla,0,0,0,0,320,200);
(*************************)
(* BUCLE DE PRESENTACION *)
(*************************)
REPEAT
(* Si queremos jugar *)
IF (Teclado[T_1]) THEN BEGIN
(* Borro la pantalla *)
BorraPV (Pantalla,0);
(* Activo la paleta de colores de la imagen del fondo de la partida *)
CambiaPaleta (Pal2);
(******************)
(* BUCLE DE JUEGO *)
(******************)
REPEAT
(* Borro la pantalla PV3 *)
BorraPV (PV3,0);
(* Vuelco el fondo de la pantalla a PV3 *)
CopiaPV (PV2,PV3,0,0,0,0,320,200);
EscribeCent (FNT,3,100,'Aqui iria la partida',14,0,PV3);
EscribeCent (FNT,3,120,'ESC para salir',14,0,PV3);
(* Vuelco PV3 a la pantalla real *)
CopiaPV (PV3,Pantalla,0,0,0,0,320,200);
UNTIL (Teclado[T_ESC]); (* o marcador de un jugador=3 *)
(* Vuelvo a visualizar la pantalla de presentacion *)
CambiaPaleta (Pal1);
CopiaPV (PV1,Pantalla,0,0,0,0,320,200);
END;
UNTIL (Teclado[T_2]);
(* Libero la memoria reservada de las pantallas virtuales *)
EliminaPV (PV1);
EliminaPV (PV2);
EliminaPV (PV3);
DesinstalaTeclado;
FinalizaUGO;
END.
Como vemos es una estructura sencilla del programa principal, destacar la utilizaci¢n de la variable de UGO Teclado que nos permite controlar varias teclas a la vez, para poder utilizarla ser necesario haber ejecutado la funcion InstalaTeclado. Otro aspecto importante es el de las pantalla virtuales, no son m s que zonas de memoria en el que grabamos un contenido y podemos volcarlo a otra pantalla virtual o a la pantalla real, por ejemplo PV1 y PV2 contendr n las dos imagenes (PRESENTACION y FONDO), para evitar que cada vez que necesitemos mostrarla tengamos que acceder al disco duro. PV3 es la pantalla virtual de mezcla que utilizaremos durante la partida. Como habr objetos m¢viles, mostrarlos directamente a pantalla, borrar la pantalla y mostrarlos otra vez en la posici¢n original produce una animaci¢n muy pobre, es por ello necesario la t‚cnica del doble buffer, que consisten en hacer la mezcla de los distintos objetos en una zona de memoria (Pantalla virtual) y copiar la pantalla virtual a la real, eso produce una animaci¢n m s suave. Como vemos dentro del bucle de partida, lo que se hace es borrar la pantalla de mezcla (PV3), copiar la pantalla de fondo (PV2) a la de mezcla (PV3), luego se copiar¡an los SPRITES (lo veremos en pr¢ximos cap¡tulos) y por £ltimo se copiar¡a PV3 a la pantalla real, as¡ las animaciones son mas suaves.
DESPEDIDA
=========
Ya hemos visto algo interesante, vamos evolucionando en nuestro juego poco a poco, en el pr¢ximo cap¡tulo ya veremos como hacer que las raquetas se muevan con el teclado. Se incluye el c¢digo fuente del programa adjunto a este fichero (PINPON.PAS)
Por: Ismael Fernandez Bustos