Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: yokaiworld en Octubre 13, 2015, 06:59:05 PM

Título: ayuda fireball simple
Publicado por: yokaiworld en Octubre 13, 2015, 06:59:05 PM
Hola aguien me puede dar un codigo simple para lanzar un fireball con la tipica secuencia abajo-izquierda o derecha + boton

yo uso un sistema de combos que funciona mas o menos asi
combos[0]= "ASZXSAZX"
trabaja bien pero solo puedo usar letras
Título: Re:ayuda fireball simple
Publicado por: Clamud en Octubre 13, 2015, 11:17:23 PM
Hola, hace tiempo empecé a diseñar un sistema de combos altamente configurable, pero nunca lo terminé. Lo adjunto, espero que te sirva.

El ejemplo funciona con teclado, joystick y virtualkeys. Los combos se definen en un arreglo 2D, llamado ataque[], cada fila es un combo o ataque donde se guardan una secuencia de números enteros del 0 al 9. Cada número representa un botón:


Hay otro arreglo llamado secuencia[] que, como indica su nombre, guarda la secuencia de botones presionados por el usuario. Esta secuencia se compara con las filas del arreglo ataque[]. Si en algún momento la secuencia no coincide con alguno de los combos, se van borrando elementos hasta obtener una secuencia válida o vacía.

Hay muchas cosas que se pueden optimizar, por ejemplo, en lugar de usar arreglos simples se podrían usar ds_queues, o cadenas de texto como has propuesto, y podría ser más entendible si se usan constantes (macros) en lugar de números. También es necesario agregar un mecanismo que haga cambiar los combos cuando se ve a la izquierda o a la derecha, creo que hay varias soluciones para eso.

Por último, los combos se definen en el evento Create del objeto ob0, y todos tienen una estructura similar a esta:
[gml]
///Explosión

ataque[n,0] = 4;
ataque[n,1] = 8;
ataque[n,2] = 6;
ataque[n,3] = 2;
ataque[n,4] = 0;

nombre[n] = "Explosión";
n++;
[/gml]
observa que el segundo indice de ataque[] comienza en cero y va incrementando. El arreglo nombre[] guarda todos los nombres de los combos.

PD: Las teclas + y - del pad numérico cambian el tiempo necesario para cancelar una secuencia, y la tecla Esc reinicia los valores.
Título: Re:ayuda fireball simple
Publicado por: yokaiworld en Octubre 16, 2015, 06:30:53 PM
muchas gracias ;D
Título: Re:ayuda fireball simple
Publicado por: Clamud en Octubre 16, 2015, 07:47:39 PM
De repente me acordé de otro detalle, la definición de combos en el evento Create se hace en un orden específico, primero se definen los combos (filas) que empiezan con números más pequeños y después siguen los que inician con números más grandes. Es algo parecido a poner palabras en orden alfabético. Lo puse de esa manera para optimizar el proceso de búsqueda, así no se tiene que buscar siempre en todos los combos; sólo se busca en un conjunto reducido. Como cuando se busca en un diccionario. Espero que en el futuro sea más fácil de utilizar.