Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
Un mazzo di carte, due mazzi di carte...
martedì 26 maggio 2009 - 20.56
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
shaolin
Profilo
| Newbie
23
messaggi | Data Invio:
mar 26 mag 2009 - 20:56
Ciao a tutti.
Sono impegnato su l'ennesimo "esercizio" riguardante le carte.
Nello specifico sto realizzando il gioco di scala quaranta e vorrei il vostro parere su un dubbio che ho e che mi tormenta :)
Pubblico in questa sezione in quanto non ne esiste una apposta per le tecniche di programmazione. Chiedo venia :P
L'architettura base è data da una classe astratta CARTA da cui derivo CARTAFRANCESE e JOLLY.
Ho poi il classico MAZZO (con campo ti tipo list<CARTA>).
A questo punto nasce la necessità di unire due mazzi, per cui ho pensato di derivare da MAZZO una classe MAZZI creando diversi metodi virtuali.
Già a questo livello cosa ne pensate? Vi può sembrare un'idea efficace o c'è di meglio?
Passo successivo che mi lascia un po' perplesso.
Nella classe MAZZO ho creato un metodo virtuale MESCOLA (nome chiarificatore :D); a questo punto nella classe derivata MAZZI è interessante richiamare l'override di MESCOLA. Io l'ho fatto in questo modo e funziona, ma, nonostante giri, a livello teorico ho l'impressione che non sia molto elegante.
I due metodi sono così costruiti:
public virtual void Mescola(int nVolte)
{
Random r = new Random();
for (int j = 0; j < nVolte; j++)
{
for (int i = 0; i < _mazzo.Count; i++)
{
int nuovaPosizione = r.Next(0, _mazzo.Count - 1);
ScambiaPosizioneCarte(i, nuovaPosizione);
}
}
}
public override void Mescola(int nVolte)
{
base.Mazzetto = _mazzi;
base.Mescola(nVolte);
}
----------------
Dalla classe base abbiamo:
List<Carta> _mazzo;
public List<Carta> Mazzetto
{
get { return _mazzo; }
set { _mazzo = value; }
}
per farmi tornare il mazzo doppio (da 108 carte) devo passare alla proprietà che punta al campo _mazzo (classe base) il campo di MAZZI, _mazzi, della classe ereditata.
Boh, mi sembra un po' troppo maccheronico :)
Spero di essere stato sufficientemente chiaro e ringrazio in anticipo per le risposte.
Xiao
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !