Ossequi a tutti,
per imparare VB ho realizzato un piccolo scacciapensieri: il gioco del 15.

In tale giochino bisogna allineare 14 (24 nel mio caso) caselline numerate in ordine crescente disponendole su una griglia quadrata e avendo come unica possibilità di spostamento lo spazio vuoto lasciato, di volta in volta, dalla casella che si ha appenna mosso.

E' stato molto divertente sviluppare questo mini-progetto fino a quando non ho implementato il mini-algoritmo per accorgersi se si ha vinto. Questo mi ha fatto invocare tutti i santi del calendario e, nonostante mi sia giocato il paradiso continua a persistere un errore di calcolo che non trovo.

codice:
    Private Sub controlloVittoria()
        '******************************************
        'TODO: coreggere controllo risultato finale
        '******************************************
        Dim counter As Integer
        Dim risultato As Integer = 0
        Dim x As Integer
        Dim y As Integer
        For y = 0 To 4
            For x = 0 To 4
                counter = (y * 5) + (x + 1)
                ' 32 è la dimensione in pixels di una tessera
                If tessere(counter).Left = x * 32 And tessere(counter).Top = y * 32 And counter <> 0 Then
                    tessere(counter).BackColor = Color.Cornsilk
                    risultato += 1
                Else
                    Exit For
                End If
            Next
        Next
        For x = risultato + 1 To 24 'Vittoria!
            tessere(x).BackColor = Color.WhiteSmoke
        Next
        If risultato = 24 Then
            timerSecondi.Enabled = False
            timerFine.Enabled = True
            MsgBox("hai vinto!")
        Else
            tessere(risultato + 1).BackColor = Color.BlanchedAlmond
        End If
    End Sub 'Controlla se il gioco è finito
Nota: le funzioni di colorazione servono per colorare le caselle già allineate e per suggerire la prossima casella da allineare.


Per il mio cervello, molto più adatto ai liquori e all'erotismo piuttosto che alla programmazione, il codice non ha errori e dovrebbe andare ...ovviamente, però , non va
L'errore di calcolo è davvero strano e spesso considera alcune caselle in ordine anche quando non lo sono essendo, ad esempio, allineate bene ma sulla riga sbagliata.

Visto che non è possibile capirci qualcosa solo dalla funzione che ho postato allego tutto il progetto di cui non sono assolutamente geloso e, anzi, spero possa essere utile a qualcuno:
ScacciaPensieri
Il sorgente nello zip è calibrato in modo da assegnare la vittoria con solo 2 caselline allineate, settate la variabile alla riga 248 secondo i vostri gusti per per i test di debug.

Se trovate il tempo per darci un'occhiata fatemi sapere dove sbaglio, grazie!
Mannaggia