El objeto de este tutorial es explicar cómo hacer un rompecabezas ("puzzle") con el programa Construct2 de Scirra. Esta es la cuarta y última parte, "Manejando grupos de piezas". Aquí mejoraremos la rutina de encajado de piezas contiguas de forma que podamos encajar el grupo arrastrado con las piezas que concuerden, incluso si la pieza del grupo que encaja no es la misma que estamos arrastrando.
Anteriormente en esta serie
Este capítulo sigue a otros tres:
Haciendo un Puzzle - Primera parte: Concepto
Haciendo un Puzzle - Segunda parte: Hacer las piezas del rompecabezas
Haciendo un puzzle - Tercera parte: Uniendo las piezas
Las partes primera y tercera explican la lógica empleada por la aplicación para "encajar" las piezas, mientras que la segunda parte explica cómo dibujar "piezas de rompecabezas" a partir de cualquier imagen.
Este tutorial continúa lo explicado en la tercera parte. Viene a ser una especie de parte 3B.
Advertencia importante
Antes de escribir este tutorial, arreglé algunos errores en el archivo .CAPX usado en la versión inglesa de la tercera parte, y reflejé los cambios en el tutorial anterior.
Si va a usar su propio archivo para empezar, por favor mire la historia de los tutoriales anteriores para ver qué cambios debería realizar. El principal cambio afecta a la definición de la variable Piece.Group en el bucle principal de creación de piezas, y al borrado del objeto "Pin", para asegurar que siempre se crea una instancia nueva del mismo antes de la acción "Actualpiece.Pin to Pin"
También puede descargar el archivo tutorial_puzzle_3.capx (es el mismo que tutorial_puzzle_2b_2.capx, con todos los arreglos).
Encajado de grupos
Buscando piezas encajadas en todo el grupo
Cuando se suelta un grupo de piezas, es deseable que todas las piezas del grupo "se encajen" con cualquier otra pieza adecuadamente colocada a su alrededor. Podemos conseguirlo añadiendo un bucle dentro del evento "On Actualpiece DragDrop Drop"
Vayamos al primer evento vacío dentro del evento "On ActualPiece DragDrop Drop" (evento 10 en tutorial_puzzle_3,capx) y hagamos clic en el signo "menos" para que se cierre.
Después de ello añadimos un evento vacío encima de él (se creará debajo, pero lo moveremos encima).
Tomamos la acción "Set MyGroup to ActualPiece.Group" y la movemos al nuevo evento vacío, que debería haber quedado encima.
Tras lo anterior, movemos el antiguo evento vacío (el que comienza con la acción "Set MyY to ActualPieceit") dentro del otro evento. Le añadimos estas condiciones:
System.Foreach ActualPiece
System.Pickall ActualPiece
ActualPiece compare Group Equal to MyGroup
Solo añadiendo esta modificación, todas las piezas del grupo serán probadas para ver si encajan.
Ejecutemos el proyecto. Tomamos la segunda pieza, la movemos al centro y después tomamos la tercera y la unimos a la anterior. A continuación, arrastrando el grupo agarrándolo por la tercera pieza, deberíamos ser capaces de unirlo a la primera.