miércoles, 12 de noviembre de 2014

Primera Aproximación con Gamemaker

Como primera instancia, como no tenía idea de como manejar Gamemaker, decidí encarar la interacción con el juego, más que la parte visual, por lo cual me tiré de lleno sobre los objetos, el room y los scripts.

Como primera instancia, sabía que al usuario se le tenía que dar una cierta cantidad de letras. En base a éstas, el jugador debía ingresar una palabra que ocupe ni más ni menos esa cantidad y luego corroborar si lo que ingresó era una palabra válida y no sólo un par de caracteres sueltos.
Empecé por crear un objeto, el cual denominé "palabra_actual", en cuyo "create event" definí las variables necesarias ("cantidad_letras" y "palabra").

La variable "cantidad_letras" cargada en principio con un tres, que me pareció el mínimo indispensable para cada una de las palabras, indica la cantidad de letras que debe tener la palabra. Una vez aceptada la palabra ingresada se debe cargar esta variable con un número aleatorio entre 3 y 7 (me pareció que para probarlo, siete era suficiente).

La variable netamente "string" "palabra" está destinada a contener la palabra, valga la redundancia, que el jugador está construyendo. Una vez que la palabra tiene la cantidad de letras que "cantidad_letras" indica, el usuario puede probar si es aceptada, y continuar con el juego.

Para lograr que esto funcione, primero necesitaba informarle al jugador cuántas letras debía ingresar, pero como no quise meterme de ninguna manera en la parte gráfica, me manejé puramente con los "show_message" que vendrían a ser los carteles de alerta que puede manejar el juego. A través de estos escribía el contenido que me permitía checkear que todo funcionara correctamente.

Una vez que el usuario supiera qué tenía que hacer, le tenía que dar las herramientas para que pudiera cargar la palabra, por lo que empezó mi primera batalla por entender los caprichos del gamemaker. Mi idea era usar el evento "key press" con "any key" y adentro del mismo ir haciendo las validaciones necesarias para detectar qué tecla estaba presionando, y en base al ascii de cada una de las letras ir cargando "palabra". Pero me di cuenta de que las validaciones terminaban siendo engorrosas de maneras innecesarias. Por lo cual terminé haciendo un evento "key press" para cada una de las letras, otra para el enter (para permitirle probar cuando creía que la palabra estaba correcta), borrar, y otro para el tilde.

Borrar, funciona con la tecla "backspace", quita el último caracter de "palabra", y deja de funcionar cuando "palabra" tiene 0 caracteres.

Al agregar el tilde, tuve que agregar una variable extra llamada "acento", esta es una booleana, la cual se pone en true cuando la tecla del tilde es precionada, y se pone en false con la próxima vocal presionada. El código de las vocales está diferenciado para cuando "acento" es verdadera o falsa, logrando agregar la vocal con o sin tilde.

Al apretar cada una de estas teclas, exceptuando la del tilde, se genera un cartel de alerta, permitiéndole al usuario visualizar qué está agregando. 

Por último le puse una validación a cada letra para que no le deje ingresar más letras en "palabra" cuando su "length" sea igual a "cantidad_letras".

Una vez que el jugador puede cargar su palabra, necesitaba corroborar de alguna manera que lo que ingresó sea correcto. Para esto, decidí usar un archivo agregado, para poder ir modificándolo sin tener que entrar en el juego, y que cada uno pueda cambiarlo si quiere, con las palabras que son "válidas". El juego, toma la palabra y leyendo las que el archivo "diccionario.txt" contiene, compara. Si encuentra una similar, le dice al usuario que está bien, limpia "palabra", genera un número aleatorio entre 3 y 7 para "cantidad_letras" y repite el proceso. En caso contrario, el usuario puede seguir probando hasta darle a una palabra incorporada.

Como prueba, el juego solo tenía al rededor de diez palabras, era simplemente para probar el sistema comunicativo.

Por último, para dejar esto funcional, creé un room al cual le dí las medidas de ochocientos por seiscientos y tiré adentro el objeto "palabra_actual"

Les dejo el programa para que lo vean:

0 comentarios:

Publicar un comentario

Suscribirse a Enviar comentarios [Atom]

<< Inicio