Prime armi - realizzazione tombola

di il
1 risposte

Prime armi - realizzazione tombola

Salve a tutti,
sono realmente alle prime armi con visual basic, sto realizzando la tombola (natalizia), non ridete!! Ho fatto un programmino semplice semlice e mi sono comunque arenata nella ricerca di un'istruzione (credo più logica che di linguaggio), di seguito il mio breve programmino. Ho raggruppato 90 labels in un panel, con il button1 il programma gira, estrae un numero lo scrive in una delle 90 labels ed in contemporanea mi indica l'ultimo numero estratto in una label esterna al panel.
Il mio black out nasce dal voler inserire un button2 con una label2, dove solo a richiesta posso estrapolare l'ultimo numero estratto..
Ci sono ancora tanti piccoli problemi da sistemare, ma dato che mi sono appena registrata, inizio con una sola domanda.
Vi ringrazio anticipatamente
Cele

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim index As Integer

' Initialize the random-number generator.
Randomize()
' Generate random value between 1 and 6.
Dim value As Integer = CInt(Int((90 * Rnd()) + 1))

For Each controlli As Control In Me.Panel1.Controls

index = Val(controlli.Text)

If index <> value Then

visualizza(value)
Exit For
Else
value = CInt(Int((90 * Rnd()) + 1))

End If

Next controlli


TextBox1.Text = ""
Label91.Text = ""


End Sub

Private Sub visualizza(ByVal valore As Integer)
Dim index As Integer
For Each controlli As Control In Me.Panel1.Controls

index = controlli.TabIndex

If index = valore Then
controlli.Text = valore
controlli.BackColor = Color.Red


lb_ultimo_n.Text = "ULTIMO NUMERO ESTRATTO " & valore

End If

Next controlli
End Sub


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
lb_ultimo_n.Text = ""

lb_ultimo_n.Visible = True


End Sub

Private Sub BT_CONTROL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_CONTROL.Click
Dim check() As String
Dim valore_etichetta As Integer
Dim a, n As Integer

Label91.Text = ""

n = 0
check = Split(TextBox1.Text, ",")
Try
For a = 0 To check.Length - 1
For Each controlli As Control In Me.Panel1.Controls
valore_etichetta = Val(controlli.Text)

If valore_etichetta = check(a) Then
Label91.Text = Label91.Text & "n esatto " & valore_etichetta & " "
n = n + 1
Exit For

End If
Next controlli

Next


Catch ex As Exception
Label91.Text = "valori non validi"
TextBox1.Text = ""

End Try

End Sub

End Class

1 Risposte

  • Re: Prime armi - realizzazione tombola

    Anche io leggendo il tuo listato (la prossima volta racchiudilo tra l'opzione 'Code' del menu, così risulta come parte di codice e memorizzabile tramite un tasto) mi reputo agli inizi perchè non ho capito granchè. Ma che linguaggio usi? VB6?
    Fatta questa premessa io non avrei scomodato il ciclo for sulle label dei numeri, ma avrei creato 90 label indicizzate lbNumero(1), lbNumero(2), ..., lbNumero(90) e quindi eseguito questo test (evitando di estrarre 2 volte la stessa cifra):
    Dim NewNum As Integer
    
    Do
        NewNum = CInt(Int((90 * Rnd()) + 1))
        If Val(lbNumero(NewNum)) <> NewNum Then
            lbNumero(NewNum).Caption = NewNum
            lbNumero(NewNum).BackColor = vbRed
            lb_ultimo_n.Caption = "ULTIMO NUMERO ESTRATTO " & NewNum
            lb_ultimo_n.Visible = False
            Exit Do
        End If
    Loop
    
    Il nuovo numero l'ho chiamato 'NewNum' e non 'value' (che oltre tutto è una parola riservata!)

    Non capisco perchè esporre l'ultimo numero a richesta, forse non ho capito il problema, perchè per visualizzarlo è sufficiente
    Private Sub Button2_Click()
    lb_ultimo_n.Visible = True
    End Sub
    
    Buon divertimento
Devi accedere o registrarti per scrivere nel forum
1 risposte