Imprimir
Categoría: Gráficos en Pascal
Visitas: 4668

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