|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
serve un altro partner -.-'
|
|
|
|
|
|
#22 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
A che serve il polimorfismo se poi volete decidere la differenza di comportamento fra una Gem e un Chest con un if su un metodo isChest()? Assolutamente a nulla. La differenza di comportamento va codificata nella differenza di implementazione di uno o piu' metodi fra le due classi. Grid non deve fare nulla di questo tipo: Codice:
if (gem.isChest())
{
// comportamento di Chest
}
else
{
// comportamento di Gem
}
Codice:
gem.doSomething();
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#23 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Non avevo mica prorposto la reflection...se lo facessi per una cosa del genere sarei un pazzo!!!
E' solo che leggendo getType mi è venuta in mente e ho fatto una domanda che già da tempo mi ronzava nella testa... Comunque secondo me il problema di fondo è che non si è capito come portare avanti questo task: bisogna fattorizzare adesso o dopo che il task è completato?!?! Perchè se bisogna fattorizzare adesso...bhè si può già pensare al famoso droppableObject. Altrimenti si aggiungono delle gemme con una texture che casualmente è un baule e si modifica GemFactory perchè le gemme di vario tipo abbiamo probabilità prefissate. |
|
|
|
|
|
#24 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Domani alle 12:30 circa sono a casa...collaboro per qualsiasi cosa !!!
Vedendo la "lentezza" con cui procediamo, probabilmente questa è la storia più difficile che abbiamo incontrato...anche perchè abbiamo ancora i rimasugli di BigGem...e quindi non mi perdo neanche un task!!!! |
|
|
|
|
|
#25 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
altrimenti il programma non è in grado di istanziare bauli. |
|
|
|
|
|
|
#26 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
e siccome a fare i pair programming (cioè i task difficili, comprensivi di decisioni di design) sono quasi sempre io, alla fine toccano sempre a me! comunque mi ci diverto anche ok, ho trovato l'altro pair programmer in sostituzione di TigerShark a domani Bonfo |
|
|
|
|
|
|
#27 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Sto andando a letto...
Prima di potermi considerare l'altro pair programmer aspetterei l'approvazione. Io sono già prenotatoper il 9.1.3. e poi c'è anche il 9.1.2 che, per adesso non fa nessuno, sul quale ho comunicato una mia possibile disponibilità... Un'altra domanda: non sapevo che volesse dire RTTI..ora lo so (Run Time Type Information). Ma è la stessa cosa delle reflection o no? |
|
|
|
|
|
#28 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Codice:
public static final GemType EMERALD_CHEST = new GemType("emeraldchest", 40);
public static final GemType RUBY_CHEST = new GemType("rubychest", 50);
public static final GemType SAPPHIRE_CHEST = new GemType("sapphirechest", 60);
public static final GemType TOPAZ_CHEST = new GemType("topazchest", 80);
public static final GemType DIAMOND_CHEST = new GemType("diamondchest", 100);
Poi sarà chi si occupa del task successivo a pensare come discriminare se è una gemam o una chest e se bisogna o meno fare eliminazioni... Ultima modifica di cionci : 26-01-2006 alle 07:59. |
|
|
|
|
|
#29 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Quote:
La reflection è una API che viene viene usata solo per scrivere software per debugging (ES. JUnit da qualche parte usa la reflection se non erro...). Il RTTI è semplicemente, come dice la parola, l'identificazione del tipo in real-time... Ora guardo se c'è qualcosa su wikipedia... http://en.wikipedia.org/wiki/Reflection_API http://en.wikipedia.org/wiki/RTTI |
|
|
|
|
|
|
#30 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Quote:
|
|
|
|
|
|
|
#31 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
allora, facciamo così: riformulateci il task in maniera più precisa e definitiva e io lo svolgerò con Bonfo. @cionci: se quell'if fosse andato a finire nel metodo statico create come io e TigerShark avevamo pensato, poi non sarebbe stato necessario in GemFactory, e ciononostante si sarebbe potuto progettare un algoritmo corretto che distribuisse "uniformemente" la probabilità con il 90% alle gemme e 10% ai bauli (almeno tutto imho). PS: ho notato che hai evidenziato i nomi errati che avevamo messo nel codice: ad essere precisi erano errati anche i punteggi, comunque ormai quel codice non c'è più |
|
|
|
|
|
|
#32 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Secondo me è un task davvero banale... Ti dico il mio parere:
In GemFactory: Gemme e Chest in due array separati createRandomGem crea una Gem a random partendo dall'array di GemTypes createRandomChest crea una Chest a random partendo dall'array di ChestTypes Credo che i test per createRandomChest puoi imitarli da quelli per createRandomGem. ti implementi un bel createRandomDroppable che al 90% delle volte chiama createRandomGem ed al 10% createRandomChest. Niente inheritance per voi. Ci penseranno gli altri task. p.s. Onde evitare incomprensioni io ovviamente parlo di implementazione ma sottintendo prima i test |
|
|
|
|
|
#33 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Se sei online in questo momento mi smessaggi su MSN e lo facciamo in pair io e te sennò aspetta Bonfo...
|
|
|
|
|
|
#34 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
era stato jocchan a dire che dovevano avere punteggio nullo...
__________________
|
|
|
|
|
|
|
#35 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#36 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Eccomi qua...anzie eccoci qua.
Sostituisco ufficialmente ^TiGeRShArK^ . |
|
|
|
|
|
#37 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
|
Comunico la compresenza, gradita, di Ufo oltre a me e a 71104
Primo test, aggiunto a TestGemFactory: Codice:
public void testChestCreation()
{
Gem gem = factory.create(DIAMOND_CHEST);
assertEquals("does not return Chest of type diamond", DIAMOND_CHEST,
gem.getType());
gem = factory.create(RUBY_CHEST);
assertEquals("does not return Chest of type ruby", RUBY_CHEST,
gem.getType());
gem = factory.create(SAPPHIRE_CHEST);
assertEquals("does not return Chest of type sapphire", SAPPHIRE_CHEST,
gem.getType());
gem = factory.create(EMERALD_CHEST);
assertEquals("does not return Chest of type emerald", EMERALD_CHEST,
gem.getType());
gem = factory.create(TOPAZ_CHEST);
assertEquals("does not return Chest of type topaz", TOPAZ_CHEST,
gem.getType());
}
Ci tengo a sottolineare le forti assunzioni di questo test: i Chest non sono altro che gemme e l'unica cos che cambia è il tipo di gemma. Se è sbagliato...siamo già fermi al primo test In ogni caso io continuerei fino a terminarlo...poi REFACTORING!!! |
|
|
|
|
|
#38 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
__________________
|
|
|
|
|
|
|
#39 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ecco qua, l'ho fatto passare così:
Codice:
public final class GemType
{
public static final GemType EMERALD = new GemType("emerald", 40);
public static final GemType RUBY = new GemType("ruby", 50);
public static final GemType SAPPHIRE = new GemType("sapphire", 60);
public static final GemType TOPAZ = new GemType("topaz", 80);
public static final GemType DIAMOND = new GemType("diamond", 100);
public static final GemType EMERALD_CHEST = new GemType("boxes/emerald", 0);
public static final GemType RUBY_CHEST = new GemType("boxes/ruby", 0);
public static final GemType SAPPHIRE_CHEST = new GemType("boxes/sapphire", 0);
public static final GemType TOPAZ_CHEST = new GemType("boxes/topaz", 0);
public static final GemType DIAMOND_CHEST = new GemType("boxes/diamond", 0);
[...]
|
|
|
|
|
|
#40 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ok, adesso stando a quanto detto da Ufo13, dobbiamo procedere così:
Codice:
public void testRandomChestSequence()
{
Gem gem = factory.createRandomChest();
assertEquals("does not return Chest of type topaz", TOPAZ_CHEST,
gem.getType());
gem = factory.createRandomChest();
assertEquals("does not return Chest of type diamond", DIAMOND_CHEST,
gem.getType());
gem = factory.createRandomChest();
assertEquals("does not return Chest of type diamond", DIAMOND_CHEST,
gem.getType());
gem = factory.createRandomChest();
assertEquals("does not return Chest of type ruby", RUBY_CHEST,
gem.getType());
gem = factory.createRandomChest();
assertEquals("does not return Chest of type ruby", RUBY_CHEST,
gem.getType());
gem = factory.createRandomChest();
assertEquals("does not return Chest of type sapphire", SAPPHIRE_CHEST,
gem.getType());
}
a te Bonfo Ultima modifica di 71104 : 26-01-2006 alle 14:02. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:19.



















