View Full Version : [Java, GTGE e wtf] chiarimento su Sprite, Game e immagini da assegnare a sprite
ciao a tutti, sto iniziando a guardare GTGE, questa libreria per sviluppare piccoli videogiochi 2d. Sto muovendo i primi passi, facendo le prime prove ma mi sono già bloccato. Il problema è il seguente:
tutti gli esempi che vedo in giro per la rete e sul tutorial ufficiale usano UNA classe che estende Game e in questo modo è possibile usare un metodo getImage(String s) a cui si passa un path di un'immagine che viene collegata ad uno sprite. Ora, a me usare un'unica classe (contenente il main tra l'altro) me la fa fare a spruzzo. io vorrei fare una cosa del genere
public class Plane extends Sprite
{
public Plane()
{
super(getImage("resources/plane1.png"));
}
}
ma non posso perchè Sprite a differenza di Game non prevede costruttori a cui si passi un path(String) o metodi come quello di Game getImage.
Qualcuno conosce la libreria? sa come posso fare? è anche possibile che sono così noob che sfugge qualcosa a me e quinid mi può aiutare anche chi non conosce GTGE ma solo Java. Grazie a tutti in anticipo.
agente mm8
10-08-2008, 14:23
Tu praticamente vuoi creare uno sprite, vero?
Io ho iniziato da poco con j2me e si fà così:
crei una classe che estende gamecanvas e dentro fai una cosa tipo:
public class MioCanvas extends GameCanvas [..]
{
private Image img;
private Sprite sprite;
public MioCanvas(){
super(true);
try{
img = Image.createImage("/abc.png");
sprite = new Sprite(img,16,169,
}catch(IOException ex)
}
}
Dovrebbe essere una cosa + o - così
ok però io sto usando una certa libreria(GTGE) che semplifica queste operazioni, se faccio così ne vanifico l'utilizzo.. devo usare le classi di libreria con i loro metodi dunque..
agente mm8
10-08-2008, 14:41
cerco qualcosa su internet e poi ti faccio sapere.
guarda qui:
http://hackerforum.devil.it/viewtopic.php?t=8921&sid=7fd94281b8994d6a68ff4f4a6e8cf9d1
cerco qualcosa su internet e poi ti faccio sapere.
ho anche provato a usare il tuo codice.. ma la classe Image non prevede un metodo createImage.. magari solo su me.. non saprei.. :)
guarda qui:
http://hackerforum.devil.it/viewtopic.php?t=8921&sid=7fd94281b8994d6a68ff4f4a6e8cf9d1
si si ho presente quelle tre miniguide.. e come ho scritto nell'op in queste guide(e anche nei tutorial ufficiali di gtge) viene SEMPRE fatto tutto in un'unica classe contenente anche il main che estende Game.. e per questo funziona.. io sto cercando di evitare proprio questo :p
rivoluzionario
10-08-2008, 15:10
Per leggere un'immagine da un file si usa il metodo read della classe javax.imageio.ImageIO ;)
wingman87
10-08-2008, 16:59
Ciao, ho avuto il tuo stesso problema, per risolverlo ho spulciato i sorgenti e alla fine ho scritto una classe Util in cui ho messo un metodo statico getImage() che fa la stessa cosa di quello contenuto nella classe Game:
import java.awt.image.*;
import java.awt.Color;
import java.io.*;
import com.golden.gamedev.util.*;
public class Util{
static public BufferedImage getImage(String imgPath){
try{
return ImageUtil.getImage((new File(imgPath)).toURL(),Color.MAGENTA);
}catch(Exception e){
System.out.println("Errore nel caricamento di "+imgPath);
return null;
}
}
}
grandeeeeeeeeee funziona.. però strano che non abbiano pensato sta cosa, no? ah toUrl mi dice che è deprecato, c'è modo di mettere a posto sta cosa?
wingman87
10-08-2008, 19:24
Non so, io uso Java 5, forse è deprecato dal 6, dovresti vedere la documentazione, avranno fatto qualche nuovo metodo per sostituirlo
EDIT: sì, infatti dice di usare il metodo .toURI() e poi sull'oggetto restituito invocare .toURL() : LINK (http://java.sun.com/javase/6/docs/api/java/io/File.html#toURL())
Non so, io uso Java 5, forse è deprecato dal 6, dovresti vedere la documentazione, avranno fatto qualche nuovo metodo per sostituirlo
EDIT: sì, infatti dice di usare il metodo .toURI() e poi sull'oggetto restituito invocare .toURL() : LINK (http://java.sun.com/javase/6/docs/api/java/io/File.html#toURL())
perfetto grazie.. adesso non da neanche warning :)
wingman87 ciao. ancora io. volevo chiederti, ho lo stesso problema con il metodo keyPressed che è definito in Game e non in Spirte.. ma dimmi un pò ma ti pare possibile? possibile che questa libreria è stata progettata per fare tutto nel main? a me sembra una cosa improponibile, soprattutto in un linguaggio come Java.. poi non so sarò io che sono noob e mi sfugge qualcosa? :cry:
wingman87
11-08-2008, 22:16
Beh, in teoria gli eventi come la pressione di un tasto o un click dovresti gestirli nel metodo update(), o almeno credo :P Poi dipende... ad esempio, io sto facendo un breakout e devo muovere il paddle con il mouse, quando ho instanziato l'oggetto ne ho anche overridato il metodo update() (quello che ho usato è una classe anonima), praticamente ho fatto questo:
Paddle paddle=new Paddle(){
public void update(long elapsedTime){
setX(getMouseX()-this.getWidth()/2);
super.update(elapsedTime);
}
};
Siccome l'ho instanziato da dentro la classe Game avevo la visibilità di tutti i metodi che mi servivano e che altrimenti non avrei potuto vedere. Però non è una cosa che si può sempre fare, ad esempio io non ho problemi perché il paddle lo uso solo in questa specifica classe che sarebbe la classe Level, se lo dovessi usare anche altrove non sarebbe bello dover ricopiare ogni volta questo pezzo di codice...
Comunque ti consiglio di dare un'occhiata alle classi GameEngine e GameObject, soprattutto se il tuo codice inizia a diventare troppo ingarbugliato.
Se proprio non puoi fare tutto dall'update un'altra soluzione che mi viene in mente è passare un riferimento dell'oggetto Game allo sprite così questo può usare tutti i metodi che questo espone...
Che tipo di gioco stai creando?
intendevo proprio nell'update.. cioè nell'update della classe Game posso chiamare keyPressed(long l) ma nell'update della classe Sprite no.. avevo pensato anche io di passare l'oggetto game a sprite.. non sto creando nessun gioco comunque, sono ancora troppo nabbo, sto cercando di capire bene come funziona.. anche perchè per ora ho delle lacune perfino su Java perciò figurati..
ecco mi era venuto in mente di chiedere qui se si potrebbe creare un gioco Java+GTGE in un pò di persone.. non dico al livello di diamond eh, magari partire da una cosa piccola e se tutto va bene alzare il tiro..
wingman87
12-08-2008, 09:37
ecco mi era venuto in mente di chiedere qui se si potrebbe creare un gioco Java+GTGE in un pò di persone.. non dico al livello di diamond eh, magari partire da una cosa piccola e se tutto va bene alzare il tiro..
Io ci starei ma sono completamente ignorante in materia di organizzazione e coordinazione del team... Hai già qualche idea?
Io ci starei ma sono completamente ignorante in materia di organizzazione e coordinazione del team... Hai già qualche idea?
ah di certo non sarei io a coordinarlo.. comunque non serve certo chissà chi, direi che basta uno che conosce abbastanza Java ed ingegneria del software che lo progetti.. ma non sarò certo io :D potremmo aprire un thread apposito per reclutare altra gente, che ne dici?
wingman87
12-08-2008, 13:09
Ok, se si riesce ad organizzarsi io ci sto. Hai qualche idea per il gioco da creare?
Ok, se si riesce ad organizzarsi io ci sto. Hai qualche idea per il gioco da creare?
guarda a me piacciono i gdr ma non mi importa in questo caso perchè si parla di sviluppo.. mi va bene qualsiasi genere.. sarebbe bello scegliere tutti insieme quando si è creato il team.. l'unica cosa è che aspetterei almeno una settimana.. non so se è una mia impressione ma a me il forum sembra desolato :D
franksisca
12-08-2008, 14:36
se vi serve uno che ha poco tempo eccomi.....comunque se ne parlerebbe metà settembre....
Io ci sono ndakota, ovviamente non a tempo pieno perchè lavoro, ma molto molto disponibile..
Avete aperto il thread? Ora cerco...
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.