|
|
|
![]() |
|
Strumenti |
![]() |
#81 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao ![]() |
|
![]() |
![]() |
#82 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
![]() Quello che secondo me ti conviene fare le segenti cose. Sempre che tu non ti diverta a vedere la tua classe gettata dalla rupe degli spartani da fek un'altra volta. ![]() - creare una classe PlayAreaBackground in cui crei gli sprite, li posizioni e li disegni. Qui di test non dovrebbero essercene. La classe dovrebbe implementare Drawable. Si tratta di creare gli sprites e posizionarli nel costruttore e un foreach in draw. - creare una classe PlayArea che al suo interno crea un istanza di Bounds e una di PlayareaBackground nel punto giusto dello schermo. Qui ci potrebbero essere molti cambiamenti in futuro ma per ora non ci interesa. L'unico metodo da tesatre sarebbe getBounds() per avere l'istanza di bounds creata da usare con i diamanti. ciao ![]() |
|
![]() |
![]() |
#83 | ||
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
![]() percui se avete qualcosa da dirmi in proposito ditemelo apertamente: in caso cancellate pure la mia prenotazione a questi task senza che io continui a lavorare inutilmente... Quote:
ora sono praticamente costretto a fare come dici :-| comunque non sta a me implementare il movimento orizzontale, istantaneo o rapido che sia; io avrei semplicemente creato PlayArea, che per ora disegna solo le celle; in più avrei messo quel famoso test che mi è venuto in mente. |
||
![]() |
![]() |
#84 | ||
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
quella degli spartani era semplicemente un battuta. nulla piu. se ti ho offeso in qualche modo mi schuso. Quote:
ciao ![]() |
||
![]() |
![]() |
#85 | |
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
![]() |
![]() |
#86 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ho scritto il codice del test del mio task (TestLogo). Poi ho provveduto alla creazione della classe Logo che implementava quanto richiesto per far funzionare il test. Fin qui tutto ok. Poi ho provveduto a inserire nel codice di Game le (poche) istruzioni necessarie ad agganciare il logo all'area grafica. Qui sono sorti i problemi (da premettere che Ant mi dà l'OK e il test passa correttamente).
Ho eseguito il commit commentando, però, 3 righe in game.Java. In createSprites: //logo = new Logo(b1, b2); fra la creazione delle playarea e del diamante. sempre in createSprites: //items.add(logo); dopo l'add delle playarea. In quit: //logo.cleanup(); prima di tutti gli altri cleanup. Questo per far continuare a funzionare correttamente Game esattamente com'era prima. Il problema è che basta già decommentare la prima riga, quella della creazione / caricamento del Logo, per far bloccare il programma col seguente errore: Codice:
Exception in thread "main" org.lwjgl.opengl.OpenGLException: Invalid value (1281) at org.lwjgl.opengl.Util.checkGLError(Util.java:56) at org.lwjgl.opengl.Display.update(Display.java:567) at it.diamonds.engine.DisplayImpl.update(DisplayImpl.java:67) at it.diamonds.engine.Engine.updateDisplay(Engine.java:68) at it.diamonds.Game.update(Game.java:129) at it.diamonds.Game.main(Game.java:44) Avete qualche idea su quale potrebbe essere il problema (ma sempre a me? ![]() Un'altra cosa: potremmo finalmente deciderci ad utilizzare Config per memorizzare tutte le costanti e recuperarle soltanto da quest'oggetto? Così evitiamo di tenere costanti utili anche alle altre parti del codice o di doverle duplicare. Mi riferisco a quelle di cui è farcita createSprites (la dimensione dello schermo e delle playarea, ecc.) o altre parti del codice.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
#87 |
Senior Member
Iscritto dal: Nov 2002
Città: Cosenza --> Roma
Messaggi: 853
|
il problema è nella texture, infatti se provi a mettere
super(new Texture("diamond"), null); al posto di super(new Texture("logo"), null); non crea nessun problema, adesso però bisogna capire cosa ha che non va logo..
__________________
GNU MyServer Wants YOU!! We live thinking we will never die. We die thinking we had never lived. Jason Becker |
![]() |
![]() |
#88 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Grazie per il suggerimento! Infatti così funziona perfettamente. Ho fatto il commit usando diamond.png al posto di logo.png, in attesa di informazioni in merito a quest'anomalia.
Un'altra cosa: avere due sistemi di riferimento diversi è seccante. Tra l'altro col riferimento attuale ci stiamo legando troppo a OpenGL. Propongo di passare al sistema di riferimento ("classico") che ha come origine l'angolo in alto a sinistra, con l'asse delle Y che cresce verso il basso; allo stesso modo, per tutti gli oggetti (sprite, play area, ecc.) il riferimento dovrebbe essere l'angolo in alto a sinistra. Secondo me tutto diventa più semplice da gestire.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
#89 |
Senior Member
Iscritto dal: Nov 2002
Città: Cosenza --> Roma
Messaggi: 853
|
ho l'impressione che il problema abbia a che fare con la dimensione dell'immagine, ma non ne sono sicuro e al momento non posso verificare meglio
__________________
GNU MyServer Wants YOU!! We live thinking we will never die. We die thinking we had never lived. Jason Becker |
![]() |
![]() |
#90 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Strano però se è veramente questo il problema. logo.png in effetti ha un'altezza dispari (129) e l'hot spot, con questo sistema di riferimento, mi torna la coordinata Y con .5 come decimale...
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
#91 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Ho appena fatto un update e mi trovo un po spaesato
![]() Per trovare il codice di gem ho dovuto usare grep. Perchè gli è stato cambiato nome in GridSprite? Come nome mi sembra sbagliatissimo per due motivi. Non c'entra nulla con quello che fa la classe e oltretutto fornisce informazioni su come è implementata. ciao ![]() |
![]() |
![]() |
#92 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
l'ho rinominata GridSprite perché (come ho spiegato nel commit) rappresenta il particolare tipo di sprite gestito dalla classe Grid, che ancora non ho creato...
rispetto a Sprite, GridSprite aggiunge le seguenti caratteristiche: - reagisce agli input della tastiera (c'è già) - ha la "gravità" (c'è già) - ha la capacità di "agganciarsi" ad una riga e ad una colonna specifica una volta che termina la sua caduta; a quel punto, una volta agganciata, qualsiasi chiamata a move ritorna false (e questa è da implementare) poi casomai in futuro potremo anche differenziare i vari tipi di diamanti che cadono creando Gem, e tutte le altre per rubini, zaffiri, ecc., ma io consiglio piuttosto di usare la stessa classe passando in input al costruttore nomi di texture diverse. |
![]() |
![]() |
#93 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
cdmauro, non capisco due cose:
![]() - perché per disegnare il Logo hai fatto una classe apposta? Sprite andava già bene... - perché nel costruttore di questa classe (praticamente vuota) hai preso in input due oggetti Bounds? non ho capito come mai li usi così... ![]() |
![]() |
![]() |
#94 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Il mio task (5.8) era questo:
"disegnare il logo del task 5.7 in basso tra le due aree di gioco" Quindi l'obiettivo era di disegnare un logo. E poteva andare benissimo uno sprite, ma avevo l'esigenza di vincolarlo alla condizione specificata subito dopo. Per cui ho pensato di crearmi un'apposita classe, derivata da sprite, ma "specializzata" per questo compito; questo è il motivo per cui il costruttore di Logo prende come valori di input i due oggetti Bounds, ossia le due aree di di gioco. Mi sembra più leggibile così. In effetti potevo anche creare un metodo createLogo(Bounds extents1, Bounds extents1) che tornava l'istanza di Sprite opportunatamente inizializzata. Boh. Non so. M'è venuta così. Forse è la mania di specializzare le classi che mi ha portato a questo. ![]() Al limite rifattorizzo tutto usando createLogo, se dite che è il caso. ![]() Comunque nessuno ha ancora commentato sulle mie proposte relative a Config e al sistema di riferimento. ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
![]() |
![]() |
#95 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
per quanto riguarda il sistema di riferimento direi di usare quello con l'origine situato in basso a sinistra (non c'è motivo di fare inutili conversioni di coordinate quando passiamo il tutto a OpenGL), che poi è l'unico che usiamo a parte per i Bounds che prima o poi qualcuno si deciderà a convertire definitivamente (probabilmente io se non lo farà nessun altro
![]() per quanto riguarda Config, direi che lo stiamo già facendo... guarda il thread Diamonds Knowledge: lì trovi definite quelle che per ora sono le costanti che deve contenere. |
![]() |
![]() |
#96 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao ![]() |
|
![]() |
![]() |
#97 | |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
ciao ![]() |
|
![]() |
![]() |
#98 | |
Senior Member
Iscritto dal: Apr 2001
Città: Bari
Messaggi: 2776
|
Quote:
|
|
![]() |
![]() |
#99 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
|
|
![]() |
![]() |
#100 | ||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Il motivo per cui ho fatto sparire tutte le costanti (nelle parti in cui ho lavorato), vincolandole dentro i rispettivi moduli, è proprio quello di nascondere del tutto un dettaglio implementativo come questo. Se domani volessimo effettuare il porting per dei telefonini, ad esempio, e ci ritroviamo con delle altre API che lavorano con un sistema di riferimento diverso, come facciamo? Meglio lavorare con il sistema che a noi (programmatori. In particolare di giochi 2D ![]() ![]() Quote:
Quando ci sono degli aggiornamenti, è meglio fare degli "up": così almeno capiamo che qualcosa è cambiato... ![]()
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:37.