Como el tema de la interacción ya estaba resuelto, ahora solo restaba afrontar la realidad, y ponerme a ver cómo hacer para que mi pantalla tenga "cosas" y darle un poco de alegría, un poquito al menos.
Creé un sprite muy bello, lo llamé "cuadrado" (super original).
Cada cuadrado fue creado con el editor de sprites del gamemaker, el cual fue muy simple y efectivo. Cada uno mide 36x36 pixels, y van cambiando según lo que el usuario ingresa.
Como primerísima instancia, tenía que crear un objeto, para luego instanciarlo en el room. Lo denominé "cuad", le puse como sprite al que ven arriba, y en su "create event" le puse "image_index = 0", e "image_speed = 0", para que su imagen al ser creado sea el espacio vacío y que no vaya cambiando, ya que estos sprites funcionan a modo de gif. De no haberle puesto el speed en cero iría cambiando por sí solo con la velocidad predeterminada.
Una vez creado el objeto "cuad", tenía que encontrar la manera de hacerlo aparecer por código en el room, ya que se necesitan crear X cantidad de estos por partida. Para lo mismo, tuve que usar la función "instance_create" del gamemaker. Esta función te deja crear una instancia de un objeto en una "x" y una "y" determinada. Para no hacer el código muy pesado, decidí modularlo, creando una función llamada "generar".
La función "instance_create" devuelve un valor almacenable en una variable, el cual contiene la dirección en memoria de la instancia creada, permitiéndote modificar a la variable en la cual almacenaste dicho valor como si fuera la instancia misma. Por lo cuál cree un "array" global llamado "cuads[]" el cual contiene en cada uno de sus elementos los "cuad" instanciados.
Hice que la función generar reciba como parametro una la "x" inicial del primer cuadrado en la cadena de "cuad". Y la llamo por primera vez en el "create event" de "palabra_actual", con una "x" de 100. Entonces, como la primera palabra era siempre de tres letras, apenas se comienza el juego, aparecen en el x 100 tres cuadrados vacíos indicándole al jugador la cantidad de letras que debe ingresar.
Modifiqué los eventos "key press" de cada una de las letras, para que además de agregar la letra correspondiente a "palabra" cambien el "image_index" del "cuad[cantidad_letras]" por el número de imagen del sprite que contiene la letra precionada. De esta manera, el jugador aprieta una letra y tiene una respuesta inmediata en pantalla, sin necesidad de carteles de alerta o cosas feas.
Cuando una palabra es aceptada, el evento "key_press" de "enter" tiene una llamada a la función "generar" con la "x" actual del último "cuad" de la palabra ("generar(cuads[letra_actual - 1].x + 36)") sumándole un 36 pixels para que deje un espacio entre palabra y palabra.
La variable "letra_actual" fue creada con el propósito de poder retener la última letra de la palabra, habiendo cargado la cantidad de letras de la próxima palabra en "cantidad_letras".
Por último, ya logrando que esto genere espacios infinitos para palabras, necesitaba que cumpla su función de "sidescroller", o sea que se vaya desplazando hacia la izquierda y vayan desapareciendo.
Acá vino una complicación, porque cada vez que generaba una palabra nueva, volvía a cargar "cuads[]" desde el elemento 0, perdiendo acceso a las instancias anteriores. Viendo un par de tutoriales, recordé la existencia de los objetos padre e hijos. Entonces, lo único que tuve que hacer fue crear un objeto "cuad_father" el cual se mueve hacia la izquierda, haciendo que Todas las instancias habidas y por haber de "cuad" se desplacen en ese mismo sentido y velocidad.
Por otra parte, hice que los cuads que desaparecieran de pantalla, sean destruidos, para no mantener en memoria instancias sin uso que puedan hacer "crashear" el juego en algún punto avanzado del mismo por falta de recursos.
Como agregado, el diccionario fue ampliado a diez mil palabras, incorporándole todas las presentes en esta lista de las palabras más frecuentes brindado por la Real Academia Española:
http://corpus.rae.es/frec/10000_formas.TXT
Les dejo el juego con lo explicado hasta recién:
Descargar