Un mazzo di carte, due mazzi di carte...

martedì 26 maggio 2009 - 20.56

shaolin Profilo | Newbie

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
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5