ci provo anche se non ho visto questo Puzzle.
da qualche parte del filamto viene richiamata la funzione
Snap(whichPiece)
dove "whichPiece" rappresenta il valore dell'ISTANZA del pezzo da muovere.
dopodichè viene controllata la posizione x,y di "whichPiece" affinchè siano rispettate le condizioni
whichPiece._x>40 && whichPiece._x<320
whichPiece._y>40 && whichPiece._y<320
dopodichè vengono effettuati del calcoli per il riposizionamento.
Mi sembra.
Ciao