Linguaggio Visual Basic – Estrazione di numeri per la tombola

Prendendo spunto dal gioco della tombola, l’esercitazione ha lo scopo di:

  • definire una funzione che restituisce un valore al codice chiamante tramite l’istruzione Return;
  • utilizzare la classe Random per la generazione di numeri pseudo-casuali;
  • generare una scansione dei controlli presenti nel form (Me.Controls) attraverso il costrutto For Each … Next per evidenziare le caselle corrispondenti ai numeri estratti.

Public Class frm_Tombola

Dim NumeriEstratti(90) As Short

Private Sub btn_EstraiNUmero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_EstraiNUmero.Click
Dim NomeCasella As String

lbl_NumeroEstratto.Text = NumeroEstratto()
NomeCasella = "txt_Numero" & lbl_NumeroEstratto.Text

Dim CasellaEstratta As Control
For Each CasellaEstratta In Me.Controls
If CasellaEstratta.Name = NomeCasella Then
CasellaEstratta.BackColor = Color.PaleVioletRed
CasellaEstratta.ForeColor = Color.Wheat
Exit For
End If
Next

End Sub

Private Function NumeroEstratto() As Short
Dim Casuale As New Random
Dim Beccato As Boolean = False
NumeroEstratto = 0
While Beccato = False
NumeroEstratto = Casuale.Next(1, 91)
If NumeroEstratto = NumeriEstratti(NumeroEstratto - 1) Then
Beccato = False
Else
Beccato = True
NumeriEstratti(NumeroEstratto - 1) = NumeroEstratto
End If
End While
Return NumeroEstratto
End Function

End Class

 

Le 90 TextBox potevano essere implementate anche da codice mediante la seguente routine:

Public Sub CostruisciTabellone()
Dim PosX As Short = 20, PosY As Short = 20
Dim TipoCarattere As New Font("Verdana", "12")

Dim Riga, Colonna As Integer
For Riga = 1 To 9
For Colonna = 1 To 10
Dim Casella As New TextBox
With Casella
.Font = TipoCarattere
.BackColor = Color.WhiteSmoke
.ForeColor = Color.Gray
.Name = "txt_Numero" & (Riga - 1) & Colonna
.Width = 45
.Left = PosX + .Width * (Colonna - 1)
.Top = PosY + .Height * (Riga - 1)
.Text = (Riga - 1) * 10 + Colonna
.Visible = True
.TextAlign = HorizontalAlignment.Center
.ReadOnly = True
.TabStop = False
End With
Me.Controls.Add(Casella)
Next
Next
End Sub

Visite: 508