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 :
Ma carte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);; } }
Et là les deux fonctions importante de ma classe principale :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } } } }
Voilà, est-ce que quelqu'un sait où est le soucis ? Parce que moi, je ne comprend vraiment pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); }
Partager