Ciao, ti conviene usare l'oggetto Scripting.Dictionary
ti posto un esempio per i vari punti che hai elencato..
codice:
Dim carte As New Scripting.Dictionary
Private Type tipoCarta
tSeme As String
tDescrizione As String
End Type
'distingui il seme delle carte in:
'C=cuori; Q=quadri; F=fiori; P=picche;
'e siccome il seme deve essere univoco come chiave per l'oggetto dictionay
'passare il valore del seme così:
'C1 (asso di cuori), Q10 (10 di quadri), FK (re di fiori) ecc...
'come descrizione si può mettere quello che si vuole.. magari il nome esteso della carta..
Private Sub InserisciCarta(seme As String, descrizione As String)
If Not carte.Exists(seme) Then
carte.Add seme, descrizione
End If
End Sub
Private Sub CancellaCarta(ByVal seme As String)
carte.Remove seme
End Sub
Private Function ContaCarte() As Integer
ContaCarte = carte.Count
End Function
Private Function DescrizioneCarta(ByVal seme As String) As String
DescrizioneCarta = carte.Item(seme)
End Function
Private Function EstraiCarta() As tipoCarta
Dim vettCarte
Dim carta As Integer
Randomize
carta = Int(ContaCarte * Rnd) ' Genera un valore casuale compreso tra 0 e il numero di carte meno 1.
vettCarte = carte.Keys
EstraiCarta.tSeme = vettCarte(carta)
EstraiCarta.tDescrizione = DescrizioneCarta(vettCarte(carta))
CancellaCarta (vettCarte(carta))
End Function
'esempio di applicazione
Private Sub Command1_Click()
Dim prova As tipoCarta
MsgBox "totale carte=" & ContaCarte
prova = EstraiCarta
MsgBox prova.tSeme & " " & prova.tDescrizione
End Sub
Private Sub Form_Load()
Dim i As Integer
For i = 1 To 10
InserisciCarta "C" & i, "CARTA DI CUORI " & i
Next
InserisciCarta "CJ","CARTA DI CUORI J"
InserisciCarta "CQ","CARTA DI CUORI Q"
InserisciCarta "CK","CARTA DI CUORI K"
End Sub
Per usare l'oggetto Scripting.Dictionary, devi inserire il riferimento, al tuo progetto, della libreria "Microsoft Scripting Runtime"