Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [VB6]Distributore di carte

    Ho neccessità di creare un codice che mi distribuisca 10 carte (su 52 visto che i jolly non vengono contati).
    In visualbasic non sono molto esperto (ed è in uqesto che devo farlo), infatti non so come farlo.

    In quanto far si che lui scelga a caso un numero tra 1 e 52 e poi controlli se il numero uscito non è già stato "estratto" (e quindi rifà la scelta a caso) non è una soluzione adatta in quanto potrebbe andare in ciclo continuo (improbabile cma possibile).

    Così ho provato a crearlo con il PHP e qua ci sono riuscito utilizzando gli array (cosa che in visualbasic non so usare) e, sperando, poi di riuscire a "trasformarlo" in visualbasic.
    Il funzionamento del codice php è:

    [list=1][*]Inserisco i nomi delle diverse carte in un array (52 nomi)[*]Conto quanti valori ci sono nell'array (con la funzione count)[*]Scelgo a caso un numero tra 0 e il numero di campi contenuti nell'array[*]Quella che risulta è una carta che avrò[*]Tramite la funzione unset elimino il campo "estratto" dall'array[*]Ripeto questo procedimento per il numerp di carte che voglio ottenere[/list=1]

    Però non so minimamente come trasformarlo in vb

    Potete aiutarmi?

  2. #2
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    In VB non puoi eliminare un elemento del vettore shiftando gli altri indietro di uno....

    Lo devi fare da codice.

    Basta fare

    Vett(i)=vett(i+1)

    per i che va da numero estratto a totale-1

    e poi
    redim preserve Vett(totale-1)
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  3. #3
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    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"
    Jupy

  4. #4
    Ho provato il tuo codice, Jupy64, e devo dire che funziona perfettamente.
    Ora so di essere palloso ma vorrei sapere esattamente bene cos'è l'oggetto Scripting.Dictionary ^^ Anche se un minimo sono riuscito ad intuirlo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.