Nigdy nie pisałem tego typu gier komputerowych, ale możemy się nad tym problemem zastanowić.
Ja spróbowałbym napisać event, który wykonuje się zawsze po opuszczenie elementu. Czyli po pierwszym ruchu, drugim itd.
Event ten sprawdzałby dla każdego elementu czy jest możliwość go wsadzenia, dla optymalizacji, po znalezieniu pierwszej takiej możliwości natychmiast by kończył swoje działanie i pozwalał komuś kontynuować grę, w przeciwnym razie wyświetlił by stosowny komunikat i zakończył grę.
Event ten działałby w następujący sposób:
1) Weź klocek z dołu
2) Sprawdzaj kratkę po kratce czy można go umieścić
3) Jeżeli znalazłeś miejsce -> zakończ, w przeciwnym razie: sprawdź czy jest dostępny kolejny klocek -> jeżeli nie jest dostępny - koniec gry, jeżeli jest dostępny klocek, przejdź do punktu pierwszego.
Nie wiem dokładnie jaką masz implementacje swojego kodu ale ja sobie to wyobrażam jako tablicę dwu wymiarową np. [5][5] co daje mniej więcej taki wygląd planszy
[ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ]
no i iterujesz sobie kratka po kratce.
Jeżeli masz inną implementacje to zdradź jak to działa i będziemy mogli pomyśleć ;)