|
|
|
![]() |
|
Strumenti |
![]() |
#21 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
commento temporaneamente gli altri due test che riguardano update...
Inserisco questo codice in update di Gem: Codice:
public void update(AbstractTimer timer) { if(timer.getTime() >= 3500) ++currentFrame; } Ora però devo fare in modo di far passare gli altri test: Codice:
public void testUpdate() { gem.addFrame(10, 10, 100); gem.update(new MockTimer(3500)); assertEquals("current frame must be 1 after an update", 1, gem.getCurrentFrame()); } Ora passiamo al secondo: Codice:
public void testUpdateWithThreeFrames() { gem.addFrame(10, 10, 100); gem.addFrame(20, 20, 100); MockTimer timer = new MockTimer(3500); gem.update(timer); timer.advance(1); gem.update(timer); assertEquals("current frame must be 1", 1, gem.getCurrentFrame()); timer.advance(99); gem.update(timer); assertEquals("current frame must be 2", 2, gem.getCurrentFrame()); } Devo lavorare sul mio codice che quindi non va bene... |
![]() |
![]() |
![]() |
#22 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Allora modifico addFrame(0, 0 ,0) nel costruttore in addFrame(0, 0, 3500)...
Aggiungo a gem: private long frameChangeTimeStamp = 0; Modifico il codice di update in questo modo: Codice:
public void update(AbstractTimer timer) { long timeStamp = timer.getTime(); if(timeStamp - frameChangeTimeStamp >= frames.get(getCurrentFrame()).getLength()) { ++currentFrame; frameChangeTimeStamp = timeStamp; } } Se è tutto ok vado a scrivere il prossimo test... |
![]() |
![]() |
![]() |
#23 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il nuovo test è questo:
Codice:
public void testOneUpdateForMultipleFrames() { gem.addFrame(10, 10, 100); gem.addFrame(20, 20, 100); MockTimer timer = new MockTimer(3600); gem.update(timer); assertEquals("current frame must be 2 after one update", 2, gem.getCurrentFrame()); } |
![]() |
![]() |
![]() |
#24 |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Ed ecco il codice che fa passare il test:
Codice:
public void update(AbstractTimer timer) { long deltaTime = 0; deltaTime = timer.getTime() - lastTime; currentTime += deltaTime; int frame = 0; int frameTime = frames.get(frame).getLength(); while (currentTime >= frameTime) { frameTime += frames.get(++frame).getLength(); } lastTime = timer.getTime(); currentFrame = frame; } Ho imparato la lezione, la prossima volta mi ricordero' di farlo passo passo anche se sono sicurissimo di quello che sto facendo, impieghero' certamente meno tempo di quanto ne ho impiegato questa volta, cercando di fare tutto in un passo.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
![]() |
![]() |
![]() |
#25 |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Test: se la gemma si trova al frame N-1 deve ritornare al frame 0 dopo 100 ms
Codice:
public void testCyclingAnimation() { gem.addFrame(10, 10, 1000); MockTimer timer = new MockTimer(0); gem.update(timer); timer.advance(3500 + 1000); gem.update(timer); assertEquals("current frame must be 0 after a complete cycle", 0, gem.getCurrentFrame()); } A te. Non fare il mio stesso errore, fallo passo per passo ![]()
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
![]() |
![]() |
![]() |
#26 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non c'è stato bisogno di andare passo-passo perchè ci voleva un solo passo:
Codice:
public void update(AbstractTimer timer) { long deltaTime = 0; deltaTime = timer.getTime() - lastTime; currentTime += deltaTime; int frame = 0; int frameTime = frames.get(frame).getLength(); while (currentTime >= frameTime) { if(frame == frames.size() - 1) frame = -1; frameTime += frames.get(++frame).getLength(); } lastTime = timer.getTime(); currentFrame = frame; } ![]() |
![]() |
![]() |
![]() |
#27 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Passo a scrviere il test per la draw...
|
![]() |
![]() |
![]() |
#28 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Codice:
public void testDrawTwoFrames() { gem.addFrame(10, 15, 100); gem.addFrame(20, 25, 100); MockEngine engine = MockEngine.createForTesting(800, 600); MockTimer timer = new MockTimer(3500); gem.update(timer); gem.draw(engine); assertEquals("bad texture drawn", 10.0f, engine.getTextureRect().left(), 0.001); assertEquals("bad texture drawn", 15.0f, engine.getTextureRect().top(), 0.001); timer.advance(100); gem.update(timer); gem.draw(engine); assertEquals("bad texture drawn", 20.0f, engine.getTextureRect().left(), 0.001); assertEquals("bad texture drawn", 25.0f, engine.getTextureRect().top(), 0.001); } Ultima modifica di cionci : 11-12-2005 alle 15:03. |
![]() |
![]() |
![]() |
#29 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Porto avanti io il test...
|
![]() |
![]() |
![]() |
#30 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ora bisogna modificare la classe Frame per memorizzare e poter recuperare i valori delle coordinate...
Per fare questo scrivo questo test: Codice:
public void testGetCoordinates() { Frame frame1 = new Frame(10, 20, 1000); assertEquals("erroneous value from getX", 10, frame1.getX()); assertEquals("erroneous value from getY", 20, frame1.getY()); Frame frame2 = new Frame(15, 5, 2000); assertEquals("erroneous value from getX", 15, frame2.getX()); assertEquals("erroneous value from getX", 5, frame2.getY()); } Codice:
public class Frame { private int length; private int x; private int y; public Frame(int x, int y, int length) { this.x = x; this.y = y; this.length = length; } public int getLength() { return length; } public int getX() { return x; } public int getY() { return y; } } |
![]() |
![]() |
![]() |
#31 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Per fare questo mi basta aggiungere una sola riga in update:
Codice:
public void update(AbstractTimer timer) { long deltaTime = 0; deltaTime = timer.getTime() - lastTime; currentTime += deltaTime; int frame = 0; int frameTime = frames.get(frame).getLength(); while (currentTime >= frameTime) { if(frame == frames.size() - 1) frame = -1; frameTime += frames.get(++frame).getLength(); } lastTime = timer.getTime(); currentFrame = frame; setTextureArea(frames.get(frame).getX(), frames.get(frame).getY()); } |
![]() |
![]() |
![]() |
#32 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il task non è ancora finito, dobbiamo ancora gestire le animazioni della gemma illuminata...ma non so se vi siete resi conto, ma abbiamo implicitamente risolto anche il task 6.2.4 !!!
|
![]() |
![]() |
![]() |
#33 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
si perchè usi un timer unico... mi accontenterò di fare un po' di refactoring
![]() |
![]() |
![]() |
![]() |
#34 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
C'è ancora da includere l'update delle gemme in Grid ed inizializzare le nuove gemme con i giusti frame in GemFactory...
Credo che tu possa partere anche ora... Intanto preparo il test per le gemme illuminate per fek !!! |
![]() |
![]() |
![]() |
#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
|
Il nuovo test per fek:
Codice:
public void testBrightenedFrames() { gem.addFrame(10, 15, 100); gem.addFrame(20, 25, 100); gem.useBrighterImage(); MockEngine engine = MockEngine.createForTesting(800, 600); MockTimer timer = new MockTimer(3500); gem.update(timer); gem.draw(engine); assertEquals("bad texture drawn", 42, engine.getTextureRect().left()); assertEquals("bad texture drawn", 47, engine.getTextureRect().top()); gem.useNormalImage(); timer.advance(100); gem.update(timer); gem.draw(engine); assertEquals("bad texture drawn", 20, engine.getTextureRect().left()); assertEquals("bad texture drawn", 25, engine.getTextureRect().top()); } |
![]() |
![]() |
![]() |
#37 |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Rieccomi.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
![]() |
![]() |
![]() |
#38 |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Una sola modifica in update():
Codice:
setTextureArea( frames.get(frame).getX() + (this.bright ? 32 : 0), frames.get(frame).getY()); Codice:
assertEquals("bad texture drawn", 42, engine.getTextureRect().left()); assertEquals("bad texture drawn", 15, engine.getTextureRect().top());
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
![]() |
![]() |
![]() |
#39 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il test ce l'hai...telefono alla mia ragazze e dopo apro MSN...
|
![]() |
![]() |
![]() |
#40 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ok...giusto... Avevo sbagliato il test...
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:48.