Propaganda Oculta
Anclado
Veinte días. Prácticamente tres semanas. La primera de esas semanas me la pasé pensando en lo que seguía y cómo le iba a hacer. Y después de eso he tenido algunos avances.
El monito que puse en la escenografía ya interactúa correctamente con todo lo demás. Es decir, da la impresión de que está anclado en la escenografía cuando ésta se mueve, y el cursor detecta si está sobre el mono o no. Se lee muy fácil pero para llegar ahí tuve que cambiar varias cosas.
Ahora tengo cuatro capas: escenografía, criaturas, extras, y menús. El cursor es un poco más independiente, pero se "dibuja" en la capa de menús. Cambié la interface de movimiento del cursor de cuatro funciones (una para cada direccion) a una función
move(direction), lo que resulta en código mucho más limpio y fácil de mantener.
En general, estuve muy contento esos días que estuve haciendo esos cambios, pero otra vez ya tengo como cuatro días sin avanzar.
Ahorita quiero generalizar el Menú. Actualmente es el Menú del Sistema, pero eso es muy específico. Quiero generalizarlo para poderlo especializar en Menú Aliado, Menú Enemigo (o Aliado Sin Acciones), etcétera, etcétera, sin tener que batallar mucho. Y después de eso, pues a ver qué puedo poner a hacer al mono éste.
Avances durante el puente
Esto de hacer video juegos está difícil.
Tuve un puentezote de cuatro días, de viernes a lunes, y durante ese tiempo logré lo que quería lograr: Ya puedo abrir un menú con cuantas opciones quiera, y tiene un cursor que se mueve de opción en opción. Y el funcionamiento del menú está completamente separado del funcionamiento de la escenografía.
Lo que seguía era lo de los diferentes tipos de terreno de combate, pero decidí posponerlo porque hubiera sido una chamba tediosa y aburrida, y el resultado sería nada impresionante.
Así que me fuí directo a poner un personaje en la escenografía. Ponerlo así nada más no fue complicado; el problema fue que no interactuó muy bien con ningún otro elemento del juego. Y pues eso requiere que me siente otro rato a re-pensar (otra vez) la estructura del código, las capas de
sprites, y ese tipo de cosas. Todavía estoy en esto.
En teoría, ya que el mono pinte bien, no sería descabellado abrir un menú con sus acciones, elegir cualquiera de ellas, cambiar el cursor para reflejar la acción actual, y llevar a cabo por lo menos la acción
Mover.
Atacar implica tener más de un mono en la escenografía, y saber si el otro mono es aliado o enemigo.
Magia implica muchas horas programando la animación de cualquiera de los hechizos.
Status requiere abrir una ventana parecida a un menú, pero sin cursor, y con mucha información cuya alineación hay que planear a mano. Y
Tactics,
pues hasta eso nomás requiere abrir otro menú, seleccionar una de cuatro opciones, y cambiar un pequeño ícono según la selección. Ok, entonces trataré de tener
Move y
Tactics listos antes de tomar cualquier otra decisión.
¿Horas? Híjuela. Creo que mejor me olvido de las horas; me temo que las inventaría demasiado seguido.
Un paso pa' trás ...
... ¿y dos pa' adelante? Eso espero. Ayer descubrí que tengo que rehacer una bola de cosas para lograr que el control del teclado pase grácil y elegantemente del cursor en el campo de batalla al cursor en el menú. Me he pasado fácil unas dos horas (unos minutos aquí, unos minutos allá) pensando en cómo va a estar esa interacción, pero creo que ya lo tengo bien planeado. De ésas dos horas, creo que solo una debe contar, pues no estuve todo ese tiempo sentado frente a la computadora. Oséase: 8.5 horas.
Advertencia: lo que sigue puede contener lenguaje obsceno (que puede ser no apropiado para menores), sentido del humor poco usual (que puede ser no apropiado para adultos), y técnicas de programación de computadoras (que puede ser no apropiado para licenciados).*
Tengo hasta ahora dos capas de imágenes (seguro que necesitaré más dentro de poco), una de fondo y otra de frente, ¡jha! Bueno, el programa pinta las capas de atrás para adelante, así que la de fondo tiene el campo de batalla, y la de frente tiene el cursor. Cuando se abre el menú, el fondo del mismo lo pinto en la capa de fondo (suena lógico, pero no lo es tanto), y los bordes y las opciones van en la capa de frente.
El gran cambio es que el área de batalla, que de ahora en adelante llamaré
escenografía, será el dueño del cursor (ahorita son dos objetos separados), de la misma manera que el menú es dueño de su propio cursor. Así, el programa solo tiene que saber si la orden
muévete para arriba hay que enviársela a la escenografía o al menú, y ya cada uno sabrá lo que significa y representa el moverse para arriba.
Este cambio también implica que tengo que asegurarme que tanto la escenografía como el menú implementen la misma
interface, es decir, que acepten las mismas órdenes.
* Basado en el pie de página de
xkcd.com