|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
[CICLO 14] Storia 2: Task 2
Allora qualcuno mi da una mano? Soprattutto col testing! Il primo problema è che CrushBox, estendedno Sprite, pulsa più di una volta. La pulsazione però viene gestita nel metodo draw di Sprite. Conviene fare overriding del metodo nella classe CrushBox o conviente modificarlo nella classe Sprite?
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Puoi usare getPulseSize() di sprite. Quando questa diventa più grande di 2 * Math.PI allora ha fatto una pulsazione completa, quindi si è ingrandita ed è poi ritornata alla dimensione originale.
ciao |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Ok, redcloud sta facendo il task in pair con me.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
- Verifica che al momento della creazione la CrushBox non stia pulsando
Codice:
public void testCrushBoxIsPulsingWhenCreated()
{
CrushBox crushBox = new CrushBox(new Point(2, 2), 10, 600);
assertTrue("CrushBox is pulsing", crushBox.getNumberOfPulses == 0);
}
Ultima modifica di redcloud : 15-04-2006 alle 19:21. |
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
- La soluzione più semplice che mi viene in mente è questa, ma forse è troppo semplice!
Codice:
public int getNumberOfPulses()
{
return 0;
}
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
E' la soluzione perfetta, ora l'altro test.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#9 | |
|
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 |
|
|
|
|
|
|
#10 |
|
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Codice:
public void testCrushBoxPulseAtLeastOneTime()
{
CrushBox crushBox = new CrushBox(new Point(2, 2), 10, 600);
EngineInterface engine = Engine.createEngineForTesting(800, 600);
crushBox.setSpeedDivider(1.0f);
crushBox.setSizeMultiplier(4.0f);
crushBox.show();
crushBox.startPulsing();
crushBox.draw(engine);
crushBox.draw(engine);
crushBox.draw(engine);
crushBox.draw(engine);
float pulseSize = 0.0f;
for(int i = 0; i < 4; i++)
{
pulseSize += 1/crushBox.getSpeedDivider();
}
assertEquals(crushBox.getPulseSize(), pulseSize);
assertEquals(1, crushBox.getNumberOfPulses());
}
Ultima modifica di redcloud : 16-04-2006 alle 09:39. |
|
|
|
|
|
#11 |
|
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Soluzione
Codice:
public int getNumberOfPulses()
{
return (pulseSize >= Math.PI) ? 1 : 0;
}
|
|
|
|
|
|
#12 |
|
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Codice:
public void testCrushBoxIsPulsingOneTime()
{
CrushBox crushBox = new CrushBox(new Point(2, 2), 10, 600);
EngineInterface engine = Engine.createEngineForTesting(800, 600);
crushBox.setSpeedDivider(0.34906587f);
crushBox.setSizeMultiplier(4.0f);
crushBox.show();
crushBox.startPulsing();
for(int i = 0; i < 9; i++)
{
crushBox.draw(engine);
}
float pulseSize = 0.0f;
for(int i = 0; i < 9; i++)
{
pulseSize += 1/crushBox.getSpeedDivider();
}
assertEquals(crushBox.getPulseSize(), pulseSize);
assertEquals(1, crushBox.getNumberOfPulses());
}
|
|
|
|
|
|
#13 |
|
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Codice:
public void testCrushBoxIsPulsingNTimes()
{
CrushBox crushBox = new CrushBox(new Point(2, 2), 10, 600);
EngineInterface engine = Engine.createEngineForTesting(800, 600);
crushBox.setSpeedDivider(0.62831853f);
crushBox.setSizeMultiplier(4.0f);
crushBox.show();
crushBox.startPulsing();
for(int i = 0; i < 10; i++)
{
crushBox.draw(engine);
}
float pulseSize = 0.0f;
for(int i = 0; i < 10; i++)
{
pulseSize += 1/crushBox.getSpeedDivider();
}
assertEquals(crushBox.getPulseSize(), pulseSize);
assertEquals(2, crushBox.getNumberOfPulses());
for(int i = 0; i < 10; i++)
{
crushBox.draw(engine);
}
for(int i = 0; i < 10; i++)
{
pulseSize += 1/crushBox.getSpeedDivider();
}
assertEquals(crushBox.getPulseSize(), pulseSize);
assertEquals(4, crushBox.getNumberOfPulses());
}
|
|
|
|
|
|
#14 |
|
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Soluzione:
Codice:
public int getNumberOfPulses()
{
if(speedDivider > 0.0f)
{
float numberOfPulses = ((pulseSize * speedDivider) * speedDivider)
/ (float)Math.PI;
float nextPulse = pulseSize + 1/speedDivider;
float numberOfPulsesPlusOne = ((nextPulse * speedDivider) *
speedDivider) / (float)Math.PI;
if((int) numberOfPulsesPlusOne > (int) numberOfPulses)
{
return (int) numberOfPulsesPlusOne;
}
else
{
return (int) numberOfPulses;
}
}
return 0;
}
|
|
|
|
|
|
#15 |
|
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Codice:
public void testCrushBoxWithConfigValues()
{
Config config = Config.createForTesting();
CrushBox crushBox = new CrushBox(new Point(2, 2), 10, 600);
EngineInterface engine = Engine.createEngineForTesting(800, 600);
crushBox.setSpeedDivider(10.0f);
crushBox.setSizeMultiplier(4.0f);
float speedDividerFromConfig = config.getInteger("CrushBoxSpeedDivider");
float sizeMultiplierFromConfig = config.getInteger("CrushBoxSizeMultiplier");
assertEquals(speedDividerFromConfig, crushBox.getSpeedDivider());
assertEquals(sizeMultiplierFromConfig, crushBox.getSizeMultiplier());
}
|
|
|
|
|
|
#16 |
|
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Soluzione:
Ho aggiunto due chiavi nel file GameConfig CrushBoxSpeedDivider = 10 CrushBoxSizeMultiplier = 4 P.s. nello stesso file c'è una chiava crashBoxSpeed che forse dovrebbe essere cambiata in crushBoxSpeed |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Quote:
Red, ho notato che nell'ultima build le coordinate delle CrushBox sono sballate. E' una cosa temporanea, che tornerà a posto alla fine del task?
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
|
#18 |
|
Bannato
Iscritto dal: Feb 2003
Città: Anche Chuck Norris usa Debian e Gnome
Messaggi: 1270
|
Si l'ho notato anche io ma gia da prima che facessi il primo commit, ho dimenticato di segnalarlo! Cmq non dipende da me, io con le coordinate non ci lavoro. Se ne dovrebbe occupare chi ha fatto il task 3.
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Joc le coordinate erano corrette... Non so perchè vengono così... Provo con altri test.. Mi riposti le coordinate?
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
x=-67 y=192 per il P1 e x=611 y=192 per il P2
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:10.



















