|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
[CICLO 6] Storia 2
Storia 2: Ogni gemma creata dovrà avere un’animazione a ciclo continuo che simuli un riflesso, e che si ripeta ogni 3.5 secondi, valore comunque modificabile in GameConfig. Le animazioni di tutte le gemme su schermo dovranno essere sincronizzate tra loro, ossia iniziare tutte nello stesso momento.
Nella finestra "next" verrà visualizzata una coppia di gemme dei due colori immediatamente successivi nella coda a quella attualmente in caduta. Di queste due gemme, quella in basso sarà la prossima a cadere, e la coppia verrà aggiornata ogni volta che una nuova gemma viene creata. Punti cardine da tenere a mente durante i lavori:
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. Ultima modifica di Jocchan : 09-12-2005 alle 09:10. |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Ecco i task per questa storia.
Task: 6.2.1: 71104: 2 giorni Mostrare nel riquadro "next" dell'area di gioco le prossime due gemme che saranno rilasciate. La prima gemma ad essere rilasciata dovra essere quella piu in basso. 6.2.2: thebol: completato Aggiungere a sprite la capacita di caricare Texture che contengono i vari frame delle animazioni. 6.2.3: cdimauro: 2 giorni Implementare le animazioni in sprite cambiando frame ogni decimo di secondo. Al termine del'animazione si deve mostrare il frame di base per 3500 millisecondi prima di ripartire. 6.2.4: Ufo13: 2 giorni Sincronizzare le animazioni delle gemme all'interno della griglia tra di loro. Se una gemma viene creata quando le altre sono a meta animazione deve quindi mostrarsi anche lei a meta animazione. ciao ![]() Ultima modifica di VICIUS : 08-12-2005 alle 23:47. |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Approfitto dello spazio sotto i task per un piccolo chiarimento sulle animazioni.
Le texture che useremo avranno questo formato: ![]() Le due "colonne" contengono rispettivamente la gemma normale e quella illuminata. Il frame più in alto è quello di base, e dovrà rimanere fisso per 3.5 secondi (variabili da GameConfig). Scaduto questo tempo, dovranno essere visualizzati, ognuno per 0.1 secondi, gli altri cinque frame nella colonna, dall'alto in basso. Al termine di questo ciclo di animazione, si dovrà tornare al fotogramma fisso. Per qualsiasi dubbio, chiedete pure ![]()
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Quote:
![]()
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Altra cosa...mi sa che va aggiunto un task di questo tipo:
aggiungere a Config la psosibilità di leggere/gestire valori floating point... |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Quote:
Per questo stesso motivo abbiamo anche scelto un timeout fisso, e non variabile. In ogni caso, dato che per sincronizzare l'animazione bisogna prima implementarla, potremo vedere anche l'effetto di più animazioni fuori sincrono e, in caso, anche cambiare idea ![]()
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Vorrei prenotarmi per il task 6.2.3. Prevedo di impiegarci 2 giorni dalla fine del task 6.2.2.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao ![]() |
|
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao ![]() |
|
![]() |
![]() |
#12 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
![]() secondo me se il riflesso appare a tutte nello stesso momento è molto più bello (nonché più realistico ![]() allora, premesso che io e daniele ci scusiamo per il ritardo del nostro task causato dall'incompatibilità di orari, mi vorrei prenotare (^^') per il 6.2.1, 2 giorni per sicurezza. |
|
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
Per quanto riguarda il task della storia precedente non ti preoccupare. Sapevo che sarebbe andata a finire cosi visti gli orari di Daniele ma vi ho abbinati lo stesso. ciao ![]() |
|
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
non capisco le richeste per il il 6.2.2.
A usare la png postata su sto thread come esempio, i test vengono superati, pero se la si prova a usare non viene visualizzata per bene. E questo che è da implementare? Altra cosa che ho notato, e che i nomi delle gemme sono usati in piu punti di codice, e se si vuole cambiarne uno bisogna modificarlo in piu parti di codice. Non sarebbe meglio esternalizzare in una classe statica o sistema simile? |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Quote:
cmq mi ci prenoterei io per questo task. Tempo stimato 1 giorno. |
|
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Ho committato le gemme con i frame.
Thebol, bisogna appunto consentire al codice di gestire texture in questo formato ![]() P.S.: i nomi delle gemme sono costanti che non cambieremo, ma effettivamente resta sbagliato avere questi valori troppo diffusi all'interno del codice.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Quote:
![]() Il problema e quando settavi la brightnes(sia a true che false) si usavano come valori solo quelli della texture senza tenere conto del size dello sprite. Per cui ho tolto i test Codice:
gemTextureRect = new Rectangle(0, 0, gem.getTexture().getWidth() / 2 - 1, gem.getTexture().getHeight() - 1); gem.draw(engine); assertTrue("gem must be drawn with unbrightened texture", engine .getTextureRect().equals(gemTextureRect)); gem.setBrightenedStatus(true); gemTextureRect = new Rectangle(gem.getTexture().getWidth() / 2, 0, gem .getTexture().getWidth() - 1, gem.getTexture().getHeight() - 1); gem.draw(engine); assertTrue("gem must be drawn with brightened texture", engine .getTextureRect().equals(gemTextureRect)); Codice:
gem.setBrightenedStatus(false); gem.draw(engine); assertEquals("gem must be drawn with unbrightened texture(bad left)", engine .getTextureRect().left(), 0); assertEquals("gem must be drawn with unbrightened texture(bad right)", engine .getTextureRect().right(), 31); gem.setBrightenedStatus(true); gem.draw(engine); assertEquals("gem must be drawn with brightened texture(bad left)", engine .getTextureRect().left(), 32); assertEquals("gem must be drawn with brightened texture(bad right)", engine .getTextureRect().right(), 63); poi ho inserito un test sulla dimensione della texture area disegnata, in modo che sia uguale a quella di sprite Codice:
public void testGemViewSize() { MockEngine engine = new MockEngine(); Gem gem = Gem.createForTesting(); gem.draw(engine); assertEquals("Height of the texture engine differente of height of gem(init)",engine.getTextureRect().getHeight(), (int)gem.getHeight()); assertEquals("Width of the texture engine differente of width of gem(init)",engine.getTextureRect().getWidth(), (int)gem.getWidth()); gem.setBrightenedStatus(false); gem.draw(engine); assertEquals("Height of the texture engine differente of height of gem(bright false)",engine.getTextureRect().getHeight(), (int)gem.getHeight()); assertEquals("Width of the texture engine differente of width of gem(bright false)",engine.getTextureRect().getWidth(), (int)gem.getWidth()); gem.setBrightenedStatus(true); gem.draw(engine); assertEquals("Height of the texture engine differente of height of gem(bright true)",engine.getTextureRect().getHeight(), (int)gem.getHeight()); assertEquals("Width of the texture engine differente of width of gem(bright true)",engine.getTextureRect().getWidth(), (int)gem.getWidth()); } Codice:
{ if(!brightened) { setViewArea( new Rectangle( 0, 0, ((int) getWidth()) -1, ((int) getHeight()) -1 ) ); } else { setViewArea( new Rectangle( getTexture().getWidth() / 2, 0, ((int) getWidth()) -1 + (getTexture().getWidth() / 2), ((int) getHeight()) -1 ) ); } this.brightened = brightened; } Ho provato anche a farlo girare e ora si vede bene. Un appunto sui colori dei diamanti: il diamante(normale) è molto simile all sapphire illuminato(una volta sovrapensiero mi sono proprio sbagliato), forse si potrebbero differenziare un po di piu. Se il tutto va bene, fatemi sapere come fare il commit ![]() |
|
![]() |
![]() |
#18 | ||
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Quote:
![]() Quote:
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
||
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
mi manca il login e pwd
|
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao ![]() |
|
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:36.