|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#41 | |
|
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Quote:
|
|
|
|
|
|
#42 | |
|
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 |
|
|
|
|
|
#43 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Quote:
I limiti del task sono chiari?
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
#44 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
A sto punto credo che io e cionci dovremmo semplicemente implementare la classe GemsPair e thebol i controlli su di essa (collisioni e movimenti, ovviamente rotazioni escluse)
|
|
|
|
|
#45 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
cionci se confermi iniziamo
|
|
|
|
|
#46 |
|
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Allora ridefinisco i limiti del mio task
-inserimento di 2 gemme(DO) -gravità su entrambe le gemme(DO)(in configurazione pivot[1,4] slave[0,4]) -funzionamento downkey(venuto gratis dal sottotask precedente)(DO) -Movimento di entrambe le gemme a sx e dx (in configurazione pivot[1,4] slave[0,4])(DO) -Collisione a sx a dx e in basso (in configurazione pivot[1,4] slave[0,4])(TODO) -init del gioco con 2 gemme e creazione di 2 gemme quando raggiungono il fondo(TODO) Se volete ovviamente gestisco tutte le collisioni e i movimenti |
|
|
|
|
#47 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
hmmm aspetto qualcuno che si confermi per il pair e parto subito
nessuno? |
|
|
|
|
#48 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non posso farlo in pair programming, sono occupato in questi giorni...
|
|
|
|
|
#49 |
|
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
E ora le collisioni...
Codice:
public void testMoveTwoGemLeftWithCollisionOfEach()
{
grid.insertGemUnderControl(1, 0, gem1);
grid.insertGemAsSlave(2,0,gem2);
input.generateKey(KeyCode.vk_Left, timer.getTime());
inputReactor.reactToInput();
assertEquals("Gem pivot must not move to the left", grid.getGemAt(1, 0), gem1);
assertEquals("Gem slave must not move to the left", grid.getGemAt(2, 0), gem2);
}
Codice:
public void testMoveTwoGemRightWithCollisionOfEach()
{
grid.insertGemUnderControl(1, GRID_COLUMNS - 1, gem1);
grid.insertGemAsSlave(2, GRID_COLUMNS - 1, gem2);
input.generateKey(KeyCode.vk_Right, timer.getTime());
inputReactor.reactToInput();
assertEquals("Gem pivot must not move to the right", grid.getGemAt(1, GRID_COLUMNS - 1), gem1);
assertEquals("Gem slave must not move to the right", grid.getGemAt(2, GRID_COLUMNS - 1), gem2);
}
e ora la collisione in basso (aka bloccare le gemme dalla caduta per gravita) Codice:
public void testTwoGemIsNotFalling()
{
grid.insertGemUnderControl(GRID_ROWS - 1, 0, gem1);
grid.insertGemAsSlave(GRID_ROWS - 2, 0, gem2);
grid.update();
assertTrue(gem1.isNotFalling());
assertTrue(gem2.isNotFalling());
}
Codice:
if(gemCantMoveDown(getGemUnderControl()))
{
[...]
if (getGemSlave() != null){
getGemSlave().dropGem();
}
}
build verde |
|
|
|
|
#50 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
beh appena si offre qualcuno parto (fek?
|
|
|
|
|
#51 |
|
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
a questo punto, si potrebbe incominciare a metter insertTwoNewGem(); al posto di insertNewGem nel costruttore di grid.
Codice:
public void testTwoGemInsertion()
{
assertNotNull("no gem Pivot inserted in grid after creation",
grid.getGemUnderControl());
assertNotNull("no gem Slave inserted in grid after creation",
grid.getGemSlave());
}
Codice:
public Grid(Rectangle bounds, Config config, GemGenerator gemGenerator)
{
[...]
//insertNewGem();
insertTwoNewGem();
}
Ma questo rompe assai la build, ma basta cambiare il createForTesting di grid in maniera che rimuova anche la gemma slave da grid e torna ad andare tutto Codice:
public static Grid createForTesting(GemGenerator gemGenerator)
{
Grid grid = new Grid(new Rectangle(40, 40, 295, 487), Config
.createForTesting(), gemGenerator);
grid.removeGemFromGrid(grid.getGemUnderControl());
grid.removeGemFromGrid(grid.getGemSlave());
grid.gemUnderControl = null;
grid.gemSlave = null;
grid.empty = true;
return grid;
}
ora manca che a quando le gemme raggiungono il fondo, vengano create 2 gemme invece che 1 Codice:
public void testTwoNewGemInsertion()
{
grid.insertGemUnderControl(13, 4, gem1);
grid.insertGemAsSlave(12,4,gem2);
controller.update(timer);
assertNotNull(grid.getGemUnderControl());
assertTrue(gem1 != grid.getGemUnderControl());
assertNotNull(grid.getGemSlave());
assertTrue(gem2 != grid.getGemSlave());
}
Codice:
private void handleWaitState(AbstractTimer timer)
{
if(timer.getTime() - timeBase >= delay)
{
if(isGameOver())
{
return;
}
//grid.insertNewGem();
grid.insertTwoNewGem();
waitState = false;
}
}
questo rompe da problemi a testAfterSecondDelay, ma basta spostare il piazzamento della gemma in 12,4(quello previsto dall'init) e tutto ridiventa verde Codice:
controller.setDelay(300); grid.insertGemUnderControl(12, 4, gem1); controller.update(timer); [...] |
|
|
|
|
#52 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Secondo me Grid non deve sapere dell'esistenza di due gemme sotto controllo. Questo concetto deve essere esclusiva di GridControl. In altre parole vi avevo chiesto di non mettere nulla in Grid che non fosse strettamente necessario e questo non mi sembra il caso. Voglio essere molto draconiano su questo punto.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
#53 | |
|
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Quote:
solo che essendo la gemundercontrol in grid, ho preferito mantenere per ora il fatto delle 2 gemme in grid, aspettando(e proponendo) di spostare le gemme controllate in gridcontroll per il refactoring di gemPairs grid deve essere solo una griglia dove inserire gemme, e che dia responsi se una gemma e spostabile o no, etc. ora aggiungo un test per verificare che anche la seconda gemma contribuisca al brighten, poi faccio merg e committo il tutto. |
|
|
|
|
|
#54 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Prima di fare il commit puoi togliere il concetto di coppia di gemme da Grid?
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
#55 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
A proposito di Grid e Gem... Secondo me la classe Cell non dovrebbe stare dentro Gem...
|
|
|
|
|
#56 | |
|
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Quote:
speriamo sia abbastanza indolore |
|
|
|
|
|
#57 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Inoltre il fatto che stia dentro Gem è logicamente corretto: una Gem sta in una data posizione e Cell (magari il nome non è il massimo) ne indica la posizione... |
|
|
|
|
|
#58 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Sono d'accordissimo che la gemma ha una posizione dentro la griglia però, a parer mio, il concetto di Cell (vista come elemento di Grid) ed il concetto di Gemma sono abbastanza separati da giustificare l'indipendenza della classe Cell (e non un oggetto Cell) da Gem...
Se proprio non vi piace la classe Cell separata... Perchè non spostarne la dichiarazione dentro Grid invece che dentro Gem? Ultima modifica di Ufo13 : 18-12-2005 alle 17:50. |
|
|
|
|
#59 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
#60 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
Secondo me il design ne è compromesso... Anche rinominandola continui ad avere dentro la classe Gem una classe che non c'entra con Gem...
Puoi benissimo tenere Cell in Grid e lasciare tutto com'è cambia una sola riga in Gem.java: Codice:
private Cell cell; Codice:
private Grid.Cell cell; |
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:34.


















