Per mio diletto mi stavo dilettando, come da titolo del post, nel creare un algoritmo per gestire la distribuzione di carte fra i giocatori di un ipotetico gioco. L'algoritmo dovrebbe essere il più possibile generico, cioè adattarsi a qualsiasi gioco, ciò comporta che anche il numero di carte del mazzo stesso debba poter essere variabile.
Il numero limitato di elementi (un mazzo diciamo che può andare da un minimo di tre carte ad un massimo di 104) permette di valutare anche certe tecniche che potrebbero essere poco adatte alla gestione di migliaia di elementi.
Per testare poi la mia "creatura" ho implementato un banale gioco delle carte, il "Sette e mezzo" utilizzando VB.NET ed il framework 2.0. Per adesso il gioco è ancora in fase di sviluppo, ma i primi test sono incoraggianti.
Tutto ciò mi è utile per prendere dimestichezza con .NET visto che prossimamente sarò chiamato ad effettuare uno sviluppo abbastanza corposo.
Ma andiamo ad illustrare la mia prima scelta. Ho optato, dopo varie valutazione, l'adozione di ArrayList:
Dim myMazzo As New ArrayList()
Questo perchè, al contrario di un Array, ha il motodo RemoveAt che permette in maniera assai banale di rimuovere un elemento (carta estratta).
L'estrazione della singola carta lo ottengo molto semplicemente con queste 4 righe di codice:
Dim varRandom As New Random
Randomize()
varMazzoIndice = varRandom.Next(myMazzo.Count - 1)
varCartaEstratta = myMazzo(varMazzoIndice)
fatto questo il punto successivo è quello di eliminare dal mazzo la carta appena estratta:
myMazzo.RemoveAt(varMazzoIndice)
Queste in parole povere sono le linee base della gestione del mazzo. Sinceramente non so se l'implementazione sia la più giusta, ho valutato anche l'uso delle Collections.
Voi cosa avreste usato ? Vi sembra, la mia, una scelta intelligente ? Consigli e suggerimenti sono ben accetti.