|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2004
Città: Sardegna
Messaggi: 98
|
[JAVA] Quesito di progettazione
Ciao a tutti!
Ho un problema di progettazione: In un videogioco ho creato una classe principale Entity estesa da tutte le classi che hanno un'animazione (come la classe Nemico, PersonaggioPrincipale e la classe Bonus). Dovrei creare però diversi tipi di Oggetti Bonus: un tipo che rimane fisso sullo schermo (come le monete di "Mario Bros" per intenderci..) e l'altro tipo invece compare per un'intervallo di tempo (inversamente proporzionale al suo punteggio) e poi sparisce. Io ho creato questo tipo di progettazione con 1 sola classe Bonus che estende Entity differenziando gli oggetti Bonus alla creazione, nel costruttore, in questo modo: Codice:
public Bonus(Game game, String riferimento_Immagine, Map map, float x, float y, char type)
{
super(riferimento_Immagine, map, x, y, type);
this.game = game;
this.tipo = type;
if(type == map.MONETA)
{
this.punti = 100;
this.visibile = true;
}
if(type == map.PREMIO)
{
this.punti = 200;
this.visibile = false;
ContaTempo timer = new ContaTempo();
}
if(type == map.CHIAVE)
{
this.punti = 0;
this.visibile = true;
}
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Hai visto bene... Visto che stai facendo una differenzizione statica tanto vale creare un oggetto che deriva da Bonus per ogni tipo di Bonus
Quindi fai una classe Bonus che implementa le specifiche base dei vari bonus (ad esempio la scomparsa a tempo)...dopo ti basterà derivare per ottenere tutti i bonus... Ed otterrai così anche una struttura espandibile e sicuramente più facilmente gestibile |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ciao, guarda io mi sono scontrato con il tuo stesso problema per il mio gioco.
Avevo bisogno di un oggetti simili tra loro ma che si differenziavano in qualcosa, e ho usato il tuo stesso accorgimento, ovvero quello di cambiare alcune cose nel costruttore a seconda dell'oggetto che creavo. Io però questi oggetti li dovevo creare tutti assieme e infilarli in un'array, cioè non potevo scegliere la classe dell'oggetto,quindi ho deciso di fare così: Codice:
for(.. .. ..){
array[i]=new MyOggetto(tipo);
}
Codice:
for(.. .. ..){
if(tipo==1) array[i]=new MyOggettoUNO();
if(tipo==2) array[i]=new MyOggettoDUE();
ecc ecc...
}
Sicuramente ci sono metodi anche migliori ma non penso sia poi tutta sta schifezza. Se invece te hai pochi oggetti bonus, che magari si differeneziano molto(se il codice è quello che hai postato le differenze non sono poi molte) e li crei staticamente, è mooolto meglio se fai come ti ha suggerito cionci, il bello della programmazione ad oggetti è proprio questo |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:59.



















