[Slick2D] Problème de chargement de plusieurs images
Bonjour,
Je débute Slick2D et j'ai un soucis, j'ai déjà réussi à creer un mini-jeu grâce à Slick2D et désormais je souhaiterais en créer un second un plus important.
C'est un jeu de tuile (un POKEMON-like) cepandant la carte et le sprite du personnage se chargent idépendament mais lorsque les deux sont chargé et affiché à l'écran, j'ai des erreurs de toute sorte (Nullpointer sur l'image, image too big, ...).
Mon personnage :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class Personnage {
private int sens;
private SpriteSheet tileset;
public Personnage(String image){
this.sens = 0;
try {
this.tileset = new SpriteSheet(getClass().getResource(image).getFile(),32,32);
this.tileset.startUse();
} catch (SlickException e){
System.out.println("Slick Erreur: "+e.getMessage());
} catch (Exception e){
e.printStackTrace();
}
}
public void render(){
this.tileset.getSprite(this.sens, 0).draw(7*32, 7*32);;
}
} |
Ma carte :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| public class Map {
private int w;
private int h;
private int id;
private String name;
private TilesSet tileset;
private Tuile[][] tuiles;
private Fenetre fenetre;
private int tiledefault;
private int tilesol;
public Map(int id,int w,int h,String name,Fenetre fenetre,int tiledefault,int tilesol,Tuile[][] tuiles,TilesSet tileset){
this.id=id;
this.w=w;
this.h=h;
this.name=name;
this.tileset=tileset;
this.tuiles=tuiles;
this.fenetre=fenetre;
this.tiledefault=tiledefault;
this.tilesol=tilesol;
}
@Override
public String toString() {
String s = "Map [id="+id+"] [w=" + w + ", h=" + h + ", name=" + name + ", tileset=" + tileset + ", tuiles=[";
for (Tuile[] is : tuiles) {
s += "[";
for (Tuile i : is) {
s += i+",";
}
s += "]";
}
s += "], fenetre=" + fenetre + ", tiledefault=" + tiledefault + ", tilesol="
+ tilesol + "]";
return s;
}
public int getId() {
return id;
}
public void render() {
for(int y = 0; y<h; y++){
for(int x = 0; x<w; x++){
int num = this.tuiles[y][x].getNum();
int w = this.tileset.getNbtilesX();
int h = this.tileset.getNbtilesY();
int i = num%w;
int j = num/w;
Image img = this.tileset.getImage().getSprite(i,j);
img.draw(x*32, y*32);
}
}
}
} |
Et là les deux fonctions importante de ma classe principale :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| public void init(GameContainer container) throws SlickException {
this.container = container;
container.setShowFPS(false);
this.timepast=0;
this.perso=new Personnage("/img/spritePerso.png");
this.bd = new BaseDeDonnee("src/legendaria/resources/Legendary.db");
this.bd.connect();
this.maps=this.bd.getMaps();
try {
this.map=this.getMap(1);
} catch (Exception e) {
e.printStackTrace();
}
}
public void render(GameContainer arg0, Graphics arg1) throws SlickException {
this.map.render();
this.perso.render();
} |
Voilà, est-ce que quelqu'un sait où est le soucis ? Parce que moi, je ne comprend vraiment pas.