View Full Version : Thread dei Problemi
cdimauro
06-04-2006, 15:08
C'è qualche problema con Spartacus: adesso dentro la cartella trunk c'è un'altra cartella trunk che ne riporta tutto il contenuto! Risulta anche a voi?
Non fate l'update o il checkout per il momento, perché altrimenti sareste costretti a scaricare anche questi doppioni!!!
C'è qualche problema con Spartacus: adesso dentro la cartella trunk c'è un'altra cartella trunk che ne riporta tutto il contenuto! Risulta anche a voi?
Non fate l'update o il checkout per il momento, perché altrimenti sareste costretti a scaricare anche questi doppioni!!!
Mi sa che e' colpa mia. Metto a posto.
Ora dovrebbe essere ok.
cdimauro
06-04-2006, 17:45
Sì, confermo che adesso è tutto ok. Grazie! :)
Sto rifacendo il CheckOut, ma adesso non c'arrivo a togliere di mezzo i warning e a committare. Se ne parla domani. Sorry. :(
SVN pare sia di nuovo down
SVN pare sia di nuovo down
confermo e uppo
ora il server è up, ma mi chiede la pwd(nn sto committando)
Il repository ha cambiato url:
http://www.hwupgrade.it/forum/showthread.php?t=1174643
il test testDrawTwoGemPositionAndTexture fallisce a random(raramente..)
il test testDrawTwoGemPositionAndTexture fallisce a random(raramente..)
Puoi postare il messaggio di failure?
ci ho messo un po a farlo venir fuori...
junit.framework.ComparisonFailure: expected:<...\null> but was:<...>
at junit.framework.Assert.assertEquals(Assert.java:81)
at junit.framework.Assert.assertEquals(Assert.java:87)
at it.diamonds.tests.engine.video.TestNextGemsPanel.testDrawTwoGemPositionAndTexture(TestNextGemsPanel.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Ti ringrazio :)
Vedo di sistemare :P
BlueDragon
08-04-2006, 15:00
Ti ringrazio :)
Vedo di sistemare :P
Ciao Ufo13, ho visto che hai sistemato mettendogli una sequenza di gemme fissa; evitando così che venisse creata la Flashing, che come png si trova assieme alle gemme anziché in una sua directory flashing e faceva quindi fallire il test.
Non sarebbe meglio dare una directory alla flashing ed anche alle gemme normali, così come è per le stones, i boxes ed i tiles?
Tra l'altro così forse si potrebbe anche fare in modo che le Gemme non siano le uniche a restituire stringa vuota "" come DroppableType....
public static final DroppableType GEM = new DroppableType("");
Non so se è stato messo così perché le gem sono le uniche che non hanno una sottodirectory per le loro png o per un altro motivo, ma a guardare il codice sembra un po' strano, che ne dite? :)
Ciao Ufo13, ho visto che hai sistemato mettendogli una sequenza di gemme fissa; evitando così che venisse creata la Flashing, che come png si trova assieme alle gemme anziché in una sua directory flashing e faceva quindi fallire il test.
Non sarebbe meglio dare una directory alla flashing ed anche alle gemme normali, così come è per le stones, i boxes ed i tiles?
Tra l'altro così forse si potrebbe anche fare in modo che le Gemme non siano le uniche a restituire stringa vuota "" come DroppableType....
public static final DroppableType GEM = new DroppableType("");
Non so se è stato messo così perché le gem sono le uniche che non hanno una sottodirectory per le loro png o per un altro motivo, ma a guardare il codice sembra un po' strano, che ne dite? :)
Sì, secondo me potremmo standardizzare il tutto :)
Tra l'altro così forse si potrebbe anche fare in modo che le Gemme non siano le uniche a restituire stringa vuota "" come DroppableType....
public static final DroppableType GEM = new DroppableType("");
Non so se è stato messo così perché le gem sono le uniche che non hanno una sottodirectory per le loro png o per un altro motivo, ma a guardare il codice sembra un po' strano, che ne dite? :)
Sì, l'ho messo per quello ;)
ho sistemato tutta quella parte :)
EDIT: avevo test che fallivano...ma era ilmio workspace "sporco"
;)
[checkstyle] D:\Valerio\workspace\Diamonds\src\it\diamonds\gems\Chest.java:4: Class Chest should be declared as final.
Allora..è un problema già posto da cionci. Ora la classe è definita final per non incappare in questo errore del checkstyle.
Vorrei far ricordare però che il checkstyle è uno strumento...non un fine.
Se lui ci dice che deve essere final mai noi sappiamo che non deve essere final...bhè non ci faccimao mettere i piedi in testa da uno strumento :nonsifa:
Qualcuno sa come risolvere ??!! :muro: :muro: :muro:
Io il checkstyle prorpio non lo conosco :doh:
lo fa perchè il costruttore è private
Ho messo costruttore privato e final pure nelle altre classi derivate da AbstractDroppable
Il server è down :(
Se il server continua ad andare su e giu', pero', lo spostiamo sul mio server di casa che da settimane e' sempre su.
Cruisecontrol e' ripartito, ho avuto un po' di problemi con il cambio di svn server, ora tutto ok, anche la spedizione delle mail. E mi arrivano anche i feed sulla PSP, quindi occhio :D
finalmente torno a postare dopo 10gg di vacanza forzata...e le cose non potrebbero andare peggio...dall ultima (nonche prima) sessione di "indottrinamento" con tigershark, praticamente ho solo cercato di studiare il codice di diamonds, causa forza maggiore (esami a grappolo)...l' ideale di autostima prossimo allo zero è poi stato acuito terribilmente dal lutto di un paio di giorni fa, quando NON ho passato programmazione 2 (java) con il minimo per non passare...ora, prima della rinuncia, lo avevo passato e registrato pure...2+2= crisi misticodepressiva stellare, se non riesco nemmeno a ripassare un esame banale su argomenti banali, diamonds diventa uno di quei traguardi che non si possono nemmeno avvicinare...
tanto piu che per riparare alla idiozia che ho partorito mi sono reiscritto il 12 e avro 12 + 20 due esami che mi powneranno tutta la giornata...sembra proprio che ogni molecola del mio corpo non si senta in grado di sniubbarsi e cominciare a fare qualcosa di stimolante e divertente oltre che formativo (diamonds)...io dico che non mi arrendo e cerco di studiare e sniubbarmi, ma speriamo che non mi capiti un altra botta simile nel breve termine, altrimenti mollo tutto e divento un meccanico tamarro che vive per la disco del sabato sera e tanti saluti alla mia dignita umana....
Sintomi: Il paziente scrive molto e la sua autostima e' prossima allo zero.
Diagnosi: Loquacite post depressiva acuta
Cura: SCRIVI MENO POST E PIU' CODICE! :D
L'indottrinamento serve a poco, ti serve scrivere codice. E fare esperienza scrivendolo e facendo errori. Scrivi meno post e piu' codice.
Ho messo costruttore privato e final pure nelle altre classi derivate da AbstractDroppable
Ecco.
Allora lo volevamo final... :D
non capisco a questo punto perchè il checkstyle non imponenva il final alle altre droppable: Gem, Stone, FlashingGem :mbe: :mbe:
Ora però sono molto più sereno ;)
Cruisecontrol e' ripartito, ho avuto un po' di problemi con il cambio di svn server, ora tutto ok, anche la spedizione delle mail. E mi arrivano anche i feed sulla PSP, quindi occhio :D
A me le mail non arrivano...
:cry: :cry: :cry: :cry:
Quando posso passarti il mi indirizzo :flower:
A me le mail non arrivano...
:cry: :cry: :cry: :cry:
Quando posso passarti il mi indirizzo :flower:
Manda alla mia mail casalinga.
[email protected] (sostituisci nome e cognome)
Manda alla mia mail casalinga.
[email protected] (sostituisci nome e cognome)
ti ho mandato una mail anche io con la stessa richiesta :)
Vi aggiungo entrambi.
Ricordate che potete anche farvi inoltrare i feed RSS usando questo indirizzo:
http://fcarucci.homeip.net:8080/cruisecontrol/rss/diamonds
E' comodissimo per avere sempre sott'occhio la build se usate un news aggregator, oppure nella pagine principale di google.
Io uso la barra di Mozilla :P
cdimauro
10-04-2006, 08:23
Ho eseguito l'update (da venerdì), lanciato Ant (dopo un cleanup) e mi segnala che la build è rotta:
[junit] at it.diamonds.tests.TestGameLoop.testGameLoopFinishAfterEscapePlayerTwo(TestGameLoop.java:96)
[junit] Testcase: testGameOversAreDisplayingCorrectly(it.diamonds.tests.TestGameLoop): Caused an ERROR
[junit] it.diamonds.PlayField.getGridController()Lit/diamonds/GridController;
[junit] java.lang.NoSuchMethodError: it.diamonds.PlayField.getGridController()Lit/diamonds/GridController;
[junit] at it.diamonds.GameLoop.checkAndShowGameOverMessage(GameLoop.java:194)
[junit] at it.diamonds.GameLoop.updateFields(GameLoop.java:187)
[junit] at it.diamonds.GameLoop.doOneStep(GameLoop.java:286)
[junit] at it.diamonds.tests.TestGameLoop.testGameOversAreDisplayingCorrectly(TestGameLoop.java:109)
BUILD FAILED
C:\Documents and Settings\Cesare\workspace\Diamonds\build.xml:97: Test it.diamonds.tests.TestGameLoop failed
Succede anche ad altri? Controllando i risultati con CruiseControl, ho visto che l'ultima build (del'1:33:02) per lui è "passed".
Sembra un test che fallisce a random, oppure in base al sistema. Ci puoi guardare per favore?
cdimauro
10-04-2006, 11:04
Gli do un'occhiata durante la pausa pranzo.
Falliva anche a me....
... è che con i mille refactoring ti è rimasto qualcosa di "sporco" nel progetto.
O provi a fare Clean del progetto (Project->Clean...) oppure rifai il checkout.
A me ha funzionato :D
cdimauro
10-04-2006, 13:46
Ho effettuato il checkout ed effettivamente la build è verde.
La prossima volta provo col cleanup e vedo se va tutto bene. Fare il checkout ogni volta non mi entusiasma.
BlueDragon
11-04-2006, 01:10
Ci sono almeno un paio bachi in giro...uno è il crash dovuto al fatto che le stone non vengono create con la DroppableFactory e quindi non hanno l'animazione settata adeguatamente e dopo il primo turno fanno crashare tutto (già identificato da TheBol/71104 credo).
Il secondo è questo...non ho tempo per indagare adesso ma vi lascio lo screen, è facile da riprodurre, basta giocare un poco con entrambi i giocatori, dopo aver applicato una patch per il primo problema :)
http://img103.imageshack.us/img103/2812/bacoup1ho.th.jpg (http://img103.imageshack.us/my.php?image=bacoup1ho.jpg)
Il baco principale è la gemma in alto a sinistra... gli spazi vuoti lasciati dalle stones "scadute" (vengono riempiti con nuove gemme solo al turno successivo) immagino verrano fixati con la chiusura dei task delle stones.
ATTENZIONE: attualmente abbiamo un crash che sembra dovuto a OpenAL!! (vedere stack trace nel bug report)
ora sono troppo stanco per ulteriori dettagli, domani vi racconto tutto ^^
comunque rispetto a ieri sera e a stamattina ho semplificato GridController, e non ho maneggiato una sola riga di codice che non sia coperta da test esplicitamente e direttamente ;)
buona notte a tutto il team :p
Ottimo lavoro 71104. Quanto pensi che manchera' alla fine di questo task? Intendo anche con il test che esercita il crash e il relativo fix.
Ottimo lavoro 71104. Quanto pensi che manchera' alla fine di questo task? Intendo anche con il test che esercita il crash e il relativo fix. eh purtroppo non era un crash solo, sono diverse cause (i bug report erano differenti); attualmente comunque credo di aver risolto tutti i crash tranne quello di OpenAL sul quale sto indagando; credo di aver scoperto che OpenAL crasha sempre al ventottesimo blink (il suono nel file diamonds.wav). comunque tornando al task adesso provo a commentare un attimo la linea che causa il crash (solo come spike, poi la riattivo) e a vedere se il task 14.1.2 è finito (non dovrebbe mancare nulla).
per finire le indagini su quel problema mi serve thebol che per ora è offline; adesso vado a lavorare su un'altro bug (quello evidenziato nello screenshot di BlueDragon); il task 14.1.2 comunque si può segnare come completato (ora lo scrivo anche nel thread della storia).
C'è un problemino....
...durante l'inserimento il pattern non è rispettato.
C'è un problemino....
...durante l'inserimento il pattern non è rispettato. siamo sommersi dai bug :cry:
oltre a questo e al crash di OpenAL, ne segnalo altri due:
1) il tasto freccia giù non viene disabilitato mentre cadono le pietre; di conseguenza se l'utente preme e rilascia rapidamente il tasto durante la loro caduta, al rilascio del tasto la gravità torna normale e le pietre cadono lentamente.
2) devo sistemare qualcosa nella gestione di un numero di pietre maggiore di 8; mi è parso di capire che ad es. quando ne cadono 24 (3 file) la prima fila cade correttamente, la seconda resta immobile nella prima riga, e l'inserzione di quelle della terza causa un crash; ma sul crash della terza fila non sono sicuro, potrebbe anche essere dovuto a qualcos'altro... :muro:
siamo sommersi dai bug :cry:
Riparliamone quando avrai 15.000 bug da risolvere in sei settimane ;)
ho fatto un test per il bug evidenziato da BlueDragon e l'ho risolto; fuori uno.
ora per il fuori due dovete aspettare perché devo uscire ^^
a dopo, ciao a tutti.
Bravissimo, gran lavoro :)
ho trovato e corretto altri due bug legati tra loro; uno dei due era anche stato notato da Jocchan.
il metodo PlayField.addIncomingStones non era "cumulativo", ovvero sovrascriveva i valori correnti di GridController.incomingStones e del contatore della warning box (Jocchan aveva notato numeri troppo bassi nella warning box).
tra l'altro questa era sporadicamente una causa di crash: a volte il contatore delle incoming stones presente in GridController assumeva valori negativi e causava un crash con un IndexOutOfBound in StoneFallState che, indirettamente, usa quel contatore per ottenere l'index della colonna e del colore del pattern all'inserzione di ciascuna pietra.
poco fa però giocando ho ottenuto un numero di stones palesemente troppo alto... la saga dei bug continua :cry:
l'ho ottenuto di nuovo, e stavolta ho scoperto la causa! vedo se riesco a correggere...
fai sync, che ho commitato il nuovo state.
ho fatto piazza pulita di tutti i flag in crushState :cool:
fatto.
io nel frattempo sono riuscito a trovare una soluzione; il problema è che dovrei aggiungere un metodo a Grid, ma probabilmente ne potrò anche levare un altro.
CE L'HO FATTA!!! XDXDXD
e fuori due :D
EDIT: ma che dico, questo era già il fuori 4 :asd:
il tempo vola quando si va a caccia di insetti :p
CE L'HO FATTA!!! XDXDXD
e fuori due :D
EDIT: ma che dico, questo era già il fuori 4 :asd:
il tempo vola quando si va a caccia di insetti :p
IDOLO :eek:
Altro bug: c'è un frame di troppo prima della trasformazione in gemma.
Altro bug: c'è un frame di troppo prima della trasformazione in gemma.
Ok, ora abbiamo urgente bisogno di una lista di bug da aggiornare e, possibilmente, i relativi test, subito dopo la Check List. Jocchan, sei il prescelto :D
Assegna ad ogni bug una priorita' (A, B, C o D) con il seguente significato:
A - questo bug causa un crash e/o impedisce di proseguire nel gioco
B - questo bug non causa un crash, ma e' un grave problema di visulizzazione e/o compromette il gameplay
C - questo bug e' un piccolo problema di visualizzazione e non compromette il gameplay
D - questo bug puo' essere totalmente ignorato e la sua soluzione fa parte della wish list
Se tu Jocchan che assegni le priorita'.
Sia il repository che la build machine sono down...possibile ?
Sia il repository che la build machine sono down...possibile ?
La build machine e' su. Se il repository e' down, la build machine non puo' creare la nuova build.
A me risulta inaccessibile...
http://fcarucci.homeip.net:8080/cruisecontrol/buildresults/diamonds?log=log20060410220204Lbuild.772
Indirizzo non trovato
Firefox non riesce a contattare il server fcarucci.homeip.net.
Ho un problema di DNS anche per il repository... Forse sono io... Boh... Mi dai l'indirizzo ip della build machine ? Voglio provare con quello...
Avevo io un problema di dns...
/*public void testGravityRestoredAfterPivotHasFallen()
{
gemsPair.getSlaveGem().drop();
controller.update(timer);
gemsPair.getPivotGem().drop();
controller.update(timer);
assertEquals(0.5, grid.getActualGravity(), 0.001f);
}
public void testGravityRestoredAfterSlaveHasFallen()
{
gemsPair.getPivotGem().drop();
controller.update(timer);
gemsPair.getSlaveGem().drop();
controller.update(timer);
assertEquals(0.5, grid.getActualGravity(), 0.001f);
}*/
Questi test, tra l'altro uguale, che io ho commentato imponevano un comportamento errato a GemFallState...
Infatti queste gem Dropped richiedevano una valore di gravità normale, invece dovrebbe essere strongest... Per ora li ho commentati... Sono in TestGemsPair...
/*public void testGravityRestoredAfterPivotHasFallen()
{
gemsPair.getSlaveGem().drop();
controller.update(timer);
gemsPair.getPivotGem().drop();
controller.update(timer);
assertEquals(0.5, grid.getActualGravity(), 0.001f);
}
public void testGravityRestoredAfterSlaveHasFallen()
{
gemsPair.getPivotGem().drop();
controller.update(timer);
gemsPair.getSlaveGem().drop();
controller.update(timer);
assertEquals(0.5, grid.getActualGravity(), 0.001f);
}*/
Questi test, tra l'altro uguale, che io ho commentato imponevano un comportamento errato a GemFallState...
Infatti queste gem Dropped richiedevano una valore di gravità normale, invece dovrebbe essere strongest... Per ora li ho commentati... Sono in TestGemsPair...
Ok, se sono errati toglili pure dalla codebase.
Ok, se sono errati toglili pure dalla codebase.
quei test mi rovinavano un refactoring...
iniziamo bene... :cry:
fatto il checkout, aggiungo -Djava.library.path=lib/linux come argomento alla VM e....
OS: Linux
Version: 2.6.16-gentoo
Architecture: i386
VM Vendor: Sun Microsystems Inc.
Version: 1.5.0_06
Class Path: /home/cover/workspace/Diamonds/bin:/home/cover/workspace/Diamonds/lib/junit.jar:/home/cover/workspace/Diamonds/lib/easymock.jar:/home/cover/workspace/Diamonds/lib/jar/lwjgl.jar:/home/cover/workspace/Diamonds/lib/jar/lwjgl_devil.jar:/home/cover/workspace/Diamonds/lib/jar/lwjgl_util.jar
JNI Library Path: lib/linux
Exception: class it.diamonds.engine.video.DisplayException
Message: The current display mode is not available due to org.lwjgl.LWJGLException: Could not create a direct GLX context
Display Adapter Driver: null null
Stacktrace:
it.diamonds.engine.video.DisplayException: The current display mode is not available due to org.lwjgl.LWJGLException: Could not create a direct GLX context
at it.diamonds.engine.video.DisplayImplementation.initDisplay(DisplayImplementation.java:171)
at it.diamonds.engine.video.DisplayImplementation.<init>(DisplayImplementation.java:49)
at it.diamonds.engine.Engine.create(Engine.java:29)
at it.diamonds.GameLoop.create(GameLoop.java:94)
at it.diamonds.Game.setUpGame(Game.java:39)
at it.diamonds.Game.create(Game.java:143)
at it.diamonds.Game.main(Game.java:71)
La console:
Display Adapter: null
List of available display modes:
720 x 400 x 24 @85Hz
1024 x 768 x 24 @85Hz
800 x 600 x 24 @75Hz
400 x 300 x 24 @85Hz
1024 x 768 x 24 @70Hz
928 x 696 x 24 @60Hz
320 x 240 x 24 @73Hz
800 x 600 x 24 @85Hz
320 x 175 x 24 @85Hz
416 x 312 x 24 @75Hz
928 x 696 x 24 @75Hz
700 x 525 x 24 @75Hz
640 x 350 x 24 @85Hz
512 x 384 x 24 @87Hz
640 x 512 x 24 @85Hz
400 x 300 x 24 @56Hz
1024 x 768 x 24 @87Hz
512 x 384 x 24 @85Hz
640 x 400 x 24 @85Hz
1280 x 1024 x 24 @85Hz
800 x 600 x 24 @70Hz
832 x 624 x 24 @75Hz
640 x 480 x 24 @60Hz
320 x 240 x 24 @75Hz
512 x 384 x 24 @60Hz
512 x 384 x 24 @70Hz
640 x 480 x 24 @75Hz
1280 x 960 x 24 @60Hz
800 x 600 x 24 @72Hz
700 x 525 x 24 @60Hz
896 x 672 x 24 @75Hz
1280 x 1024 x 24 @75Hz
896 x 672 x 24 @60Hz
1280 x 960 x 24 @85Hz
1024 x 768 x 24 @60Hz
640 x 512 x 24 @75Hz
1024 x 768 x 24 @75Hz
800 x 600 x 24 @65Hz
640 x 480 x 24 @73Hz
400 x 300 x 24 @60Hz
800 x 600 x 24 @56Hz
1152 x 864 x 24 @75Hz
960 x 720 x 24 @60Hz
400 x 300 x 24 @75Hz
640 x 480 x 24 @85Hz
576 x 432 x 24 @75Hz
960 x 720 x 24 @75Hz
320 x 240 x 24 @85Hz
512 x 384 x 24 @75Hz
400 x 300 x 24 @72Hz
1280 x 1024 x 24 @60Hz
320 x 200 x 24 @85Hz
800 x 600 x 24 @60Hz
640 x 512 x 24 @60Hz
320 x 240 x 24 @60Hz
Best mode: 800 x 600 x 24 @85Hz
Driver nvidia 8178, desktop a 1280*104 85Hz
Se ci riesco domani vedo di mettere gli ultimi nvidia...
Che dite? Sfiga ? :(
Update: intanto ho provato sul portatile (XP + Ati) e funziona...appena finisco d'installare l'altro pc (Gentoo + G400) faccio che provarlo pure lì...in teoria dovrebbe andare anche su una scheda un pò vecchia, no?
Attenzione:
public void setStrongestGravity()
{
actualGravity = normalGravity * strongestGravityMultiplier;
}
public void setStrongerGravity()
{
actualGravity = normalGravity * gravityMultiplier;
}
Cosa vuol dire? Non capisco!
BlueDragon
25-04-2006, 14:01
Attenzione:
public void setStrongestGravity()
{
actualGravity = normalGravity * strongestGravityMultiplier;
}
public void setStrongerGravity()
{
actualGravity = normalGravity * gravityMultiplier;
}
Cosa vuol dire? Non capisco!
Che io sappia vi sono due gravità accelerate :)
Una è quella relativa alla pressione del tasto per far scendere le pietre velocemente (dovrebbe essere stronger gravity), l'altra è la super gravità che fa scendere ancora più velocemente le stones.
Anch'io sono rimasto perplesso quando ho visto le due gravità nel config....forse potremmo dar loro dei nomi più espliciti?
Che io sappia vi sono due gravità accelerate :)
Una è quella relativa alla pressione del tasto per far scendere le pietre velocemente (dovrebbe essere stronger gravity), l'altra è la super gravità che fa scendere ancora più velocemente le stones.
Anch'io sono rimasto perplesso quando ho visto le due gravità nel config....forse potremmo dar loro dei nomi più espliciti?
Sarebbe bellissimo :D
BUG: Il punteggio non viene visualizzato alla prima partita, dopo il game over viene creato
BlueDragon
26-04-2006, 22:37
BUG: Il punteggio non viene visualizzato alla prima partita, dopo il game over viene creato
Wow, come abbiamo fatto a non accorgercene?
Cmq ho trovato il bug, l'invocazione a setBackground() di GameLoop è stata commentata (?) nel costruttore di GameLoop e viene invece richiamata dopo la creazione dell'oggetto GameLoop in create().
In questo modo, il background viene aggiunto successivamente al layermanager e finisce per coprire i numeri.
Invece dopo il GameOver, nel metodo restart(), il background viene inizializzato per primo ed il problema scompare.
BlueDragon
26-04-2006, 22:53
Io devo staccare, ma vi lascio qui una possibile soluzione al baco di cui sopra...se qualcuno riesce ad inventarsi un test che verifichi l'ordine dei layer in modo che questo baco non ricapiti, non sarebbe male :)
Comunque una soluzione sarebbe:
* eliminare il gameLoop.setBackground(); richiamato dopo GameLoop gameLoop = new GameLoop(environment);
(circa riga 104)
* decommentare il setBackground() che c'è già nel costruttore e spostarlo minimo dopo this.environment = environment; altrimenti non ha la variabile environment con cui lavorare ed i test falliscono.
Va comunque invocato prima di initPlayField(environment.getTimer()); :)
ragazzi, appena provato, su linux amd64, le gemme scendono "a tratti", rallentano, accelerano, mentre le pulsazioni sono fluide, penso questo bug sia stato introdotto nell'ultimo refactoring, prima nessun problema
ragazzi, appena provato, su linux amd64, le gemme scendono "a tratti", rallentano, accelerano, mentre le pulsazioni sono fluide, penso questo bug sia stato introdotto nell'ultimo refactoring, prima nessun problema
Boh...ci sta che sia il refactoring del timer...
^TiGeRShArK^
26-04-2006, 23:20
ho quasi risolto con webstart..
riesco a caricare tutto tranne le texture..
qualcuno mi può spiegare se con lwjgl è possibile caricare le immagini da un inputstream senza accedere direttamente al filesystem?
a quanto ho capito da un thread su java forums dovrebbe essere possibile ma non spiegavano come fare....
se avete suggerimenti è una cosa buona xkè stasera sono fuso, ma il porting su java web start dovrebbe essere completo una volta risolto questo problema.....
^TiGeRShArK^
26-04-2006, 23:38
ho trovato la soluzione penso...
basta usare
BufferedImage img = ImageIO.read(is);
solo che ho visto che noi nel codice non usiamo una bufferedimage ma carichiamo tutto con ilLoadImage...
se magari qualcuno ke capisce qualcosa di opengl (raffaele, fek :D) mi spiega come cambiare il codice per usare una bufferedimage anzikè direttamente l'array in memoria sarebbe cosa buona e giusta, dato ke non capisco una mazza di opengl :p
cmq il link dove è discusso questo problema è il seguente:
http://lwjgl.org/forum/viewtopic.php?p=3012&sid=e608f98613616ff1e576e8c325018d0a
BlueDragon
26-04-2006, 23:50
qualcuno mi può spiegare se con lwjgl è possibile caricare le immagini da un inputstream senza accedere direttamente al filesystem?
Ma non dovevo staccare un'ora fa?
Cmq se vuoi usare uno stream, guardando i javadoc di LWJGL (http://www.lwjgl.org/javadoc/) ti suggerirei
ilLoadFromStream(java.io.InputStream stream, int type)
Dovrebbe essere la stessa cosa di ilLoadImage(java.lang.String fileName) ma con uno stream.
Wow, come abbiamo fatto a non accorgercene?
[Sboron Time = ON] Eh....se non ci fossi io come fareste.... :Prrr: :Prrr: [Sboron Time = OFF]
cdimauro
27-04-2006, 08:34
Boh...ci sta che sia il refactoring del timer...
Non penso, perché per quanto riguarda il gioco vero e proprio si è trattato di un refactoring "puro": ho soltanto spostato il codice da sleepOneMillisecond al (nuovo) metodo advance di Timer.
Per quanto riguarda i test, invece, il refactoring non è stato "puro", in quanto questo cambiamento ha portato alla chiamata advance di MockTimer anziché a Thread.Sleep(1) come avveniva prima; quindi è cambiato "soltanto" il fatto che non viene perso tempo aspettando inutilmente, e inoltre il tempo segnato MockTimer è "coerente" perché viene fatto avanzare propriamente.
Può darsi che il problema sia dovuto al mega refactoring che ha portato all'introduzione di Environment, ma i test passano tutti tranquillamente.
^TiGeRShArK^
27-04-2006, 10:03
Ma non dovevo staccare un'ora fa?
Cmq se vuoi usare uno stream, guardando i javadoc di LWJGL (http://www.lwjgl.org/javadoc/) ti suggerirei
ilLoadFromStream(java.io.InputStream stream, int type)
Dovrebbe essere la stessa cosa di ilLoadImage(java.lang.String fileName) ma con uno stream.
ah ok
tnx
stasera qdo torno a casa provo :D
Se funge siamo a cavallo..
ah.. a proposito...
non committate niente nel build.xml che vi uccido :p
ah ok
tnx
stasera qdo torno a casa provo :D
Se funge siamo a cavallo..
ah.. a proposito...
non committate niente nel build.xml che vi uccido :p
Per fortuna leggo sempre il forum prima di fare un commit. Mi sono salvato :D
ciao ;)
^TiGeRShArK^
27-04-2006, 12:41
Per fortuna leggo sempre il forum prima di fare un commit. Mi sono salvato :D
ciao ;)
fiuuu... :D
ho dovuto cambiare una marea di cose nella sezione dist del build.xml...
fare un merge era da paura :eek:
:D
Non penso, perché per quanto riguarda il gioco vero e proprio si è trattato di un refactoring "puro": ho soltanto spostato il codice da sleepOneMillisecond al (nuovo) metodo advance di Timer.
Per quanto riguarda i test, invece, il refactoring non è stato "puro", in quanto questo cambiamento ha portato alla chiamata advance di MockTimer anziché a Thread.Sleep(1) come avveniva prima; quindi è cambiato "soltanto" il fatto che non viene perso tempo aspettando inutilmente, e inoltre il tempo segnato MockTimer è "coerente" perché viene fatto avanzare propriamente.
Può darsi che il problema sia dovuto al mega refactoring che ha portato all'introduzione di Environment, ma i test passano tutti tranquillamente.
non capisco ancora la causa, ma, almeno sul mio pc, linux64, è abbastanza evidente il problema, sembra che ogni tot di tempo le gemme rallentino, quasi a fermarsi, per poi ripartire, il fenomeno è più evidente quando c'è l'audio attivato, è meno evidente ma c'è cmq quando l'audio non è attivato
cdimauro
27-04-2006, 16:21
Ho capito. L'unico modo per toglierci questo dubbio è prendere una build che ti funzionava perfettamente, applicare il solo refactoring di Timer & TimerInterface e vedere se si manifesta questo problema.
fiuuu... :D
ho dovuto cambiare una marea di cose nella sezione dist del build.xml...
fare un merge era da paura :eek:
:D
Ho fatto un commit. :ops:
ciao ;)
Ho capito. L'unico modo per toglierci questo dubbio è prendere una build che ti funzionava perfettamente, applicare il solo refactoring di Timer & TimerInterface e vedere se si manifesta questo problema.
E' possibile fare il revert dei questo refactoring fino alla settimana prossima?
ok, scusate, falso allarme, probabilmente problemi con il mio pc, anche con la first playable rilasciate lunedì ho gli stessi problemi
^TiGeRShArK^
27-04-2006, 21:35
Ma non dovevo staccare un'ora fa?
Cmq se vuoi usare uno stream, guardando i javadoc di LWJGL (http://www.lwjgl.org/javadoc/) ti suggerirei
ilLoadFromStream(java.io.InputStream stream, int type)
Dovrebbe essere la stessa cosa di ilLoadImage(java.lang.String fileName) ma con uno stream.
nope...
non funge....
ho provato un casino di volte e col seguente codice (che tra l'altro è orribile per l'if che distingue i due tipi di file immagine):
System.out.println(new InputStreamReader(Texture.class.getClassLoader().getResourceAsStream(imageDir + fileName)).read());
IL.create();
ILU.create();
generateImage();
if(name.endsWith("png"))
{
System.out.println("PNG mode...");
loaded = ilLoadFromStream(ClassLoader.getSystemClassLoader().getResourceAsStream(imageDir + fileName), IL.IL_PNG);
} else if(name.endsWith("jpg"))
{
System.out.println("JPG mode...");
loaded = ilLoadFromStream(ClassLoader.getSystemClassLoader().getResourceAsStream(imageDir + fileName), IL.IL_JPG);
}
ottengo che il System.out.println mi stampa correttamente 255 (il primo carattere del file) mentre il metodo delle lwjgl va in eccezione...
Qualcuno mi sa spiegare come usare il metodo
BufferedImage img = ImageIO.read(is); all'interno del nostro codice??? :help:
in questo thread hanno usato quel metodo e hanno risolto correttamente il problema:
http://lwjgl.org/forum/viewtopic.php?p=3012&sid=e608f98613616ff1e576e8c325018d0a
in quel modo sparirebbe anche quell'odiosissimo if... però non ho idea di come usarlo perchè i passi effettuati in quel thread per l'inizializzazione e il caricamento sono diversi dai nostri e io non capisco una mazza di opengl e ho paura di fare danni ... :help:
BlueDragon
27-04-2006, 23:14
nope...
non funge....
ho provato un casino di volte e col seguente codice (che tra l'altro è orribile per l'if che distingue i due tipi di file immagine):
System.out.println(new InputStreamReader(Texture.class.getClassLoader().getResourceAsStream(imageDir + fileName)).read());
IL.create();
ILU.create();
generateImage();
if(name.endsWith("png"))
{
System.out.println("PNG mode...");
loaded = ilLoadFromStream(ClassLoader.getSystemClassLoader().getResourceAsStream(imageDir + fileName), IL.IL_PNG);
} else if(name.endsWith("jpg"))
{
System.out.println("JPG mode...");
loaded = ilLoadFromStream(ClassLoader.getSystemClassLoader().getResourceAsStream(imageDir + fileName), IL.IL_JPG);
}
ottengo che il System.out.println mi stampa correttamente 255 (il primo carattere del file) mentre il metodo delle lwjgl va in eccezione...
Qualcuno mi sa spiegare come usare il metodo
BufferedImage img = ImageIO.read(is); all'interno del nostro codice??? :help:
in questo thread hanno usato quel metodo e hanno risolto correttamente il problema:
http://lwjgl.org/forum/viewtopic.php?p=3012&sid=e608f98613616ff1e576e8c325018d0a
in quel modo sparirebbe anche quell'odiosissimo if... però non ho idea di come usarlo perchè i passi effettuati in quel thread per l'inizializzazione e il caricamento sono diversi dai nostri e io non capisco una mazza di opengl e ho paura di fare danni ... :help:
Al momento purtroppo non ho tempo per indagare, l'unica cosa che mi viene in mente è che se fai un .read() dell'InputStream per il tuo System.out.println, mi sembra normale che poi non funzioni il caricamento immagine. Non penso che il metodo di caricamento riporti indietro lo stream del carattere che ti sei mangiato con il read().... Hai già provato senza il read?
PS: Mi sa tanto che l'avrai già provato ma ci provo comunque.. :P
BlueDragon
27-04-2006, 23:55
Non avevo tempo ma mi ci sono dedicato lo stesso...
il seguente codice funziona:
FileInputStream fs = new FileInputStream(new File(imageDir + fileName));
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(imageDir + fileName);
if(fileName.endsWith("png"))
{
System.out.println("PNG mode...");
loaded = ilLoadFromStream(fs, IL.IL_PNG);
} else if(fileName.endsWith("jpg"))
{
System.out.println("JPG mode...");
loaded = ilLoadFromStream(fs, IL.IL_JPG);
}
Come vedi l'InputStream is di getResourceStream sta lì per bellezza...non sono riuscito a farlo funzionare, probabilmente non trova il file (l'altro giorno mi avevi detto che andavo messo data nel classpath ed aveva funzionato).
Cmq prendendo lo stream con il metodo classico, poi funziona bene iLoadFromStream, avendo l'accortezza di distringuere tra PNG e JPG.
^TiGeRShArK^
28-04-2006, 00:06
Non avevo tempo ma mi ci sono dedicato lo stesso...
il seguente codice funziona:
FileInputStream fs = new FileInputStream(new File(imageDir + fileName));
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(imageDir + fileName);
if(fileName.endsWith("png"))
{
System.out.println("PNG mode...");
loaded = ilLoadFromStream(fs, IL.IL_PNG);
} else if(fileName.endsWith("jpg"))
{
System.out.println("JPG mode...");
loaded = ilLoadFromStream(fs, IL.IL_JPG);
}
Come vedi l'InputStream is di getResourceStream sta lì per bellezza...non sono riuscito a farlo funzionare, probabilmente non trova il file (l'altro giorno mi avevi detto che andavo messo data nel classpath ed aveva funzionato).
Cmq prendendo lo stream con il metodo classico, poi funziona bene iLoadFromStream, avendo l'accortezza di distringuere tra PNG e JPG.
ehm..
il problema è che a me, col classpath giusto, getResourceAsStream funziona perfettamente (e te credo! usa il classloader di java :D)
Però non sono riuscito a farlo funzionare in alcun modo con iLoadFronStream, quindi immagino che ci sia qualche problema.
Nel thread che ho linkato hanno risolto il problema utilizzando bufferedimage al posto di iLoadFromStream..
quindi se ci fosse qualche buon samaritano che mi può dare qualche link di un corso accelerato di opengl o che mi spiega come cambiare il nostro codice per usare bufferedimage siamo a cavallo perchè dovrebbero essere risolti tutti i problemi di java web start :p(sempre se non ne spunta qualche altro... murphy docet :D)
BlueDragon
28-04-2006, 00:15
ehm..
il problema è che a me, col classpath giusto, getResourceAsStream funziona perfettamente (e te credo! usa il classloader di java :D)
Però non sono riuscito a farlo funzionare in alcun modo con iLoadFronStream, quindi immagino che ci sia qualche problema.
Nel thread che ho linkato hanno risolto il problema utilizzando bufferedimage al posto di iLoadFromStream..
quindi se ci fosse qualche buon samaritano che mi può dare qualche link di un corso accelerato di opengl o che mi spiega come cambiare il nostro codice per usare bufferedimage siamo a cavallo perchè dovrebbero essere risolti tutti i problemi di java web start :p(sempre se non ne spunta qualche altro... murphy docet :D)
Sei sicuro che ti funzioni perfettamente il getResourceAsStream?
In fondo quando non trova la risorsa non è che da errore...ti da semplicemente un InputStream nullo.
Cmq a me funziona anche così:
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(fileName);
System.out.println(is.available());
if(fileName.endsWith("png"))
{
System.out.println("PNG mode...");
loaded = ilLoadFromStream(is, IL.IL_PNG);
} else if(fileName.endsWith("jpg"))
{
System.out.println("JPG mode...");
loaded = ilLoadFromStream(is, IL.IL_JPG);
}
Richiede ovviamente l'inserimento di data nel classpath visto che nel getResourceAsStream gli ho indicato solo il filename.
^TiGeRShArK^
28-04-2006, 00:39
Sei sicuro che ti funzioni perfettamente il getResourceAsStream?
In fondo quando non trova la risorsa non è che da errore...ti da semplicemente un InputStream nullo.
Cmq a me funziona anche così:
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream(fileName);
System.out.println(is.available());
if(fileName.endsWith("png"))
{
System.out.println("PNG mode...");
loaded = ilLoadFromStream(is, IL.IL_PNG);
} else if(fileName.endsWith("jpg"))
{
System.out.println("JPG mode...");
loaded = ilLoadFromStream(is, IL.IL_JPG);
}
Richiede ovviamente l'inserimento di data nel classpath visto che nel getResourceAsStream gli ho indicato solo il filename.
:D
si tranquillo ke funziona :D
l'ho usato centinaia di volte al lavoro e ho fatto decine e decine di prove con diamonds.
So benissimo che restituisce un is nullo ;)
cmq già nella prova che avevo postato prima avevo fatto una prova sul campo in quanto all'interno dello stesso metodo ho fatto stampare il primo byte dell'immagine caricata con getresourceasstream ed è andato tutto ok (255), mentre lwjgl poco sotto è andata in eccezione :p
BlueDragon
28-04-2006, 00:46
:D
si tranquillo ke funziona :D
l'ho usato centinaia di volte al lavoro e ho fatto decine e decine di prove con diamonds.
So benissimo che restituisce un is nullo ;)
cmq già nella prova che avevo postato prima avevo fatto una prova sul campo in quanto all'interno dello stesso metodo ho fatto stampare il primo byte dell'immagine caricata con getresourceasstream ed è andato tutto ok (255), mentre lwjgl poco sotto è andata in eccezione :p
Ok, allora abbiamo risolto no?
Con il codice postato sopra usiamo il getResourceAsStream ed ilLoadFromStream.
^TiGeRShArK^
28-04-2006, 01:08
Ok, allora abbiamo risolto no?
Con il codice postato sopra usiamo il getResourceAsStream ed ilLoadFromStream.
:D
no, è proprio questo il problema :D
il classpath è giusto e il path del file anche (dopo una serata intera che ho passato a togliere quei maledetti java.io.separator disseminati in tutto il codice... ma KI ha avuto la brillante idea di metterli??? :p) ma mi sa che c'è qualche problema nel metodo ilLoadFromStream.
Il println messo subito sopra mi stampa il primo byte della png, mentre quel metodo se ne va in eccezione :D
Per questo mi serve il corso accelerato di opengl, per usare il bufferedimage, ke a quanto ho capito *dovrebbe* essere esente da questi problemi :D
^TiGeRShArK^
28-04-2006, 01:39
boh..
mi stavo guardando ora il codice di quel metodo e sembrerebbe a posto....
public static boolean ilLoadFromStream(InputStream stream, int type) throws IOException {
boolean result = false;
int lastRead = 0;
byte[] buffer = new byte[4096];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
BufferedInputStream buf = new BufferedInputStream(stream);
try {
while((lastRead = buf.read(buffer, 0, buffer.length)) != -1) {
baos.write(buffer, 0, lastRead);
}
buffer = baos.toByteArray();
ByteBuffer lump = ByteBuffer.allocateDirect(buffer.length);
lump.put(buffer);
lump.flip();
result = ilLoadL(type, lump);
} catch (IOException e) {
try {
buf.close();
} catch (IOException f ) {}
throw e;
}
return result;
}
non riesco proprio a capire cosa non va..
vedo se riesco a risolvere domani...
good night :O
BlueDragon
28-04-2006, 08:46
non riesco proprio a capire cosa non va..
vedo se riesco a risolvere domani...
good night :O
Nel codice che hai postato ho visto:
if(name.endsWith("png"))
{
[..]
} else if(name.endsWith("jpg"))
{
[..]
}
Hai modificato name affinché contenga anche l'estensione?
Qual'è lo stacktrace esatto dell'errore? Hai provato con il debugger?
^TiGeRShArK^
28-04-2006, 09:44
Nel codice che hai postato ho visto:
if(name.endsWith("png"))
{
[..]
} else if(name.endsWith("jpg"))
{
[..]
}
Hai modificato name affinché contenga anche l'estensione?
Qual'è lo stacktrace esatto dell'errore? Hai provato con il debugger?
ehm...
name non contiene già l'estensione?
avevo visto nel costruttore che faceva qualcosa del tipo this.name = name + type..
ah... e cmq contiene anche l'estensione perchè altrimenti anche con il println mi avrebbe dato l'eccezione perchè non trovava il file, mentre mi stampa correttamente il primo byte.
Lo stack trace preciso non me lo ricordo e ora non ce l'ho...
cmq era qualcosa del tipo data/back000.jpg not found in Texture.loadFromFile()....
In effetti potrei provare col debugger... ma devo riuscire a sistemare i classpath anche con eclipse però :p
cmq stasera vedo se risolvo qualcosa....:muro:
BlueDragon
28-04-2006, 19:28
ehm...
name non contiene già l'estensione?
avevo visto nel costruttore che faceva qualcosa del tipo this.name = name + type..
ah... e cmq contiene anche l'estensione perchè altrimenti anche con il println mi avrebbe dato l'eccezione perchè non trovava il file, mentre mi stampa correttamente il primo byte.
Name non contiene l'estensione: il println ti funziona perché usi imageDir + fileName :)
Lo stack trace preciso non me lo ricordo e ora non ce l'ho...
cmq era qualcosa del tipo data/back000.jpg not found in Texture.loadFromFile()....
"Unable to find the texture " è l'eccezione che lanciamo noi se la variabile loaded è false.
Effettivamente, usando name senza estensione non si entra in nessuno dei due rami dell'if, loaded rimane false e si incappa nell'eccezione.
^TiGeRShArK^
28-04-2006, 22:52
Name non contiene l'estensione: il println ti funziona perché usi imageDir + fileName :)
"Unable to find the texture " è l'eccezione che lanciamo noi se la variabile loaded è false.
Effettivamente, usando name senza estensione non si entra in nessuno dei due rami dell'if, loaded rimane false e si incappa nell'eccezione.
vabbè..
non im ricordavo il codice stamattina...
cmq gli viene passato il nome corretto con l'estensione e con la directory..
infatti all'interno dello stesso metodo facendo nello stesso modo println apre correttamente l'immagine e ne stampa il primo byte.
Ora vedo se risolvo qualcosa stasera xkè ero a cena dai miei cugini e domani parto in francia x l'1maggio...speriamo bene :fiufiu:
^TiGeRShArK^
28-04-2006, 23:31
vabbè..
non im ricordavo il codice stamattina...
cmq gli viene passato il nome corretto con l'estensione e con la directory..
infatti all'interno dello stesso metodo facendo nello stesso modo println apre correttamente l'immagine e ne stampa il primo byte.
Ora vedo se risolvo qualcosa stasera xkè ero a cena dai miei cugini e domani parto in francia x l'1maggio...speriamo bene :fiufiu:
Christ Jesus!!! :muro:
ORA ho capito che ti riferivi al name nell'if:muro:
ma quanto sono coglione.:muro:
Ora credo che funaga...
quanto provo.... (appena finisco di bestemmiare :muro: )
cdimauro
02-05-2006, 10:25
:D
no, è proprio questo il problema :D
il classpath è giusto e il path del file anche (dopo una serata intera che ho passato a togliere quei maledetti java.io.separator disseminati in tutto il codice... ma KI ha avuto la brillante idea di metterli??? :p)
:fiufiu: Beh, PathSeparator(Windows) <> PathSeparator(Linux) & co, e se quella funzione l'hanno messa, un motivo ci dovrà pur essere o no? ;)
Comunque ho rivisto un po' il codice e mi sembra che non siano stati eliminati i varii java.io.File.separator. Meglio così. :p
possiamo infilare tutti i path in Config o comunque in un luogo centralizzato?
^TiGeRShArK^
02-05-2006, 11:34
:fiufiu: Beh, PathSeparator(Windows) <> PathSeparator(Linux) & co, e se quella funzione l'hanno messa, un motivo ci dovrà pur essere o no? ;)
Comunque ho rivisto un po' il codice e mi sembra che non siano stati eliminati i varii java.io.File.separator. Meglio così. :p
no perchè in windows va bene anke "/" e comunque dovremo slegarci dal concetto di file system usando java web start.
In quel caso occorre sempre usare "/".
E comunque dal branch di java web start li ho eliminati tutti e ci ho messo pure un casino di tempo.. :cry:
Senza contare che il codice ci guadagna anche in leggibilità ;)
cdimauro
02-05-2006, 11:53
possiamo infilare tutti i path in Config o comunque in un luogo centralizzato?
Sarebbe una cosa buona e giusta. :p
cdimauro
02-05-2006, 11:54
no perchè in windows va bene anke "/" e comunque dovremo slegarci dal concetto di file system usando java web start.
In quel caso occorre sempre usare "/".
E comunque dal branch di java web start li ho eliminati tutti e ci ho messo pure un casino di tempo.. :cry:
Senza contare che il codice ci guadagna anche in leggibilità ;)
OK, se funziona tutto su qualunque piattaforma non c'è problema: tutte le modifiche che ho fatto le puoi eliminare (ci metterai comunque molto meno tempo rispetto a quello che ho impiegato io a inserire il separatore. ;))
no perchè in windows va bene anke "/" e comunque dovremo slegarci dal concetto di file system usando java web start.
In quel caso occorre sempre usare "/".
E comunque dal branch di java web start li ho eliminati tutti e ci ho messo pure un casino di tempo.. :cry:
Senza contare che il codice ci guadagna anche in leggibilità ;)
ed il Mac?
cdimauro
02-05-2006, 13:07
E' compatibile solo con se stesso. :asd: :asd: :asd:
^TiGeRShArK^
02-05-2006, 19:04
E' compatibile solo con se stesso. :asd: :asd: :asd:
:asd:
usa come separator la mela :asd:
cmq a parte gli scherzi non ho mai provato su mac, ma essendo basato su freebsd immagino non ci siano problemi di sorta ;)
Abbiamo la build rotta a seguito di un paio di rename che ho fatto.
Questo e' il test:
junit.framework.AssertionFailedError: Gem must be in the last row expected:<12> but was:<11> at it.diamonds.tests.gems.TestGemFalling.testTwoVerticalGemFalling(TestGemFalling.java:98)
Sembra un test che fallisce random. Potete darci un'occhiata che sono in ufficio?
BlueDragon
03-05-2006, 23:09
Abbiamo la build rotta a seguito di un paio di rename che ho fatto.
Questo e' il test:
junit.framework.AssertionFailedError: Gem must be in the last row expected:<12> but was:<11> at it.diamonds.tests.gems.TestGemFalling.testTwoVerticalGemFalling(TestGemFalling.java:98)
Sembra un test che fallisce random. Potete darci un'occhiata che sono in ufficio?
Ho visto che Vicius ha committato alle 15:15 con il seguente commento:
vic: fix del test che falliva. avevo invertito l'ordine con cui le righe venivano esaminate in forEachGem.
Come commentato da Vicius, l'unico cambio è stato nel metodo forEachGem di Grid, anziché usare il comodo:
for(Droppable[] row : grid)
Sì è dovuti tornare indietro all'uso di un for, in modo da esaminare le righe in senso inverso:
public void forEachDroppable(DroppableAction action)
{
for(int i = grid.length - 1; i >= 0; i--)
{
Droppable[] row = grid[i];
for(Droppable droppable : row)
{
if(droppable == null)
{
continue;
}
action.applyOn(droppable);
}
}
}
Il fatto che questo codice funzioni solo in un verso puzza....o no?
BlueDragon
03-05-2006, 23:20
Il fatto che questo codice funzioni solo in un verso puzza....o no?
Un possibile motivo per cui il codice funzioni solo da un verso, potrebbe essere il fatto che nel far cadere le pietre conviene procedere dal basso. Non è possibile muovere giù un colonna di pietre se non si spostano prima quelle in basso.
Com'è che però quando Vicius ha committato il test era passato?
Un possibile motivo per cui il codice funzioni solo da un verso, potrebbe essere il fatto che nel far cadere le pietre conviene procedere dal basso. Non è possibile muovere giù un colonna di pietre se non si spostano prima quelle in basso.
Com'è che però quando Vicius ha committato il test era passato?
Probabilmente non passava neanche dopo il primo commit. Solo che la build machine ha fatto partire i test solo dopo quello di fek e cosi sembrava fosse stata colpa del suo rename.
Mi ero scordato di quella modifica cosi quando o sincronizzato i due repository ho pensato: "ant non c'è bisogno che lo faccio partire tanto non succede niente...".
ciao ;)
Questo test in testGameLoop fallisce in base ai test che si trova davanti...
Provate a far girare la classe di test da sola dentro Eclipse e lo vedrete...
public void testAllTexturesLoadedBeforeStartPlaying()
{
assertEquals(44, Texture.getPoolSize());
}
Questo test in testGameLoop fallisce in base ai test che si trova davanti...
Provate a far girare la classe di test da sola dentro Eclipse e lo vedrete...
public void testAllTexturesLoadedBeforeStartPlaying()
{
assertEquals(44, Texture.getPoolSize());
}
Uh che brutto test che si basa su una variabile globale. Vedete perche' vi dico di non usare i Singleton? Creano esattamente questi problemi. Peccato che la variabile globale l'ho introdotta io :)
Cesare, a che punto siamo con Environment?
...SERVER DOWN :( :mad: :muro:
cdimauro
05-05-2006, 11:17
Uh che brutto test che si basa su una variabile globale. Vedete perche' vi dico di non usare i Singleton? Creano esattamente questi problemi. Peccato che la variabile globale l'ho introdotta io :)
Beh, questo test l'ho introdotto io... :fiufiu:
Comunque il suo fallimento vuol dire che esistono delle texture che vengono caricate durante il gioco, ma non sono state aggiunte all'elenco di quelle da precaricare: basta aggiungere queste texture all'elenco presente in GameLoop.loadTextures e modificare il 44 in quel test.
D'altra parte il test parla chiaro, no? testAllTexturesLoadedBeforeStartPlaying :p
Cesare, a che punto siamo con Environment?
Questa settimana sono stato fermo, mi spiace: oggi finisco di sistemare il PC a lavoro e quello a casa, e per la prossima settimana torno a rifattorizzare (debbo dire che c'ho preso gusto. Al contrario di Alberto :Prrr: :D).
Cesare...secondo me è un po' diverso...
Il numero di texture ritornate da quel metodo dipende dalla sequenza secondo cui i test vengono eseguiti...
cdimauro
05-05-2006, 12:03
Mumble mumble. Forse ho capito: è dovuto al fatto che le strutture per mantenere la cache delle texture sono statiche, per cui vengono usate per tutti i test (condividendo, quindi, la "storia" delle texture caricate).
In ogni caso il problema è dovuto all'introduzione e utilizzo di altre texture, che non sono presenti nell'elenco di quelle da precaricare: basta inserirle e il problema è risolto.
Cesare...secondo me è un po' diverso...
Il numero di texture ritornate da quel metodo dipende dalla sequenza secondo cui i test vengono eseguiti...
Esatto, e la cosa fa fissata il prima possibile.
Mumble mumble. Forse ho capito: è dovuto al fatto che le strutture per mantenere la cache delle texture sono statiche, per cui vengono usate per tutti i test (condividendo, quindi, la "storia" delle texture caricate).
In ogni caso il problema è dovuto all'introduzione e utilizzo di altre texture, che non sono presenti nell'elenco di quelle da precaricare: basta inserirle e il problema è risolto.
No Cesare, la soluzione e' non usare variabili statiche e disaccoppiare questo test dagl'altri, altrimenti il problema si riproporra' in futuro e il test dovra' essere aggiornato, con conseguente perdita di tempo.
cdimauro
05-05-2006, 12:32
Ho semplicemente usato quelle che c'erano già, e che implementavano la cache delle texture. ;)
Per fare ciò che chiedi, la cache delle texture andrebbe gestita come hai fatto tu con la cache dei suoni, "infilandola" nell'istanza di Audio.
Urge refactoring, insomma (ma questo era previsto).
Si', esatto, adesso questo refactoring e' urgente perche' dobbiamo fixare questo.
Chi se ne occupa?
Oppure si infilano in Enviroment...
Oppure si infilano in Enviroment...
Questa potrebbe essere una buona soluzione temporanea.
cdimauro
05-05-2006, 13:00
Si', esatto, adesso questo refactoring e' urgente perche' dobbiamo fixare questo.
Chi se ne occupa?
In questo momento non posso farlo: ho poco tempo libero, e lo sto impiegando a cercare di far funzionare Eclipse... :muro:
Build rotta.
sistemata, errore mio
sistemata, errore mio
Ri-rotta.
EDIT: Ah no, è la stessa build di stamane :mbe:
Bug: nel menu principale, chiudere la finestra con il pulsante in alto a destra fa partire la musica di Rock per qualche secondo prima del termine del gioco.
Il gioco non mi parte e ho il seguente report:
Stacktrace:
java.lang.RuntimeException: Unable to find the image data\gfx\layout\lower.png
at it.diamonds.engine.video.LWJGLImage.loadImageFromFile(LWJGLImage.java:102)
at it.diamonds.engine.video.LWJGLImage.<init>(LWJGLImage.java:77)
at it.diamonds.engine.video.LWJGLImage.create(LWJGLImage.java:84)
at it.diamonds.engine.LWJGLEngine.createImage(LWJGLEngine.java:97)
at it.diamonds.GameLoop.loadTextures(GameLoop.java:445)
at it.diamonds.GameLoop.<init>(GameLoop.java:63)
at it.diamonds.GameLoop.create(GameLoop.java:115)
at it.diamonds.Game.setUp(Game.java:62)
at it.diamonds.Game.create(Game.java:36)
at it.diamonds.Game.main(Game.java:88)
scusate, ma sotto linux, quando ascolto altra musica, se lancio diamonds, prima mi da il solito messaggio che dava prima, ma poi, invece di continuare senza sound, mi da un altro errore e si chiude, come se l'audio venisse inizializzato due volte...
Il gioco non mi parte e ho il seguente report:
Stacktrace:
java.lang.RuntimeException: Unable to find the image data\gfx\layout\lower.png
at it.diamonds.engine.video.LWJGLImage.loadImageFromFile(LWJGLImage.java:102)
at it.diamonds.engine.video.LWJGLImage.<init>(LWJGLImage.java:77)
at it.diamonds.engine.video.LWJGLImage.create(LWJGLImage.java:84)
at it.diamonds.engine.LWJGLEngine.createImage(LWJGLEngine.java:97)
at it.diamonds.GameLoop.loadTextures(GameLoop.java:445)
at it.diamonds.GameLoop.<init>(GameLoop.java:63)
at it.diamonds.GameLoop.create(GameLoop.java:115)
at it.diamonds.Game.setUp(Game.java:62)
at it.diamonds.Game.create(Game.java:36)
at it.diamonds.Game.main(Game.java:88)
Abbiamo tolto due texture non usate, ora il problema dovrebbe essere fixato. Ti si presenta ancora?
ecco il problema :eek: :
try
{
environment.createAudio();
}
catch(RuntimeException exception)
{
Sys.alert("Warning", MSG_NO_AUDIO);
environment.createAudio();
}
tolto il createAudio nel catch e creata la possibilità di scegliere il fullscreen da GameConfig..come richiesto da Jocchan su msn
ecco il problema :eek: :
try
{
environment.createAudio();
}
catch(RuntimeException exception)
{
Sys.alert("Warning", MSG_NO_AUDIO);
environment.createAudio();
}
tolto il createAudio nel catch e creata la possibilità di scegliere il fullscreen da GameConfig..come richiesto da Jocchan su msn
Grazie, Cisc :)
allora, com'è il codice adesso non viene considerata proprio la possibilità che l'audio possa non essere inizializzato....e quindi errori ovunque si chiami getAudio() di environment...un bel controllo se getAudio ritorna null...o aggiunta di metodo in environment che ritorna boolean!?!
allora, com'è il codice adesso non viene considerata proprio la possibilità che l'audio possa non essere inizializzato....e quindi errori ovunque si chiami getAudio() di environment...un bel controllo se getAudio ritorna null...o aggiunta di metodo in environment che ritorna boolean!?!
Favorevole. Fek? Vic?
c'è un un problema simile in LWGLImage e un bel TODO che lo ricorda ;)
cdimauro
17-05-2006, 08:42
ecco il problema :eek: :
try
{
environment.createAudio();
}
catch(RuntimeException exception)
{
Sys.alert("Warning", MSG_NO_AUDIO);
environment.createAudio();
}
tolto il createAudio nel catch e creata la possibilità di scegliere il fullscreen da GameConfig..come richiesto da Jocchan su msn
Problema risolto:
try
{
environment.createAudio();
}
catch(RuntimeException exception)
{
Sys.alert("Warning", MSG_NO_AUDIO);
environment.createAudioForTesting();
}
;)
cdimauro
17-05-2006, 08:45
c'è un un problema simile in LWGLImage e un bel TODO che lo ricorda ;)
Dopo le precedenti rifattorizzazioni, non è più un problema: codice di produzione e di test sono sostanzialmente separati (rimangono da rifattorizzare Keyboard, KeyMappings ed Event), per cui LWJGLImage viene istanziata soltanto in produzione, mentre in fase di test viene istanziata MockImage.
Quel TODO si potrebbe anche eliminare. Fran, che ne dici?
cdimauro
17-05-2006, 08:50
Una cosa che si potrebbe fare, in futuro, è controllare che la creazione di queste istanze possa avvenire una sola volta. Quindi se richiamo createEngine e l'engine viene creato correttamente, una successiva chiamata allo stesso dovrebbe generare un'eccezione.
Giusto per avere un maggior controllo su quello che fa il codice (specialmente di test).
Ma si può fare anche più avanti.
Una cosa che si potrebbe fare, in futuro, è controllare che la creazione di queste istanze possa avvenire una sola volta. Quindi se richiamo createEngine e l'engine viene creato correttamente, una successiva chiamata allo stesso dovrebbe generare un'eccezione.
Giusto per avere un maggior controllo su quello che fa il codice (specialmente di test).
Ma si può fare anche più avanti.
Sembra molto un SINGLETON :ops2:
:D :D :D
Sembra molto un SINGLETON :ops2:
:D :D :D
si, anche se basterebbe una variabile statica
cdimauro
17-05-2006, 13:47
Per pietà: non voglio sentir parlare di variabili static, dopo quello che ho passato! :(
Per pietà: non voglio sentir parlare di variabili static, dopo quello che ho passato! :(
beh allora se environamente tiene un riferimento all'engine, non basta controllare che questo sia == null durante la creazione?
cdimauro
17-05-2006, 16:48
Certamente, ma il punto è che non è stato richiesto questo comportamento.
Voglio dire: a cambiarlo non ci vuole molto (scrivo i test, implemento il codice e vado a caccia delle duplicazioni eseguendo la build con Ant), ma mi è necessario sapere se è una cosa da fare oppure si può lasciare tutto com'è ora.
Dopo le precedenti rifattorizzazioni, non è più un problema: codice di produzione e di test sono sostanzialmente separati (rimangono da rifattorizzare Keyboard, KeyMappings ed Event), per cui LWJGLImage viene istanziata soltanto in produzione, mentre in fase di test viene istanziata MockImage.
Quel TODO si potrebbe anche eliminare. Fran, che ne dici?
Toglilo pure.
Sembra molto un SINGLETON :ops2:
:D :D :D
Ci tieni alle ditine? :D
Certamente, ma il punto è che non è stato richiesto questo comportamento.
Voglio dire: a cambiarlo non ci vuole molto (scrivo i test, implemento il codice e vado a caccia delle duplicazioni eseguendo la build con Ant), ma mi è necessario sapere se è una cosa da fare oppure si può lasciare tutto com'è ora.
Non abbiamo nessun requirement che richieda di forzare una sola istanza di Engine, quindi e' decisamente YAGNI.
premessa: ammazzatemi pure se è un problema che avete già riscontrato plurime volte e se senza saperlo lo sto ripetendo per la pluresima volta più uno :D
fine premessa.
quando le stones si trasformano in gemme, se stanno vicine ad un baule dovrebbero scomparire, e invece rimangono :p
premessa: ammazzatemi pure se è un problema che avete già riscontrato plurime volte e se senza saperlo lo sto ripetendo per la pluresima volta più uno :D
fine premessa.
quando le stones si trasformano in gemme, se stanno vicine ad un baule dovrebbero scomparire, e invece rimangono :p
strano, la updateStone viene chiamata prima che si scateni la prima crush :mumble:
cdimauro
18-05-2006, 08:32
Toglilo pure.
OK
Non abbiamo nessun requirement che richieda di forzare una sola istanza di Engine, quindi e' decisamente YAGNI.
Immaginavo. Comunque è un problema che riguarda esclusivamente i test, perché nel codice di produzione la creazione di questi oggetti è localizzata in un solo punto (GameLoop).
FERMI TUTTI.
E' stato introdotto un bel bug.
La trasformazioni delle stones in gemme non funzia più a dovere.
Le due gemme rosse alla base erano 2 stones
Ho visto adesso che è stata introdotta l'animaqzione dello sgretolamento delle stone.
A parte che nel gioco non si vede proprio, inoltre dev essere stato proprio quello ad introdurrre il bug!!!
E addesso eccone un altro...ma forse sempre dipendente dalla trasformazione
FERMI TUTTI.
E' stato introdotto un bel bug.
La trasformazioni delle stones in gemme non funzia più a dovere.
Le due gemme rosse alla base erano 2 stones CAPITO L'ERRORE: la action che esegue l'animazione della trasformazione viene eseguita al momento sbagliato, devo solo trovare un momento migliore.
il problema è che non saprei come fare un test per questo bug... :mbe:
ora ci penso
ah, e (penso) per lo stesso motivo ho commesso anche un altro errore: le stones vengono animate e trasformate a una a una, mentre dovrebbero andare tutte insieme.
CAPITO L'ERRORE
Ok...allora te ne occupi tu ;) ;)
Non so se è normale perchè nn è ancora stato implemenatto il controllo....ma ecco cosa mi è capitato ;)
in quest'ultimo screenshot cosa c'è di strano...?
vado a cena, quando torno cerco di correggere questi due errori (ho indagato e dipendono sicuramente dalla stessa causa).
Non so se è normale perchè nn è ancora stato implemenatto il controllo....ma ecco cosa mi è capitato ;)
Il task per numerare la dinamite e limitare le istanze a tre non è ancora terminato. Un po' di pazienza :p
ciao ;)
Il task per numerare la dinamite e limitare le istanze a tre non è ancora terminato. Un po' di pazienza :p
ciao ;)
OK :D :D :D
...71104, il problema è che ci sono 4 dinamiti quando il massimo è 3 ;)
jappilas
18-05-2006, 21:12
poco fa ho notato questo invece (schreenshot preso due cicli dopo la trasformazione):
dopo che svariate gemme si sono materializzate a fianco di un baule, non si sono cancellate, è normale? :stordita:
Non so se è normale perchè nn è ancora stato implemenatto il controllo....ma ecco cosa mi è capitato ;)
il bug improbabile...
mi ci sto mettendo ora :)
eh, guarda che dipende sempre dal modo (scorretto) in cui viene chiamata forEachGem(turnStonesIntoGemsAction); ora però non ci posso guardare, mia madre è na schiappa col PC e devo aiutarla a scrivere un doc x scuola :cry:
rieccomi, ho analizzato il codice e trovato il modo di correggere il problema: l'errore sta nel fatto che il lastUpdateTimeStamp contenuto nella Action è appunto associato ad una Action, mentre invece dovrebbe essere associato ad ogni singola stone.
e anche stavolta TDD in forma rigorosamente PURA per Stone.update: 7 test per 15 righe di codice di cui solo 7 sono concettualmente significative (escludiamo dal conteggio parentesi graffe e righe vuote); in pratica, un test a linea! :) :yeah:
risolti i bug che avevo introdotto, funziona tutto alla grande.
risolti i bug che avevo introdotto, funziona tutto alla grande. ehm no, ho cantato vittoria troppo in fretta asd ^^
i due bacarozzi ci sono ancora: quando una stone si trasforma in gemma funziona tutto ma solo al drop successivo; ora cerco di correggere...
EDIT: la causa l'ho scoperta; il difficile è correggere...
i due bug sono stati risolti da me in locale, ma le due linee nella classe GemsPairOnControlState che permettono di risolverli le ho committate commentate perché fanno fallire una marea di test che non attendono il completamente delle animazioni delle stones. sti test vanno sistemati uno per uno, è un lavoro molto lungo :cry:
ora devo uscire, comunque, questo è il codice attuale di GemsPairOnControlState:
public class GemsPairOnControlState implements GridControllerState
{
private CrushState nextState;
//private StoneTurnState nextState;
public GemsPairOnControlState(Environment environment, GridController controller)
{
nextState = new CrushState(environment);
//nextState = new StoneTurnState(environment, controller);
}
.
.
.
se lo fate diventare così, il gioco funziona perfettamente:
public class GemsPairOnControlState implements GridControllerState
{
//private CrushState nextState;
private StoneTurnState nextState;
public GemsPairOnControlState(Environment environment, GridController controller)
{
//nextState = new CrushState(environment);
nextState = new StoneTurnState(environment, controller);
}
.
.
.
ma molti test falliscono per il motivo sopra spiegato :cry:
non è che qualche anima pia quando c'è tempo mi da una mano a sistemarne qualcuno?? :cry:
ah a proposito, ho fixato la build :p
qualcuno ha modificato quallcosa sulle stone o ci sta lavorando?
ora quando vengono aggiornate, non si trasformano in gemme, ma rimangono al frame precedente :(
leggi il resto del thread :Prrr:
ci stavo lavorando, adesso finalmente sono riuscito a risolvere tutto!! :winner: :winner: :winner:
e senza neanche dover cambiare tutti i test che fallivano :cool:
cdimauro
24-05-2006, 11:01
Build rotta:
[junit] Testcase: testIsDrawn(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testIsDrawnInPlayField(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testIsDrawnInCorrectPosition(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testIsDrawnWithCorrectTexture(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testSetCrushCounterBounds(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testIsDrawnWithCorrectRectangle(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testCrushBoxCounterWithoutCrush(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testCrushBoxCounterAfterTwoCrushes(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testCrushBoxCounterPositionAfterTwoCrushes(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testCrushBoxCounterAfterThreeCrushes(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testCrushBoxCounterAfterTenCrushes(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testFirstPlayFieldCrushBoxMovingLeft(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testSecondPlayFieldCrushBoxMovingRight(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testOffScreenCrushBoxIsNotMoving(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testOriginForPlayerOne(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testOriginForPlayerTwo(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
[junit] Testcase: testDummy(it.diamonds.tests.TestCrushBox): Caused an ERROR
[junit] the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] java.lang.RuntimeException: the property `DynamiteAnimationTimeout` does not exist or is not an integer
[junit] at it.diamonds.engine.Config.getInteger(Config.java:37)
[junit] at it.diamonds.droppable.DroppableFactory.<init>(DroppableFactory.java:35)
[junit] at it.diamonds.droppable.RandomDroppableFactory.<init>(RandomDroppableFactory.java:42)
[junit] at it.diamonds.droppable.GemQueue.<init>(GemQueue.java:37)
[junit] at it.diamonds.grid.GridController.create(GridController.java:186)
[junit] at it.diamonds.PlayField.<init>(PlayField.java:74)
[junit] at it.diamonds.tests.TestCrushBox.setUp(TestCrushBox.java:44)
BUILD FAILED
C:\Documents and Settings\Cesare\workspace\Diamonds\build.xml:128: Test it.diamonds.tests.TestCrushBox failed
Total time: 16 seconds
Succede anche a voi?
Build rotta:
[...]
BUILD FAILED
C:\Documents and Settings\Cesare\workspace\Diamonds\build.xml:128: Test it.diamonds.tests.TestCrushBox failed
Total time: 16 seconds
Succede anche a voi?
Ah quanto pare qualcuno si è scordato un pezzo durante il commit.
ciao ;)
^TiGeRShArK^
24-05-2006, 17:54
Ah quanto pare qualcuno si è scordato un pezzo durante il commit.
ciao ;)
mmmm...
dynamiteAnimationTimeout???
:fiufiu:
jappilas...ma l'hai fatto x bene il merge?
quella variabile fino a ieri sera c'era :p
^TiGeRShArK^
24-05-2006, 17:56
cmq tra un pò torno a casa e vedo se risistemo la build ke dovrei avere il codice originale sul pc...
me lo salvo prima di fare update e mergio x bene :p
^TiGeRShArK^
24-05-2006, 18:51
risolto :D
problema mio ke mi ero dimenticato di committare il nuovo gameconfig :fiufiu:
leggendo prima di fretta avevo capito ke mancava la variabile e pensavo ke avesse mergiato jappilas ....invece era la proprietà del config :p
mea culpa :D
^TiGeRShArK^
24-05-2006, 20:27
mmmmmm...
ma il server è down o la mia connessione di skifo non me lo fa raggiungere??? :mbe:
eppure in http mi apre tutti i siti.. :cry:
jappilas
24-05-2006, 21:12
mmmm...
dynamiteAnimationTimeout???
:fiufiu:
jappilas...ma l'hai fatto x bene il merge?
quella variabile fino a ieri sera c'era :p
io in Dynamite ho aggiunto solo 4 addFrame e sono 2 settimane che non premo commit :O :p
C'è una quantità incredibile di codice non testato! L'input per esempio, a partire dai Key Mappings, è in gran parte scoperto dai test!
un test fallisce a random in it.diamonds.tests.handlers.TestBlowDynamiteHandler:
mi accingo a fixare
La build e' rotta da quattro commit. Va aggiustata subito.
java.lang.RuntimeException: The file containing the keys configuration does not exists at it.diamonds.engine.Config.<init>(Config.java:36) at it.diamonds.engine.Config.create(Config.java:44) at it.diamonds.engine.Environment.<init>(Environment.java:31) at it.diamonds.engine.Environment.createForTesting(Environment.java:43) at it.diamonds.tests.TestCellsideCollision.setUp(TestCellsideCollision.java:36)
java.lang.RuntimeException: The file containing the keys configuration does not exists at it.diamonds.engine.Config.<init>(Config.java:36) at it.diamonds.engine.Config.create(Config.java:44) at it.diamonds.engine.Environment.<init>(Environment.java:31) at it.diamonds.engine.Environment.createForTesting(Environment.java:43) at it.diamonds.tests.TestCellsideCollision.setUp(TestCellsideCollision.java:36)
da me è green come mai?
Perche' sembra che la buildmachine sia impazzita. Ho rifatto il checkout del progetto e l'ho fatta ripatire. Sembra ok.
Ragazzi...è normale che i tasti non mi vadano più?? :muro: :muro:
Arrivato alla schermata dei menù non risco a fare nulla.
Il gioco nonrisponde più all atastiera :eekk: :eekk: :eekk:
anche io non riesco più ad usare la tastiera nel gioco..
Cesare ne sa una più del diavolo. Prima ha fatto esplodere la build machine e ora la tastiera no va. :D
ciao ;)
ehehe vabè siamo in pesante fase di refactoring :D
Significa che mancano dei test :)
cdimauro
31-05-2006, 08:50
Ragazzi...è normale che i tasti non mi vadano più?? :muro: :muro:
Arrivato alla schermata dei menù non risco a fare nulla.
Il gioco nonrisponde più all atastiera :eekk: :eekk: :eekk:
No, non è affatto normale, infatti: era un bug che aveva introdotto nell'ultima rifattorizzazione. :cry:
I test passavano tutti perché era un problema dovuto esclusivamente all'implementazione di LWJGLKeyboard.
In pratica, dopo aver convertito il "raw" key in EventType, dentro update(), facevo la stessa cosa in notifyEvent(), ma col valore già convertito.
Eliminata quella riga di codice ha funzionato nuovamente tutto. :muro:
cdimauro
31-05-2006, 08:56
Cesare ne sa una più del diavolo. Prima ha fatto esplodere la build machine e ora la tastiera no va. :D
ciao ;)
E forse sono anche l'unico a cui Eclipse / Java non ha funzionato su TUTTE le macchine che ho usato.
Per dire l'ultima: stamattina verso le 5, mi sono collegato al forum e ho visto che c'era questo problema. Ero col portatile, che non usavo più da tempo per lavorare a Diamonds; ho fatto l'update, e da allora ho provato in tutti i modi (compreso scaricare l'ultima versione di Eclipse e ricominciare da capo) a lanciare Game.java: nulla di fatto. L'ultimo errore che mi dava era che non riusciva a trovare il main. Alle 7 ho dovuto staccare.
Qui, invece, ho perso "soltanto" venti minuti dietro ai problemi col display, che non funzionava da commandline e da Eclipse non mi permetteva di debuggare. :muro:
Alla fine ho risolto togliendo di mezzo il fullscreen. Dopo 5 minuti avevo trovato già trovato il bug ed eseguito il commit.
Tutte le mie maledizioni vanno a chi ha creato Eclipse, ma soprattutto Java: al peggio non c'è mai fine.
Se non fosse per i tool di rifattorizzazione, di cui sono ormai morbosamente dipendente :oink: , prenderei a calcioni Eclipse dalla mattina alla sera... :muro:
Tutte le mie maledizioni vanno a chi ha creato Eclipse, ma soprattutto Java: al peggio non c'è mai fine.
Se non fosse per i tool di rifattorizzazione, di cui sono ormai morbosamente dipendente :oink: , prenderei a calcioni Eclipse dalla mattina alla sera... :muro:
Siamo in due. :D Sono sicuro che fra qualche anno ci troveremo insieme in una "comunità di recupero" per disintossicarci.
ciao ;)
IMHO ci sarebbe da abilitare il fullscreen solo nella versione di produzione tramite un'opzione di configurazione...
IMHO ci sarebbe da abilitare il fullscreen solo nella versione di produzione tramite un'opzione di configurazione...
sarebbe comodo anche per il restart del gioco sul game over sta cosa...
Oppure introdurre il singlePlayer :)
cdimauro
31-05-2006, 10:01
Perfettamente d'accordo con tutti e tre. :p
Una cosa volevo sottolineare, comunque: ho notato ieri che è stata creata un'istanza di Config FUORI da Environment. Visto che abbiamo deciso di "centralizzare" il tutto usando questa classe, sarebbe bene usare sempre e soltanto lei per create istanze delle classi "principali" di cui facciamo uso.
Una soluzione a questo problema sarebbe quello di rendere privati i metodi static "create" e usare il meccanismo dei metodi "friend", ma Fran è LEGGERMENTE in disaccordo :D, per cui cerchiamo di applicare sempre le stesse regole nella scrittura del codice. ;)
Siamo in due. :D Sono sicuro che fra qualche anno ci troveremo insieme in una "comunità di recupero" per disintossicarci.
ciao ;)
Siamo in tre. Programmo in C++ durante il giorno sognando il tool di refactoring di Eclipse.
IMHO ci sarebbe da abilitare il fullscreen solo nella versione di produzione tramite un'opzione di configurazione...
Il full screen è già settabile, per toglierlo basta settare l'apposito valore a zero in GameConfig ;)
sarebbe comodo anche per il restart del gioco sul game over sta cosa...
Oppure introdurre il singlePlayer :)
Cosa intendi per "restart sul game over"?
Per il single player purtroppo c'è un mare di lavoro da fare. Introdurlo significa non rilasciare altre versioni per un bel pò.
Il full screen è già settabile, per toglierlo basta settare l'apposito valore a zero in GameConfig ;)
Me l'ero perso...ma in ogni caso credo che converrebbe tenerlo disabilitato di default nel repository...
Me l'ero perso...ma in ogni caso credo che converrebbe tenerlo disabilitato di default nel repository...
Assolutamente si'.
Cosa intendi per "restart sul game over"?
Per il single player purtroppo c'è un mare di lavoro da fare. Introdurlo significa non rilasciare altre versioni per un bel pò.
il fatto che nel 1vs1 se uno dei 2 va in gameOver il gioco riparte.
cdimauro
31-05-2006, 10:56
Me l'ero perso...ma in ogni caso credo che converrebbe tenerlo disabilitato di default nel repository...
Già fatto nel primo commit di stamattina. ;)
No, non è affatto normale, infatti: era un bug che aveva introdotto nell'ultima rifattorizzazione. :cry:
I test passavano tutti perché era un problema dovuto esclusivamente all'implementazione di LWJGLKeyboard.
In pratica, dopo aver convertito il "raw" key in EventType, dentro update(), facevo la stessa cosa in notifyEvent(), ma col valore già convertito.
Eliminata quella riga di codice ha funzionato nuovamente tutto. :muro:
Ma quindi non esitono test per questo problema ??? :confused:
il fatto che nel 1vs1 se uno dei 2 va in gameOver il gioco riparte.
Ora ho capito :)
In tal caso, sono d'accordo. Per il testing sarebbe molto più comodo.
cdimauro
31-05-2006, 13:03
Hai ragione. Nella foga di fixare il bug ho dimenticato di scrivere il test. :(
Ecco qua:
public class TestKeyboard extends TestCase implements Listener
{
private Event notifiedEvent;
public void testNotifyCorrectEventToListners()
{
environment.getKeyboard().setListener(this);
environment.getKeyboard().notify(Event.create(Code.KEY_A, State.PRESSED));
assertTrue(notifiedEvent.is(Code.KEY_A));
assertTrue(notifiedEvent.isPressed());
}
public void notify(Event event)
{
notifiedEvent = event;
}
}
Oltre a questo test, ho commitato anche delle modifiche al codice: adesso Input preleva gli eventi da un generico InputDevice (che in questo momento è la tastiera).
KeyboardInterface estende InputDevice e aggiunge soltanto un metodo (shutDown). ;)
forse è frutto del refactoring di bigGem & company, ma ci sono dei bug nelle bigGem, a volte si sfasano(oggi ho giocato per la prima volta 1vs1, è una droga :asd: ).
Ho lo screen sul portatile, stasero lo posto.
ecco il bug.
è stato fatto con la rev 2165, + bugfix di cdimauro
Hmmm riesci a scrivere un test vedendo il log per caso?
Hmmm riesci a scrivere un test vedendo il log per caso?
l'ho salvato, ma ero molto avanti nella partita...
cmq ci provo
l'ho salvato, ma ero molto avanti nella partita...
cmq ci provo
nulla troppo lungo...
cmq mi è capitato altre volte in 20m circa di gioco, quindi è riproducibile.
jappilas
31-05-2006, 21:33
ecco il bug.
è stato fatto con la rev 2165, + bugfix di cdimauro
sporadicamente constatavo lo stesso comportamento anche piu' di una settimana fa ;)
comunque aspetterei la fine del refactoring dei Droppables + BigGem prima di pensare a questo bugfix poichè molto del codice attuale che gestisce le BigGem deve essere modificato/eliminato.
cdimauro
05-06-2006, 14:09
Da almeno un paio d'ore ho problemi a collegarmi al repository per effettuare l'update e finire il mio task:
Impossibile stabilire la connessione. Rifiuto persistente del computer di destinazione.
svn: Can't connect to host 'repository.diamondcrush.net': Impossibile stabilire la connessione. Rifiuto persistente del computer di destinazione.
Succede anche a voi?
Bisogna assolutamente mettere ordine ai moveDown, sia di AbstractDroppable che di BigGem.
Per farlo mi sa che ci voglia una squadra di refactor dei test :doh:
Ecco un bel Bug:
:eekk: :eekk:
Nessuna pressione di tasto...nessuna interazione col gioco...
http://img431.imageshack.us/img431/3710/gameover5ua.th.jpg (http://img431.imageshack.us/my.php?image=gameover5ua.jpg)
..io ho perso e la mia ragazza no :cry:
Mi sa che è da mettere a posto :D
Nessuna pressione di tasto...nessuna interazione col gioco...
E' il solito problema relativo a quel refactoring del timestamp... In pratica non propagando lo STESSO timestamp ad entrambi i playfield il gioco va leggermente fuori sincronia... Manca solo da metterlo a posto in playfield (il resto l'avevo tutto già fatto), ma mi saltavano 20 test e non capivo il motivo...
Scusate ragazzi per l'assenza, ma sono, non nei casini, di più... Sono fisso a programma per J2ME ;)
Ciao, volevo provare, giusto per curiosità, il gioco Diamonds. Non certo per contribuire allo sviluppo ... non ne avrei le capacità al momento. :(
Ho seguito la procedura descritta in questo (http://www.hwupgrade.it/forum/showpost.php?p=9498250&postcount=1) post di fek ma TortoiseSVN mi segnala questo errore:
Error: Can't connect to host 'spartacus.dnsalias.net': Impossibile stabilire la connessione. Risposta non corretta della parte connessa dopo l'intervallo di tempo oppure mancata risposta dall'host collegato.(Il server potrebbe forse essere semplicemente "down")
Ah, già che ci sono, un'altra domanda. :p
Per compilarlo cosa serve??? Io non ho gli IDE come Eclipse e simili. Ho solo il JDK 5.0, Ant 1.6.5 e JUnit 3.8.2. Bastano???
Grazie! :)
Ciao, volevo provare, giusto per curiosità, il gioco Diamonds. Non certo per contribuire allo sviluppo ... non ne avrei le capacità al momento. :(
Ho seguito la procedura descritta in questo (http://www.hwupgrade.it/forum/showpost.php?p=9498250&postcount=1) post di fek ma TortoiseSVN mi segnala questo errore:
Error: Can't connect to host 'spartacus.dnsalias.net': Impossibile stabilire la connessione. Risposta non corretta della parte connessa dopo l'intervallo di tempo oppure mancata risposta dall'host collegato.(Il server potrebbe forse essere semplicemente "down")
Ah, già che ci sono, un'altra domanda. :p
Per compilarlo cosa serve??? Io non ho gli IDE come Eclipse e simili. Ho solo il JDK 5.0, Ant 1.6.5 e JUnit 3.8.2. Bastano???
Grazie! :)
Sì...mi sa che il server è DOWN :(
Per compilare, se hai già ant, basta che:
- decomprimi
- vai dentro la cartella
- esegui il comando ANT
FATTO !! :D
Poi in base alla piattaforma su cui stia lavornado lanci o il .bat o l'.sh
^TiGeRShArK^
09-06-2006, 20:02
Ciao, volevo provare, giusto per curiosità, il gioco Diamonds. Non certo per contribuire allo sviluppo ... non ne avrei le capacità al momento. :(
Ho seguito la procedura descritta in questo (http://www.hwupgrade.it/forum/showpost.php?p=9498250&postcount=1) post di fek ma TortoiseSVN mi segnala questo errore:
Error: Can't connect to host 'spartacus.dnsalias.net': Impossibile stabilire la connessione. Risposta non corretta della parte connessa dopo l'intervallo di tempo oppure mancata risposta dall'host collegato.(Il server potrebbe forse essere semplicemente "down")
Ah, già che ci sono, un'altra domanda. :p
Per compilarlo cosa serve??? Io non ho gli IDE come Eclipse e simili. Ho solo il JDK 5.0, Ant 1.6.5 e JUnit 3.8.2. Bastano???
Grazie! :)
ehm...
mi sa che però i parametri sono lievemente cambiati da quel post di fek :D
svn://repository.diamondcrush.net:20140/diamonds/trunk
questo dovrebbe essere l'indirizzo corretto ;)
Ciao, volevo provare, giusto per curiosità, il gioco Diamonds. Non certo per contribuire allo sviluppo ... non ne avrei le capacità al momento. :( chiunque ne ha le capacità, basta sapere un minimo di Java e fare un po' di training con qualcuno del team
ho spostato un po di classi di test(ho creato il package per grid e grid.state, perche in test c'erano troppe classi).
fate sync
mi è venuta in mente una probabile sitazione critica per le dinamiti
in un caso in cui:
ci sia una big gem larga 3
appoggiata su una colonna larga 1
la gemsPair ci si puo infilare sotto.
Cosa succederebbe se la colonna crollasse per la dinamite, e la bigGem cadesse sulla gemsPair ancora in caduta?(si potrebbe farla travolgere)
Travolgere... :mbe:
...cioè sì...fai cadere tutto alla StrongestGravity e poi rimarrà la gemsPair con sopra la bigGem.
Che ne dici?? :stordita:
Travolgere... :mbe:
...cioè sì...fai cadere tutto alla StrongestGravity e poi rimarrà la gemsPair con sopra la bigGem.
Che ne dici?? :stordita:
esatto.
certo che è una situazione molto rara, ma bisogna segnarci di gestirla
Se pò fà. Una bella spintonata verso il basso alla gemspair e si va avanti.
L'altro giorno parlavo con Ufo di questa eventualità, ed ero orientato per considerare la gemspair dropped dopo l'impatto (insomma, il giocatore ne perderebbe il controllo)... ma la semplice spintonata potrebbe essere più efficiente, e persino più semplice da implementare.
Se pò fà. Una bella spintonata verso il basso alla gemspair e si va avanti.
L'altro giorno parlavo con Ufo di questa eventualità, ed ero orientato per considerare la gemspair dropped dopo l'impatto (insomma, il giocatore ne perderebbe il controllo)... ma la semplice spintonata potrebbe essere più efficiente, e persino più semplice da implementare.
beh alla fine è lo stesso discorso o sbaglio?
beh alla fine è lo stesso discorso o sbaglio?
Più o meno sì :)
DanieleC88
12-06-2006, 11:49
Build rotta.
Corretto, era un semplicissimo errore di formattazione che CheckStyle non accettava. ;)
Corretto, era un semplicissimo errore di formattazione che CheckStyle non accettava. ;)
Ti sei finalmente deciso a ritornare attivo? :D
ciao ;)
Grazie, Daniele. Vic, quando ci sei buttiamo giù i task.
DanieleC88
12-06-2006, 12:24
Ti sei finalmente deciso a ritornare attivo? :D
ciao ;)
Certamente. ;)
Devo solo trovare un task alla mia portata. Nel frattempo mi sto navigando il codice cercando qualcosa da migliorare, ma non so dove mettere le mani, non trovo difetti. :)
Ho appena fatto una prova per vedere se il contatore delle crush funziona con le dinamiti, e in come sospettavo funziona =D e viene fuori il bannerino per quanto è grossa la crush.
L'unica cosa e che la dinamite non è contata come crush, ma è il meno ;)
Certamente. ;)
Devo solo trovare un task alla mia portata. Nel frattempo mi sto navigando il codice cercando qualcosa da migliorare, ma non so dove mettere le mani, non trovo difetti. :)
In realtà ce ne sono :cry:
guardati un po' il thread sul refactoring di Droppable e BigGem e dacci una mano :D
DanieleC88
12-06-2006, 16:00
In realtà ce ne sono :cry:
guardati un po' il thread sul refactoring di Droppable e BigGem e dacci una mano :D
Ok, allora vengo a vedere e se posso aiuto. ;)
Credo che tutti i bug relativi alla visualizzazione di BigGem siano stati fixati. Potreste provare a riprodurli?
E' normale che la dinamite sia sempre la "gemma" inferiore nella coppia ???
E' normale che la dinamite sia sempre la "gemma" inferiore nella coppia ???
se hai fatto la prova con dynamiteProbability a 100 si :p
in una situazione normale non saprei dire..
ps.svn è giu anche a voi?
se hai fatto la prova con dynamiteProbability a 100 si :p
:D :D
Intendevo: quando si presenta una gemsPair che contenga una dinamite la dinamite è sempre la "gemma" inferiore della coppia
:D :D
Intendevo: quando si presenta una gemsPair che contenga una dinamite la dinamite è sempre la "gemma" inferiore della coppia
ho appena provato in modalità normale, e mi è arrivata giu una pair con la dinamite in alto.
mettendo dynamiteProbability a 100, viene sempre inferiore perche:
a 100 dovrebbero essere tutte dinamiti;
la prima è una dinamite;
la seconda non puo essere una dinamite perche non ci possono essere 2 dinamiti attaccate;
la terza sarà una dinamite;
e cosi via..
ho appena provato in modalità normale, e mi è arrivata giu una pair con la dinamite in alto.
mettendo dynamiteProbability a 100, viene sempre inferiore perche:
a 100 dovrebbero essere tutte dinamiti;
la prima è una dinamite;
la seconda non puo essere una dinamite perche non ci possono essere 2 dinamiti attaccate;
la terza sarà una dinamite;
e cosi via..
sul 100 eravamo d'accordo :D
Il problema è che in modalità normale non dovrebbero esserci le dinamiti :eekk:
Volevi scrivere advanced vero :stordita:
sul 100 eravamo d'accordo :D
Il problema è che in modalità normale non dovrebbero esserci le dinamiti :eekk:
Volevi scrivere advanced vero :stordita:
ovvio :asd:
anche perche il task sulla modalita normale/advance l'avevo fatto io :asd:
jappilas
22-06-2006, 23:46
visto adesso questo comportamento sulle bigGem in seguito a una crush
se qualcuno ha idea di cosa lo possa causare ...
altrimenti provo a dedicarmici io domani :stordita:
visto adesso questo comportamento sulle bigGem in seguito a una crush
se qualcuno ha idea di cosa lo possa causare ...
altrimenti provo a dedicarmici io domani :stordita:
ho visto anche di peggio :asd:
ma senza log e con il refactoring di bigGem in corso è un po dura andarci dietro
jappilas
23-06-2006, 11:54
ho visto anche di peggio :asd:
ma senza log e con il refactoring di bigGem in corso è un po dura andarci dietro
ah ok... mi era venuto il dubbio che non fosse tra i bug noti (non conoscendolo io... :fagiano: :D :p ) e/o fosse tra quelli che si presumevano risolti col refactoring di bigGem ( che per qualche strano motivo, mi pareva fosse finito... :p )
ultimamente sono davvero stordito, per cui chiedo scusa... :O
ah ok... mi era venuto il dubbio che non fosse tra i bug noti (non conoscendolo io... :fagiano: :D :p ) e/o fosse tra quelli che si presumevano risolti col refactoring di bigGem ( che per qualche strano motivo, mi pareva fosse finito... :p )
ultimamente sono davvero stordito, per cui chiedo scusa... :O
no beh, se riesci ad andarci dietro e risolverlo meglio :)(un test vale sia se il refactoring è finito o no).
il problema e che quando l'ho verificato giocavo con un mio amico, e non ho la minima idea di come riprodurlo.
Per questo aspetterei il log e il refactoring(che dovrebbe semplificare e unificare la gestione delle droppable)
a tener spinto il pulsante per far esplodere le dinamite, queste esplodono subito.
ps(ho notato che alcuni test annessi sono commentati per refactoring in corso, probabilmente è quello ;) )
io ne ho commentati alcuni perché erano incomprensibili (troppo lunghi e complessi, troppe asserzioni); che ci siano o no non fa molta differenza visto che quei test non mi dicono nulla quando li vado a leggere. probabile che siano gli stessi a cui ti riferisci tu. ad ogni modo sono sicuro che questo crisis-refactoring introdurrà una marea di bug, ma ne usciremo anche con un perfetto sistema di logging che ci permetterà di correggerli molto velocemente (anche perché buona parte saranno gli stessi che abbiamo avuto in passato). quindi se trovate i bug per ora prendetela con un po' di filosofia :p se riuscite a correggerli bene, ma non vi ci scervellate troppo: non ha senso fasciare la caviglia se tanto stiamo per amputare la gamba.
non ha senso fasciare la caviglia se tanto stiamo per amputare la gamba.
:asd: :asd: :asd: :asd:
DanieleC88
26-06-2006, 11:41
non ha senso fasciare la caviglia se tanto stiamo per amputare la gamba.
:mano: :asd:
^TiGeRShArK^
01-07-2006, 20:06
:mbe:
sto assistendo ad una cosa stranissima...
sto eliminando tutti i java.io.FileSeparator in moda da aumentare la leggibilità del codice e eventualmente nel caso in cui riprendiamo il progetto e usiamo webstart...
ma mi sono accorto di una cosa stranissima...
testAllTexturesLoadedBeforeStartPlaying ogni volta che faccio una sostituzione fallisce perchè si ritrova + texture di quelle che si aspetta...:mbe:
Da cosa può dipendere questo comportamento?
magari prima non riusciva a precaricare tutte le texture per qualche strano motivo che mi sfugge? :mbe:
jappilas
01-07-2006, 20:08
:mbe:
sto assistendo ad una cosa stranissima...
sto eliminando tutti i java.io.FileSeparator in moda da aumentare la leggibilità del codice e eventualmente nel caso in cui riprendiamo il progetto e usiamo webstart...
ma mi sono accorto di una cosa stranissima...
testAllTexturesLoadedBeforeStartPlaying ogni volta che faccio una sostituzione fallisce perchè si ritrova + texture di quelle che si aspetta...:mbe:
Da cosa può dipendere questo comportamento?
magari prima non riusciva a precaricare tutte le texture per qualche strano motivo che mi sfugge? :mbe:
scommetto che fallisce in junit ma non in ant :D
il famigerato testAllTexturesLoadedEccetera era in effetti un test idiosincrasico , nel senso che a volte falliva in junit per passare in ant, a causa se non ricordo male dello stato dei test fin lì eseguiti da junit stesso :p
poi tale idiosincrasia è stata bypassata qualche mese fa con un refactoring operato da cesare...
^TiGeRShArK^
01-07-2006, 20:10
scommetto che fallisce in junit ma non in ant :D
no...pensavo anch'io fosse quel problema che mi era capitato un paio di volte....
ma fallisce sia in juint che in ant....:mbe:
e tutti e due riportano un numero maggiore di texture di quelle che si aspettava il test :mbe:
ora ad esempio ne ha 49 mentre se ne aspettava 45 (prima delle modifiche se ne aspettava 44)
boh... non ho idea da cosa può dipendere.. :confused:
no...pensavo anch'io fosse quel problema che mi era capitato un paio di volte....
ma fallisce sia in juint che in ant....:mbe:
e tutti e due riportano un numero maggiore di texture di quelle che si aspettava il test :mbe:
ora ad esempio ne ha 49 mentre se ne aspettava 45 (prima delle modifiche se ne aspettava 44)
boh... non ho idea da cosa può dipendere.. :confused:
ATTENZIONE: io non toglierei i separatori che con tanta fatica Cesere ha messo. :nonsifa: è l'unico modo per avere i path indipendenti dalla piattaforma.
Inoltre mi sa che il test era stato messo a posto per capire da solo quante texture deve caricare e di conseguenza controllare che utte siano caricate.
Se proprio dela vedi brutta fai una stampa delle texture caricate per poi controllare ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.