Problème d'affichage pour jeu sokoban
Jay May
-
Jay May -
Jay May -
Bonjour,
j'arrive a afficher un personnage qui bouge mais j'arrive pas a afficher une caisse et pourtant j'utilise le même code.
voici mon code (c'est pas le toute), il y a t'il quelqu'un qui pourrais m'aider,
merci d'avance
j'arrive a afficher un personnage qui bouge mais j'arrive pas a afficher une caisse et pourtant j'utilise le même code.
public void affichePlayer(Graphics g) { Image imgperso = Toolkit.getDefaultToolkit().getImage("C://Users//Nathan//Desktop//Portes ouverts/perso.png"); g.drawImage(imgperso, (int) (player.posX * caseWidth), (int) (player.posY * caseHeight), (int) caseWidth, (int) caseHeight, null); } public void afficheCasse(Graphics g) { Image imgcaisse = Toolkit.getDefaultToolkit().getImage("C://Users//Nathan//Desktop//Portes ouverts/zombie.png"); g.drawImage(imgcaisse,(int) (caisse.posCaisseX * caseWidth), (int) (caisse.posCaisseX * caseHeight), (int) caseWidth, (int) caseHeight, null); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); initGlobal(); afficheGame(g); afficheCasse(g); affichePlayer(g); repaint(); }
voici mon code (c'est pas le toute), il y a t'il quelqu'un qui pourrais m'aider,
merci d'avance
A voir également:
- Problème d'affichage pour jeu sokoban
- 94 jeu - Télécharger - Puzzle & Réflexion
- 94 degrés jeu - Télécharger - Divers Jeux
- Affichage double ecran - Guide
- Jeu zuma - Télécharger - Jeux vidéo
- Problème affichage fenêtre windows 10 - Guide
1 réponse
Bonjour,
Plusieurs erreurs (mais pas sûr que ça corrige ton problème)
Dans tes deux méthodes affichePlayer et afficheCasse, tu charges l'image avec Toolkit.getDefaultToolkit().getImage(), or il ne faudrait le faire qu'une seule fois, ça ne sert à rien d'aller récupérer le fichier à chaque affichage, juste une fois lorsque le programme se lance devrait suffire.
De plus, tu as utilisé des chemins absolus pour tes fichiers (C:/...) mais si tu déplaces tes images ou que tu donnes le programme à quelqu'un d'autre ça ne marchera plus, il vaudrait mieux utiliser des chemins relatifs au programme.
Remarque : est-ce normal que ton image de caisse s'appelle zombie ?
Autre erreur, tu fais un repaint(); à la fin de paintComponent(), il ne faut pas, je me demande d'ailleurs s'il est vraiment pertinent de redéfinir la méthode paintComponent ici. Dans la plupart des cas c'est la méthode paint qu'il faut redéfinir.
Plusieurs erreurs (mais pas sûr que ça corrige ton problème)
Dans tes deux méthodes affichePlayer et afficheCasse, tu charges l'image avec Toolkit.getDefaultToolkit().getImage(), or il ne faudrait le faire qu'une seule fois, ça ne sert à rien d'aller récupérer le fichier à chaque affichage, juste une fois lorsque le programme se lance devrait suffire.
De plus, tu as utilisé des chemins absolus pour tes fichiers (C:/...) mais si tu déplaces tes images ou que tu donnes le programme à quelqu'un d'autre ça ne marchera plus, il vaudrait mieux utiliser des chemins relatifs au programme.
private static final Image imgperso = Toolkit.getDefaultToolkit().getImage("perso.png"); private static final Image imgcaisse = Toolkit.getDefaultToolkit().getImage("zombie.png");
Remarque : est-ce normal que ton image de caisse s'appelle zombie ?
Autre erreur, tu fais un repaint(); à la fin de paintComponent(), il ne faut pas, je me demande d'ailleurs s'il est vraiment pertinent de redéfinir la méthode paintComponent ici. Dans la plupart des cas c'est la méthode paint qu'il faut redéfinir.
@Override public void paint(Graphics g) { super.paint(g); initGlobal(); afficheGame(g); afficheCasse(g); affichePlayer(g); }
Ah et pour le zombie c'était un thème Halloween :)