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
- Affichage double ecran - Guide
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeu logo - Télécharger - Jeux vidéo
- Problème facebook affichage ✓ - Forum Facebook
- Affichage heure freebox révolution - Forum Freebox
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 :)