Consultas, desarrollo de programas y petición de presupuestos:

martes, 13 de enero de 2015

1945: El Juego


1945: El Juego



Una de las cosas que siempre me han gustado es poder realizar juegos (aunque fueran simples) hechos por mi mismo... Bueno, pues buscando por intenet encontré este libro:  "Programación de Juegos para móviles con J2ME" de Alberto García Serrano , que aunque explica como hacer juegos para Java, es perfectamente adaptable a Gambas3.


1945: Versión realizada en Gambas3


Nuestro avión  se controla con las teclas del cursor, y el juego lleva incluido:
 - Movimiento del avión y de los enemigos (distintos tipos de enemigos)
 - Scrolling del mapa de fondo.
 - Disparos y explosiones
 - Inteligencia artificial:  Mediante una máquina de estado se controlan los aviones enemigos.
 - Cálculo de Colisiones (entre enemigos y nuestro avión, entre nuestras bombas y los enemigos y entre las bombas de los enemigos con nuestro avión)

Vemos un poco del código:
El esquema del proyecto es el siguiente:
Como veis tenemos la clase Sprite, que es padre de varias clases. Es la clase encargada de manejar las imágenes (los sprites o tiled). Luego tenemos varias que heredan de ella, que se encargan de especificar en concreto como se mueven o la tipo de avión (en el caso de los enemigos que tenemos varios tipos de movimientos)

El "game loop", el corazón del juego, se realiza mediante un objeto Timer, que actualiza la posición de los objetos (aviones, disparos, explosiones, cálculo de colisiones)
-
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. Public Sub TimerRedibujar_Timer()
  2.  
  3.   Dim aviontmp As Sprite
  4.   Dim disparotmp As Sprite
  5.   Dim explosion As Explode
  6.  
  7.   If ciclo > 200 Then
  8.     creaenemigo()
  9.     ciclo = 0
  10.   Else
  11.     ciclo += 1
  12.   Endif
  13.  
  14.   'mover los aviones....
  15.   For Each aviontmp In grupoAviones
  16.     aviontmp.mover()
  17.   Next
  18.  
  19.   'mover disparos
  20.   For Each disparotmp In grupoDisparosPropios
  21.     disparotmp.mover()
  22.   Next
  23.  
  24.   'mover disparos enemigos
  25.   For Each disparotmp In grupoDisparosEnemigos
  26.     disparotmp.mover()
  27.   Next
  28.  
  29.   analizaColisiones()
  30.   'mover explosiones
  31.   For Each explosion In grupoExplosiones
  32.     explosion.mover()
  33.   Next
  34.  
  35.   DrawingArea1.Refresh()
  36.  
  37. End

-

y luego llama al evento _draw del DrawingArea, para que se redibuje todo:
-
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. Public Sub DrawingArea1_Draw()
  2.   'dibujar los objetos que haya....
  3.  
  4.  Dim aviontmp As Sprite
  5.  Dim disparo As Sprite
  6.  Dim explosion As Explode
  7.  'dubjar elementos de la pantalla
  8.   fondo.dibuja()
  9.  
  10.   For Each aviontmp In grupoAviones
  11.     aviontmp.dibuja()
  12.   Next
  13.  
  14.   For Each disparo In grupoDisparosPropios
  15.     disparo.dibuja()
  16.   Next
  17.  
  18.   For Each disparo In grupoDisparosEnemigos
  19.     disparo.dibuja()
  20.   Next
  21.  
  22.   For Each explosion In grupoExplosiones
  23.     explosion.dibuja()
  24.   Next
  25.  
  26. End

-

Descarga el código fuente el instalador y libro en: alojado en https://drive.google.com


Espero que os guste.

Saludos

Julio




2 comentarios:

  1. Un gran trabajo, si señor.

    No se a que es debido, pero al ejecutar el juego, en la horizontalidad de la parte de abajo, "tiles" creo que se llama, desaparece antes de tiempo, ¿a que puede deberse? No se si me explicado bien.

    Un saludo.

    ResponderEliminar
    Respuestas
    1. ¿cual es tu microprocesador (la cpu)?
      ¿tienes la aceleración gráfica activada?

      Eliminar