Juego de parejas que no puedo concretar

Quiero aprender como se hace esto de arrastrar los sprites y que si coinciden con otro se queden juntos y que si no coinciden, vuelva a su lugar de origen, al soltar el botón del mouse. Quisiera mandarte el archivo dir, para que veas que estoy haciendo mal. Podrías darme tu email.. ¿bueno?

1 Respuesta

Respuesta
1
Para los sprites que tiene que mover el usuario debes activar la propiedad 'moveable', para permitirle que los arrastre.
Vas a tener dos sprites que se llaman igual, y son iguales, uno es el que el usuario tiene que mover (me referiré a él como 'sprite1') encima del otro (le llamaré 'sprite2').
En el sprite1 tienes que colocar un script parecido al siguiente:
Global lastMem -- Guardará el número de sprite2
global posHAntes -- coordenada horizontal de sprite1 antes del movimiento
global posVAntes -- coordenada vertical de sprite1 antes del movimiento
on mouseUp me
if (sprite(me.spriteNum).intersects( lastMem )) and (sprite(me.spriteNum).member.name = sprite(lastMem).member.name) then
sprite(me.spriteNum).locH = sprite(lastMem).locH
sprite(me.spriteNum).locV = sprite(lastMem).locV
sprite(me.spriteNum).moveableSprite = false
alert "Correcto"
else
sprite(me.spriteNum).locH = posHAntes
sprite(me.spriteNum).locV = posVAntes
alert "has fallado"
end if
end
on mouseDown me
posHAntes = sprite(me.spriteNum).locH
posVAntes = sprite(me.spriteNum).locV
end mouseDown
La idea es sencilla. Al pulsar con el ratón se almacena la coordenada horizontal y vertical. Al soltar se comprueba si el sprite1 está encima de otro sprite y si ese otro sprite se llama igual que el sprite1. En ese caso se ajusta el sprite1 en la posición del sprite2 y se deja fijo porque ya esta bien colocado. Si no coinciden, se devuelve al sprite1 a la posición donde estaba antes del movimiento.
Ahora la segunda parte. El script que tienes que colocar en el sprite2:
global lastMem -- Número de sprite del sprite2
on mouseEnter me
lastMem = me.spriteNum
end
on mouseLeave me
lastMem = void
end
Lo que hacemos con esto es guardar en una variable el número de sprite de sprite2 cuando el ratón pase por encima de él. De esta forma podremos tener una referencia tanto al sprite1 como al sprite2.
Eso es todo.
Hola, gracias por contestar a mis suplicas.. sabes, no se movieron. Peegué íntegramente el código que me has dado y no se movieron solo que al soltar el sprite que quería mover me salió un meensaje:"has fallado".
Es posible que el código del mouseup debiera ir en el del mousedown, ¿y el del mousedown en el del mouseup?
De todas formas si me das tu email, podría mandarte el archivo .dir para que le echaras un vistazo.. ¿te parece?
¿Has activado la propiedad moveable? Si no pones esa propiedad en los sprites que se pueden mover, no se moverán. Esa propiedad no se activa por código, sino en el panel de propiedades.
El código está bien y funciona. Lo he probado haciendo un ejemplo y me funciona correctamente tal cual está. Yo he puesto un circulo azul y un cuadrado verde. A la izquierda un circulo y un cuadrado con la propiedad moveable y a la derecha otro circulo y otro cuadrado sin esa propiedad. Se trata de mover los de la izquierda encima de los de la derecha. A los sprites de la izquierda les pongo el primer script que tienes arriba, y a los de la derecha el seguido.
Lo acabo de comprobar y esta correcto. Comprueba lo siguiente:
1- ¿Tienes activada la propiedad moveable de los sprites que se debe poder mover?: Selecciona todos esos sprites en el score. Ve al panel de propiedades, en la pestaña sprite y slecciona el cuarto icono, empezando por la derecha, de los que hay en la parte de arriba justo debajo de las pestañas.
2- Cada miembro debe tener un nombre diferente al de los demás. Por ejemplo, al cuadradro ponle cuadrado y al circulo ponle circulo. Lo que más te guste pero que no sean iguales ni vacíos.
3- Comprueba que el código está exactamente igual que el de arriba. Aunque si te sale un mensaje diciendo que "has fallado" significa que este punto esta correcto. Pero aun así compruébalo.
Y no hay más que comprobar. Te aseguro que con esas tres cosas funciona. Pruébalo en una película nueva con el ejemplo de figuras sencillas que te he comentado y ya verás como funciona.
Suerte. Y cualquier otra cuestión que tengas, aquí estoy para ayudarte en lo que pueda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas