Esta vez tampoco ha pasado mucho tiempo desde la última vez.
Hoy traigo otra demo, pero esta vez es de Megaman también hecho en Java.
Cómo surgió:
Sabía que aún debía aprender cosas, así que sabía que iba a hacer otra demo. Esta vez no quería matrices de por medio, quería trabajar con una posición "X" e "Y" absolutas.
Pensando en cosas que estuvieran a mi alcance, pensé en juegos de la SNES. Los recursos son fáciles de coger y por lo que me facilitaría muchos dolores de cabeza. Ya revisando juegos que tenía y que me gustaría hacer, pensé en una escena en concreto que ocurre en Megaman VII y que a mí personalmente me encantaba jugar cuando era más pequeño.
La escena en concreto era esta, en el minuto 5:08:
Es una escena bastante simple en la que la cámara no se mueve, el escenario es plano y Bass no tenía un moveset complicado de realizar (a pesar de que no lo haya calcado al final), por lo que para mí era perfecto.
Un mes he tardado y el resultado es este:
![]() |
Imágenes de la demo de Megaman v1.0 |
Realización:
La realización ha sido bastante sencilla, ya que esta vez no era necesario usar matrices, por lo que todo el trabajo entre coordenadas era mucho más sencillo de realizar.
Los personajes y proyectiles tenían una clase padre la cuál englobaba las coordenadas, la velocidad a la que se movían por el mapa y la imagen actual que tiene el objeto, aunque en el caso de los personajes tenían muchas más imágenes guardadas y muchas otras variables de las que no voy a hablar.
El método para pintar sobre la pantalla ha sido a través de timers; al igual que la animación y muchas otras cosas que no usé en la demo de Pokémon. Por lo que si hay algo "útil" que he aprendido en este proyecto en Java, diría que ha sido eso.
La forma de pintar si que ha sido la misma que en la demo de Pokémon. Se pinta todo en un mapa más grande, luego se hace el recorte de esa imagen de la zona que quieres mostrar y ese recorte pasa a la pantalla final.
La animación por su parte, es simplemente cambiar la imagen a otra cada "X" milisegundos. Es decir, si yo me muevo a la derecha, mando la orden de animar el movimiento; y mientras me esté moviendo, la imagen cambiará cada "X" milisegundos a otra de las asociadas al movimiento. Para el resto de animaciones la idea es la misma.
La colisión es simplemente comparación de coordenadas. Todas estás imágenes son rectangulares, tomando como referencia la "X" e "Y" de la esquina superior izquierda de la imagen. Cada vez que haya un movimiento de las coordenadas, habrá que hacer una comprobación de colisión con el resto de objetos presentes en las escena. Si los rectángulos de las imágenes chocan entre sí o se atraviesan, habrá una colisión.
Eso es prácticamente todo lo destacable a nivel de realización.
Cómo jugar:
Al igual que los proyectos anteriores, para jugar necesitaréis Java. Es importante que descarguéis la versión acorde a vuestro sistema (32 bits/64 bits).
https://www.java.com/es/download/windows_xpi.jsp?locale=es
Y aquí el link al .jar (el ejecutable) de la demo.
https://www.dropbox.com/s/plun81odzn3cabz/Megaman.jar?dl=0
Controles:
Moverse: Usar las teclas de dirección del teclado.
Saltar: "A".
Disparar: "S".
Deslizarse: Mientras presionas abajo, pulsa "A".
Estáis invitados a probarlo y a jugar cuando queráis. Si os surgiera algún fallo o algo que queráis comentar, podéis usar los comentarios ;).
Eso es todo, espero que sea de vuestro agrado.
Gracias.