|
|
|
![]() |
|
Strumenti |
![]() |
#21 |
Senior Member
Iscritto dal: Nov 2002
Città: Cosenza --> Roma
Messaggi: 853
|
ecco il test in gemTestCollisionSound:
Codice:
public void testCollisionSoundNearWall() { Input input=Input.createInputForTesting(); gem.setCollisionSound(sound); gem.move(-67.99f,0); assertEquals(gem.getWidth()/2+0.01f, gem.getX(), 0.001f); assertTrue (gem.isPulsing()); assertFalse (sound.wasPlayed()); gem.draw(null); gem.reactToInput(input); assertFalse (sound.wasPlayed()); }
__________________
GNU MyServer Wants YOU!! We live thinking we will never die. We die thinking we had never lived. Jason Becker |
![]() |
![]() |
![]() |
#22 | |
Senior Member
Iscritto dal: Dec 2002
Messaggi: 418
|
Quote:
Per esempio a me CheckForCollision risulta molto più chiaro così: Codice:
private boolean checkForCollision(float dx, float dy) { boolean collided = false; if(testLeftEdgeCollision()) { x = (width / 2); collided = true; } if(testRightEdgeCollision()) { x = (displayWidth - (width / 2)); collided = true; } if(testTopEdgeCollision()) { y = (height / 2); collided = true; } if(testBottomEdgeCollision()) { y = (displayHeight - (height / 2)); collided = true; } return collided; } Inoltre nei metodi testBottomEdgeCollision (e Left,Right,Top) non serve passare alcun valore visto che usano direttamente le variabili interne, ed infatti nella mia versione locale gli ho tolto i parametri come potete vedere dalle chiamate del metodo checkForCollision suggerito sopra. Inoltre, visto che nel codice il movimento è true quando non ci sono collisioni, io direi che le collisioni devono essere true quando la texture tenta di superare i limiti, non quando ci arriva pari pari. Cioè, tradotto in codice: Codice:
private Boolean testLeftEdgeCollision(float dx) { return ((x - (width / 2)) < 0); // < 0 anziché il <= 0 } |
|
![]() |
![]() |
![]() |
#23 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
Bravi tutti e due.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
![]() |
![]() |
![]() |
#24 | |
Senior Member
Iscritto dal: Dec 2002
Messaggi: 418
|
Quote:
Per quanto riguarda il "procedere al refactoring", la mia copia locale è già modificata, i test non sembrano dare segnali rossi (spero di aver impostato bene ![]() |
|
![]() |
![]() |
![]() |
#25 | |
Senior Member
Iscritto dal: Dec 2002
Messaggi: 418
|
Quote:
checkForCollision(float dx, float dy) e dei 4 metodi di check collisioni sui bordi (ma senza modificare il <=0 in <0 per adesso). Grazie fek per la disponibilità su Msn ![]() |
|
![]() |
![]() |
![]() |
#26 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Grandi
![]() Ultima modifica di cionci : 07-10-2005 alle 00:22. |
![]() |
![]() |
![]() |
#27 | ||
Senior Member
Iscritto dal: May 2002
Città: Milan
Messaggi: 572
|
Quote:
Della serie a volte ritornano... ![]() Appena fatto l'update, provato a far passare i test e passano tutti....ok, è tutto a posto fin'ora....lanciamo il tutto e....nooo, il background non viene caricato completamente (256*512) ma solo una piccola parte (256*40), mah..sarà normale? si passa avanti a "giocare" con il movimento, destra --> destra wow sinistra --> sinistra figata! su --> come può andare su qualcosa che deve scendere per forza? giu --> niente, bè, si vede che non è possibile mandare giu più velocemente la gemma... diagonali --> ovviamente nulla destra+sinistra (e contrario) --> nooooooooo, cos'è successo? il test fatto ai tempi non ci ha segnalato questo? come è possibile, qua urge qualche modifica...noi (o meglio jocchan ![]() Quote:
![]() Ultima modifica di cover : 30-10-2005 alle 10:39. |
||
![]() |
![]() |
![]() |
#28 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ahio... sto iniziando a pensare che il refactoring di fek del codice di cionci non sia stata una gran bella idea dopotutto...
![]() ok: è colpa di chet!! chi sistema il codice? ![]() (io non mi smentisco!!! ![]() |
![]() |
![]() |
![]() |
#29 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
![]() E prima scrivi il test relativo.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
![]() |
![]() |
![]() |
#30 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#31 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ragazzi, la sequenza di input da generare per mettere in risalto l'errore è piuttosto complessa, ho dovuto farmi aiutare dal debugger, comunque ecco qua il test fallimentare che ho aggiunto in TestGridReactionToInput:
Codice:
public void testRapidInputs() { grid.insertGemIntoColumn(1, gem); input.generateKey(KeyCode.vk_Right); input.generateKey(KeyCode.vk_Left); grid.reactToInput(input); input.generateKey(KeyCode.vk_Left, false); grid.reactToInput(input); grid.reactToInput(input); } |
![]() |
![]() |
![]() |
#32 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
errata coccige: il problema si verifica a causa dell'inserzione della stessa gemma in posizioni diverse; per correggere il problema degli "input rapidi" basta correggere quest'altro; ora provo a scrivere un altro test per quest'altro problema (ma quando pranzo oggi?
![]() |
![]() |
![]() |
![]() |
#33 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
eccolo qua, si trova in TestGrid:
Codice:
public void testSameInsertion() { grid.insertGem(4, 3, gem); try { grid.insertGem(4, 4, gem); } catch(IllegalArgumentException e) { return; } fail("same gem inserted at different positions"); } |
![]() |
![]() |
![]() |
#34 |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Ottimo lavoro.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
![]() |
![]() |
![]() |
#35 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
![]() questo problema non è di semplice soluzione; a me vengono in mente 3 possibili maniere di risolverlo: 1) doppio for in insertGem che cicla su tutta la matrice per vedere se la gemma è già inserita da qualche altra parte 2) aggiunta di un campo row e column in Gem che identificano la posizione nella rispettiva Grid (da impostarsi a (-1, -1) nel caso la Gem non sia inserita in nessun oggetto Grid) 3) implementazione di una hash map in Grid per ritrovare facilmente tutte le Gem inserite. mi riesce difficile giudicare quale sia la soluzione più semplice: la prima è troppo complessa (troppo codice in una volta sola), la seconda comporta una duplicazione dell'informazione che potrebbe rivelarsi difficile da gestire e potrebbe portare errori, la terza ha lo stesso problema della prima ed inoltre non so se sia fattibile perché non conosco le hash map in Java e non so se il puntatore ad un oggetto può essere usato come hash dell'oggetto stesso. beh, io per adesso opterei per la prima ma credo che alla fine della storia sia opportuno un bel refactoring in cui eventualmente si applicherà la terza. |
|
![]() |
![]() |
![]() |
#36 |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Per ora vai con 1).
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
![]() |
![]() |
![]() |
#37 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
PS: ho anche aggiunto un piccolo test a findGemCell che serve per il modo in cui uso quel metodo in insertGem. |
|
![]() |
![]() |
![]() |
#38 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
ed anche questa è fatta ^^
ho committato tutto e la build dovrebbe essere verde. resta solo da vedere perché l'abbassamento veloce non funziona più; lo faccio io? |
![]() |
![]() |
![]() |
#39 | |
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 |
|
![]() |
![]() |
![]() |
#40 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
comunque hai ragione, aspetterò il task |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:05.