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.
Nota: le funzioni di colorazione servono per colorare le caselle già allineate e per suggerire la prossima casella da allineare.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
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![]()

Rispondi quotando