Si è vero ma anche col vettore rimane un codice inspiegabile o meglio spiegabile così:
' Gambas class file
Public Sub Button1_Click()
' Così come l'hai usato "estratto" deve essere un vettore.
' Visto l'uso puoi utilizzare Byte per risparmiare memoria.
' NOTA: In Gambas i vettori partono da zero.
Dim estratto As New Integer[]
Dim i As Integer
' Se pulisci prima puoi evitarti il tasto 2
TextBox1.Clear
TextLabel1.Text = ""
Wait 0.2
' Per numeri realmente casuali attiva randomize
Randomize
' Questo loop fa solo il controllo sul numero precedente,
' non su tutti i numeri e non ti garantisce sui doppioni
' (vedi il codice che ti avevo indicato) e contiene un
' **grave errore**.
For i = 0 To 5
pippo:
' Rand restituisce integer
estratto.Push(Rand(1, 90))
If i > 0 Then
' Il confronto avviene solo fra il numero attuale e
' quello precedente.
' Eseguendo solo sei loop ed escludendo il primo numero
' otterrai solo cinque numeri.
If estratto[i] <> estratto[i - 1] Then
TextBox1.Text &= " - " & estratto[i] & " - "
Else
' Codice poco elegante e nella maggior parte dei casi inutile.
' Se lo si usa è buona norma scrivere il nome delle etichette
' maiuscolo e posizionate a destra.
'' Questo in particolare così congegnato innesca un loop infinito
'' come puoi vedere da quanto verrà scritto in console.
'' Questo accade perché il codice anche se aggiunge un numero nuovo
'' continua a leggere gli stessi due numeri che risulteranno pertanto
'' sempre uguali.
Print "ELSE"
Print estratto[i], estratto[i - 1]
Goto pippo
Endif
Endif
Next
TextLabel1.Text = " OK! Adesso giocali e.. buona fortuna"
End
La mia personale interpretazione:
Public Sub Button1_Click()
Dim estratti As New Byte[] 'array con i numeri estratti
Dim serie As New Byte[] 'la serie dei 90 numeri
Dim i, j As Byte 'contatori
Randomize 'attiviamo il generatore di numeri casuali
For i = 0 To 89 'riempiamo l'array con i 90 numeri
serie.Push(i + 1)
Next
i = 0 'riazzeriamo i
Do 'inizio ciclo di assegnazione
j = Rand(1, 90) 'una posizione a caso nei 90 numeri
If serie[j] > 0 Then 'il numero in quella posizione vale più di zero?
estratti.Push(serie[j]) 'lo usiamo
serie[j] = 0 'e lo azzeriamo per evitare doppioni
Inc i 'incrementiamo il contatore
Endif
Loop Until i = 7 'il ciclo si ripete per 6 numeri, poi esce
TextLabel1.Text = " OK! Adesso giocali e.. buona fortuna"
End
Uhmmm vedo almeno un errore qui:
j = Rand(1, 90) 'una posizione a caso nei 90 numeri
If serie[j] > 0 Then 'il numero in quella posizione vale più di zero?
Se J = 90 vai fuori limite del vettore
E poi ti sei dimenticato di mostrare i numeri da giocare, questo potrebbe essere un bene infatti come si sa nei giochi di azzardo vince solo il banco. :D
Una cosa però me l'hai suggerita i numeri estratti del super enalotto sono 6 e non 5 e pertanto hai fatto emergere un ulteriore errore nel progetto di Skeell che vado a segnalare
:ciao: :ciao:
L'errore mi è sfuggito, basta fare serie[j-1]. :P
La visualizzazione dei numeri la deve fare skeell, mica io, deciderà lui cosa fare. ;D
Se, se buonanotte! :specchio:
Allora ti consiglio di cambiare anche questo codice così:
TextLabel1.Text = " OK! Adesso giocali se ne sei capace (solo per sensitivi)"
:P :P :P