![]() |
|||||
|
APLICANDO ESTRUCTURAS PARA JUEGOS CON 2 JUGADORES Ahora
vamos a desarrollar un ejemplo que muestra como puede un juego manejar a dos
jugadores a través del mismo teclado. Program DosJugadores // Las estructuras son usadas para
almacenar toda la información // concerniente al
Sprite que un jugador va a utilizar Structure SpriteJugador Nombre As String Imagen
As String X As Decimal Y As Decimal End Structure Method Main() // De esta forma se tendrá un Sprite
distinto para cada uno // de los dos
jugadores, pero controladas individualmente con el teclado Var Ovni As SpriteJugador Var EstacionEspacial As SpriteJugador // SetDeviceCoordinates()
hace que KPL utilice un sistema de // coordenadas
donde la esquina superior izquierda es el punto (0,0) SetDeviceCoordinates() // El Jugador Uno va a controlar el
Ovni Ovni.X = 400 Ovni.Y = 240 Ovni.Nombre = "Jugador
Uno" Ovni.Imagen = "UFO.GIF" // El Jugador Dos va a controlar EstacionEspacial.X = 150 EstacionEspacial.Y = 200 EstacionEspacial.Nombre = "Jugador
Dos" EstacionEspacial.Imagen = "SpaceStation.GIF" LoadSprite(Ovni.Nombre,
Ovni.Imagen ) MoveSpriteToPoint(Ovni.Nombre,
Ovni.X, Ovni.Y ) //
Las 2 imágenes usada solo contiene 6 cuadros de animación, lo que crea el
efecto de giro sobre su // eje. Para
crear la animación se va a utilizar un arreglo de 6 valores Enteros, que le
digan al Sprite // que tanto
tiempo desplegar un cuadro de animación antes de pasar al siguiente. Var LineaDeTiempo As Int[6] LineaDeTiempo [1] = 50 LineaDeTiempo [2] = 50 LineaDeTiempo [3] = 50 LineaDeTiempo [4] = 50 LineaDeTiempo [5] = 50 LineaDeTiempo [6] = 50 // Se le introduce la línea de tiempo al Ovni SetSpriteAnimationTimeline(Ovni.Nombre,
True, LineaDeTiempo) // Se despliega el Ovni ShowSprite(
Ovni.Nombre ) LoadSprite(EstacionEspacial.Nombre,
EstacionEspacial.Imagen ) MoveSpriteToPoint(EstacionEspacial.Nombre,
EstacionEspacial.X, EstacionEspacial.Y) // Se le introduce la línea de tiempo a
SetSpriteAnimationTimeline(EstacionEspacial.Nombre,True, LineaDeTiempo) // Se despliega ShowSprite(EstacionEspacial.Nombre
) // El uso de estas 2 variables se
explica más adelante Var UltimaRevision As Decimal = 0.0 Var HoraActual As Decimal // Este ciclo se repetirá
indefinidamente hasta que el usuario oprima el botón de detener la // localizado
en la esquina superior izquierda de la ventana While True // Se revisa la hora actual del
sistema HoraActual = TickCount() // Si no han pasado 50 milisegundos desde la
última vez que
se revisó no se hace nada. // Esto se realiza con el objetivo
de reducir la velocidad de operación del juego a una que los // humanos
puedan manejar, debido a que las computadoras son tan rápidas que ejecutarían // los
pasos más rápido que lo que un humano podría responder. If HoraActual - UltimaRevision > 50 Then // El Jugador Uno controla el Ovni utilizando las flechas en el teclado →↑←↓ If IsKeyDown("Right") Then Ovni.X = Ovni.X + 10 End If If IsKeyDown("Left") Then Ovni.X = Ovni.X - 10 End If If IsKeyDown("Up") Then Ovni.Y = Ovni.Y - 10 End If If IsKeyDown("Down") Then Ovni.Y = Ovni.Y + 10 End If // Se mueve el Ovni MoveSpriteToPoint( Ovni.Nombre,
Ovni.X, Ovni.Y ) // El Jugador Dos controla a // Si se presiona la tecla 'D' If IsKeyDown("D") Then EstacionEspacial.X = EstacionEspacial.X + 10 End If // Si se presiona la tecla 'A' If IsKeyDown("A") Then EstacionEspacial.X = EstacionEspacial.X - 10 End If // Si se presiona la tecla 'W' If IsKeyDown("W") Then EstacionEspacial.Y = EstacionEspacial.Y -
10 End If // Si se presiona la tecla 'S' If IsKeyDown("S") Then EstacionEspacial.Y = EstacionEspacial.Y + 10 End If // Se mueve MoveSpriteToPoint(EstacionEspacial.Nombre,
EstacionEspacial.X, EstacionEspacial.Y ) // Después de mover ambos Sprites se
coloca como el tiempo de la última revisión a la hora // actual.
De esta forma esperaremos otros 50 milisegundos desde este momento hasta que
ambos // Sprites se puedan mover
nuevamente. UltimaRevision = HoraActual End If End While End Method End Program
|
|||||
|
|||||
![]() |
|||||