Tutorial de ZX Basic + Fourspriter #19: Bicharracos porculosos

Ahora lo que toca es meter algo de chicha en el juego, algo que nos de un poquito de por saco. Hay muchas formas de meter enemigos, y de muchos tipos. Para este tutorial, vamos a implementar un tipo de enemigo basados en máquinas de estados finitos sencillas, que son tontos del culo pero molestan que es un primor.

Este tipo de enemigos tendrá un estado inicial idle, en el cual ni siquiera aparecerán en pantalla. Un número aleatorio hará que despierten y pasen al estado apareciendo, con lo que se decidirá (al azar también) qué IA llevarán y qué gráfico tendrán y aparecerán en pantalla en un lugar aleatorio. Una vez hayan aparecido, pasarán al estado activo y empezarán a dar por saco. En este estado activo aplicaremos su IA en cada frame del juego para moverlo (IA por decir algo, más bien EA, de Estupidez Artificial, porque tampoco es que vayan a ser muy listos). Posteriormente, cuando dotemos al protagonista de disparar o de hacer algo que haga pupa (por decidir), tendrán un estado muriendo en el que se mostrará una animación de puf, y posteriormente volverán al estado idle. ¡Voie-la! Una máquina de estados finitos. Todo esto lo vamos a explicar en este capítulo y los tres o cuatro que le siguen.

En este capítulo introductorio simplemente ampliaremos el tileset con los gráficos de los bicharracos y explicaremos cómo funciona cada una de las tres IA que vamos a implementar. En el siguiente capítulo implementaremos paso a paso la máquina de estados finitos y, posteriormente, las IA que explicaremos en este. ¡Prestad atención!

Los enemigos, con vistas a poder reusarlos en otros güegos, los implementaremos íntegramente en un archivo bicharracos.bas, que contendrá todas las funciones, variables y constantes necesarias para manejarse con estos personajes de mala calaña.

Para simplificar, sólo he creado dos frames de animación por cada tipo de bicho. He hecho (mentira, he robado de otros juegos de los Mojon Twins) ocho enemigos diferentes. Los he pegado en el spriteset, justo debajo de los frames del protagonista. El frame se calculará, por tanto, como 64 + 8 * tipoEnemigo + 4 * frame, con tipoEnemigo de 0 a 7 y frame de 0 a 1 (el frame de animación).

Lo de siempre: reordenamos, importamos en SevenuP, exportamos como código C, y convertimos a BASIC.

 

Hablemos ahora de los tres tipos de IA que vamos a implementar:

Enemigos rebotantes: ¿Os acordáis del primer ejemplo de fourspriter que vimos en este tutorial? Pues eso mismo, pero teniendo en cuenta la traspasabilidad (también conocida como obstaculescencia) de los tiles de la pantalla. En cada frame, veremos si es posible mover a nuestro enemigo con dos desplazamientos mx y my que podrán valer -1 o 1. Si no es posible en alguno de los ejes, rebotaremos al enemigo en ese eje (cambiando el signo del m? implicado).

Enemigos acosadores: En los frames impares (para que el mastuerzo se mueva a la mitad de velocidad de nuestro prota), y siempre que sea posible teniendo en cuenta los tiles de la pantalla (ya sabéis, su traspasabilidad u obstaculescencia), el bicharraco se dirigirá hacia donde estemos nosotros. Esto se logra decrementando su posición X si la posición X del muñeco es menor, o incrementándola si es mayor, y lo mismo en el eje Y. Esto, en un laberinto cerrado, funciona como el culo, pero en sitios más abiertos da bastante el pego.

Enemigos pasodetuculistas: Estos enemigos pasan de tu culo, pero dan bastante por el idem en lugares estrechos. Estos comienzan eligiendo al azar una dirección (arriba, abajo, izquierda o derecha) y un número de pasos (de 4 a 8, por poner, aunque esto lo meteremos en un buen par de… constantes), y luego en cada frame del juego harán justo eso: moverse en esa dirección. Cuando hayan agotado el número de pasos o se hayan topado con un obstáculo, vuelta a empezar: eligen otra dirección y otro número de pasos, y etcétera etcétera.

Con estos tres tipos de IA, un par de enemigos en pantalla apareciendo al azar, cada enemigo con un gráfico y un color aleatorios, y un yogur de pera, nos quedará un desarrollo de lo más variado. ¿que no?

Lamentablemente, en este capítulo no hay paquetico. En el siguiente tendremos más chicha.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: