Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Strod en Junio 05, 2017, 07:14:43 PM

Título: Cambio de color casillas de tablero.
Publicado por: Strod en Junio 05, 2017, 07:14:43 PM
Hola a todos, a ver si alguien me puede ayudar con el siguiente problema que no sé como resolverlo.

Imaginad un tablero de ajedrez, con sus casillas blancas y negras.

Lo que quiero hacer es cambiar el color de las casillas usando el toque con el dedo (en una pantalla táctil).

Por ejemplo, si toco con el dedo una casilla negra y (sin dejar de tocar la pantalla) arrastro el dedo a una casilla blanca contigua quiero que la casilla blanca se vuelva negra cuando deje de tocar la pantalla.

Alguien sabe más o menos el algoritmo a utilizar y con qué funciones.

Muchas gracias por leerme.
Saludos.
Título: Re:Cambio de color casillas de tablero.
Publicado por: Ashe de Freljord en Junio 07, 2017, 04:08:37 PM
se me ocurre que podes guardar el color en una variable.

obtienes la instancia con instance_position(); en las coordenadas del mouse cuando presionas:

cuadro = instance_position(mouse_x, mouse_y, o_casilla)
color = cuadro.color;

Luego cuando sueltas, verificas que sea un cuadro diferente

cuadro_final = instance_position(mouse_x, mouse_y, o_casilla)
if (cuadro_final != self.id)
       micolor = color

y bueno para verificar si es contiguo, bastaria con usar una vez mas instance_position para ver de que lado esta, serian 4 verificaciones
Título: Re:Cambio de color casillas de tablero.
Publicado por: 3dgeminis en Junio 07, 2017, 07:37:03 PM
Creas 3 objetos, bloc_negro , bloc_blanco , control (el objeto control es solo para poner una variable global, se puede poner en el Creation code del room pero yo lo prefiero asi):

objeto control
[gml]
global.color=""
[/gml]

objeto bloc_negro
[gml]
///EVENTO RATON - Mouse Pressed
global.color="negro"

///EVENTO RATON - Mouse Released
if global.color="blanco"
    {
     instance_destroy()
     instance_create(x,y,bloc_blanco)
    }
[/gml]

EL objeto bloc_blanco es igual pero cambias valores blanco por negro y viceversa.
Funciona asi, al presionar sobre un objeto se toma el "color" de ese objeto, y al soltar el boton de raton sobre otra pieza, se ve si el color es igual o diferente, si es diferente se cambia de objeto (instance_destroy, instance_create)
Título: Re:Cambio de color casillas de tablero.
Publicado por: Strod en Junio 08, 2017, 12:36:21 AM
@Ashe de Freljord  y @3dgeminis, muchas gracias por vuestra ayuda, mañana probaré ambos métodos y comentaré como me han ido.

Saludos.
Título: Re:Cambio de color casillas de tablero.
Publicado por: Strod en Junio 08, 2017, 07:22:51 PM
Bueno, qué decir, perfecto!

Acabo de hacerlo y funciona tal y como quería. De la aportación de @3dgeminis he conseguido hacer funcionar la idea central de lo que buscaba, y de @Ashe de Freljord que funcione con los cuadros contiguos y no con los que están en posición diagonal.

Muchas gracias de nuevo a ambos.  :)