Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: T789 en Junio 21, 2020, 06:19:59 PM

Título: Problema Tetris: Bajar Piezas que esten arriba luego de Destruir una Fila
Publicado por: T789 en Junio 21, 2020, 06:19:59 PM
Saludos Makeros, estoy a punto de terminar mi replica de Tetris pero me falta un ultimo toque a la mecanica pero por desgracia este todavia nose como lograrlo

Tengo un objeto que tiene como unico proposito destruir las filas que esten llenas
[gml]
/// Event Create
image_index = 0;
image_speed = 0.5;
count_destroy = 0;

/// Event Step
// Destruirnos despues de acabar animacion
if (image_index >= image_number-1) {
    image_speed = 0;
    image_index = image_number-1;
    count_destroy += 1;

    // Destruir piezas estaticas
    local.c = instance_place(x, y, obj_pieza_estatica)
    if (local.c) {
        with(local.c) instance_destroy()
    }
    // Si termino el conteo para destruirse
    if (count_destroy >= 10)
        instance_destroy()
}
[/gml]

Ahora como haria para mover todas las piezas que esten por arriba del objeto destroy para abajo unos 32 pixeles o 64 pixeles etc, todo segun el obj_destroy que este mas arriba pues puede que haya 4 filas llenas a destruir

Y todo sin que ninguna pieza baje mas de lo que deberia pues puede que haya un espacio 32 pixeles abajo de una pieza y solo quiero que las piezas que esten arriba bajen una sola vez

Espero se haya entendido  :-\
Título: Re:Problema Tetris: Bajar Piezas que esten arriba luego de Destruir una Fila
Publicado por: 3dgeminis en Junio 22, 2020, 08:38:41 PM
Podrias usar la funcion with para mover todos las piezas al mismo tiempo, con la condicion de que este encima de las piezas eliminadas
Si tienes varios objetos para representar distintas piezas, podrias crear un objeto parent para facilitarte el trabajo y usar ese objeto con el with.
Guarda en unas variables temporales la poiscion y de la fila que este mas arriba que se va a eliminar(en caso de que sea mas de una fila) ademas de cuantas filas se eliminan, luego eliminas la fila/s, y terminas por mover las piezas que estan arriba.