|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non è detto, ma mi sembrava logico perchè dovrebbe erditarne non solo l'interfaccia, ma anche gran parte del codice... Inoltre in questo modo Grid non andrabbe modificata nemmeno di una virgola (anzi, qualcosa sì, ma solo per le collisioni)...
|
|
|
|
|
#22 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
GemsPair "non e' un" Gem. Quindi non deve derivare da Gem.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#23 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sì, ma allora deriviamo PivotGem da Gem...e poi a PivotGem gli passaimo la gemma slave... Cambia il nome, ma il succo è lo stesso...mi sembra che sia necessario ottenere una classe di questo tipo prima di cominciare a lavorare sulle coppie di gemme...
|
|
|
|
|
#24 | |
|
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 |
|
|
|
|
|
#25 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Boh io farei un GemsPair che estende Sprite e contiene due Gem
|
|
|
|
|
#26 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
http://www.eventhelix.com/RealtimeMa..._principle.htm The Liskov Substitution Principle of object oriented design states: In class hierarchies, it should be possible to treat a specialized object as if it were a base class object. The basic idea here is very simple. All code operating with a pointer or reference to the base class should be completely transparent to the type of the inherited object. It should be possible to substitute an object of one type with another within the same class hierarchy. Inheriting classes should not perform any actions that will invalidate the assumptions made by the base class. Ogni volta che derivate una classe da un'altra dovete porvi la domanda se il principio di sostituzione si applica. Una specializzazione di un Handler puo' ovviamente essere usata in sostituzione della classe base, mentre un GemsPair no: svolge azioni che invalidano le assuzioni fatte dalla classe base Sprite (infatti contiene due sprite e non uno solo).
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA Ultima modifica di fek : 18-12-2005 alle 11:45. |
|
|
|
|
|
#27 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
hmmmm mi chiedo perchè no?
ahhhh ritiro subito la domanda Volevo dire drawable |
|
|
|
|
#28 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Ecco l'articolo completo:
http://www.objectmentor.com/resources/articles/lsp.pdf Nel nostro caso, una funzione che usasse un GemsPair come se fosse uno Sprite, fallirebbe clamorosamente, perche' deve poter sapere di avere a che fare con GemsPair per onorarne il contratto. E secondo me non e' neanche un Drawable Le gemme sono disegnate dalla griglia, GemsPair deve solo controllare che scendano in maniera corretta e rispondano agl'input dell'utente.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
#29 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
mazza che figo sto sito :o
|
|
|
|
|
#30 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
allora perdonami ho scritto senza guardare il codice... In realtà estendendo sprite saprei bene come gestire la cosa...
Secondo me basta tenere 2 Gems e poi implementare Drawable che diciamo esegue il draw delle due Gem nelle corrette posizioni. |
|
|
|
|
#31 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
fek: ti spiego perchè voglio derivare... Così come è adesso Grid tutte le operazioni che adesso svolgiamo su Grid andrebbero duplicate... Invece non duplicando queste operazioni e derivando PivotGem da Gem potremmo settare la gemma slave dall'esterno (pivotGem.setSlaveGem(Gem slave)) e mantenendo la struttura attuale di Grid potremmo replicare le operazioni fatte sulla pivotGem all'interno della pivotGem... Ad esempio: Codice:
public void moveRight(float step)
{
super.moveRight(step);
slave.moveRight(step);
}
Ultima modifica di cionci : 18-12-2005 alle 11:55. |
|
|
|
|
|
#32 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Noi sappiamo programmare quindi seguiamo questo principio GemsPair, come la giri, non modella una relazione ISA ne' con Gem, ne' con Sprite, ne' con Drawable. E' una semplice classe di controllo di due gemme, un classico esempio di Composizione. E quello implementiamo. Tutto il resto e' un forzare il design verso qualcosa che ci creera' problemi, quindi andiamo per le cose semplici. Due gemme dentro GemsPair e via.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#33 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Cionci: sì scusa, leggi il mio post... Mi ero sbagliato... Avevo solo pensato al Draw e così ho pensato "sprite" senza tenere a mente tutto quello che Sprite comportava
Comunque non vedo perchè usare GemsPair in composition dovrebbe limitarci così tanto... Secondo me si può trovare una soluzione semplice anche per quello |
|
|
|
|
#34 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Quote:
|
|
|
|
|
|
#35 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
#36 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
#37 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Quote:
|
|
|
|
|
|
#38 | |
|
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 |
|
|
|
|
|
#39 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
hmmm mi va benissimo farlo in pair con cionci ed inizierei anche subito, ma non è meglio se aspettiamo che vicius confermi il task?
|
|
|
|
|
#40 |
|
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
allora, la duplicazione era evidente, ma per ora preferivo mantenerla, fare funzionare il tutto(creazione, movimenti ed eventualmente collisioni) per poi proporlo.
D'accordo su fare la classe gemspair come composizione, e se la si implemente considerando la possibilita che controlli una sola gemma(la pivot) il codice non dovrebbe risentirne troppo. Si puo considerare di estrarre l'interfaccia da gem, generare la classe composite come un proxy di 2 gem, ma non so se ne vale la pena in effetti gempair si comporta come una gemma(forse) ma non è una gemma... cmq ditemi se devo testare tutte le collisioni, o questo compito passa a un prox task(magari con in mezzo il refactoring di pairGem). Cosi tolgo il test per le collisioni gia realizzato e implemento correttamente il movimento(i test precedenti secondo me non sono completi, devo creare un altro test per verificare...), e aggiungo l'init e il rilascio di 2 gem alla volta(ma per questo devo implementare per forza la collisione dal basso...) |
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:27.


















