Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1543 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Résolu] Pb image de fond avec image superposée en avant-plan

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Pb image de fond avec image superposée en avant-plan

n°664017
voleurdeca​rottes
On peut cogner, chef ?
Posté le 05-03-2004 à 10:48:12  profilanswer
 

:bounce:  
Bonjour, (c'est mon 1er post, et je débute en java)
 
Je suis en train de développer un petit jeu du style donjons et dragons dans lequel un perso se déplace de pièces en pièces (vu de haut). Les pièces devront contenir une image de fond représentant le sol.
 
Pour l'instant je sais déplacer, grâce au clavier, l'image de mon perso.
 
Mon problème est le suivant:
J'aimerais pouvoir RéAFFICHER L'IMAGE DU PERSO (qui est superposée à l'image de fond) lors de chaque déplacement, SANS DEVOIR RéAFFICHER L'IMAGE DE FOND à CHAQUE FOIS.
 
Qui possède la clé de cette énigme?
Merki !


Message édité par voleurdecarottes le 06-03-2004 à 16:37:26
mood
Publicité
Posté le 05-03-2004 à 10:48:12  profilanswer
 

n°664862
voleurdeca​rottes
On peut cogner, chef ?
Posté le 05-03-2004 à 21:56:54  profilanswer
 

Vous voulez le début c'est ça??? Voilà le code qui permet de déplacer une image en utilisant le pavé directionnel. C'est peut-être fait comme un boolay mais bon, je débute. Pouvez-vous me dire le code supplémentaire à mettre, permettant d'afficher une seule fois une image de fond?
 
import java.awt.*;
import java.awt.event.*;
 
class Touches extends Frame implements KeyListener
{
  int hauteur = 150;
  int largeur = 200;
  boolean plein = false;
  Image image;
 
  Touches(String titre){
    super(titre);
    addKeyListener (this);
    setSize(800,600);
    setVisible(true);
    image = getToolkit().getImage("heros.jpg" );
  }
 
  public void keyPressed(KeyEvent evt){
      if (evt.getKeyCode() ==  KeyEvent.VK_LEFT)  
 {
   largeur = largeur - 10;
 }
      else if (evt.getKeyCode() == KeyEvent.VK_RIGHT)  
 {
   largeur = largeur + 10;
 }
      else if (evt.getKeyCode() == KeyEvent.VK_UP) hauteur = hauteur - 10;
      else if (evt.getKeyCode() == KeyEvent.VK_DOWN) hauteur = hauteur + 10;
      repaint();
  }
 
  public void keyTyped(KeyEvent evt) {}
  public void keyReleased(KeyEvent evt) {}
 
  public void paint(Graphics g){
    g.drawImage(image,largeur,hauteur,this);  
  }
 
  public static void main (String[] args)
  {
   Touches fenetre  = new Touches("touches" );
  }
}

n°664866
voleurdeca​rottes
On peut cogner, chef ?
Posté le 05-03-2004 à 21:59:07  profilanswer
 

(Le boolean ne sert pas, là, en fait)

n°664874
droopy 76
Posté le 05-03-2004 à 22:04:35  profilanswer
 

utilise la methode du double buffering d'image.
Tu utilises 1 image qui contient toutes les choses à afficher et et d'autres qui contiennnent les entites qui se déplacent
 
A chaque action, tu redessinnes la premiere image citée avec tes images qui representent les décors ou les personnages, une fois dessinée, tu l'affiche. il n'y aura aucun clignotement.

n°664956
voleurdeca​rottes
On peut cogner, chef ?
Posté le 05-03-2004 à 23:42:25  profilanswer
 

Le double buffering? Ca sonne drôlement bien ! Merci Droopy76, j'en ferai bon usage.

n°665280
voleurdeca​rottes
On peut cogner, chef ?
Posté le 06-03-2004 à 14:51:56  profilanswer
 

C'est résolu !
 
Jme suis renseigné sur le double buffering, et un site indiquait que swing prend en compte automatiquement le double buffering. En gros j'ai juste importé javax.swing.*; et remplacé frame par JFrame. Voici le code:
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
 
class Touches extends JFrame implements KeyListener{
 int hauteur = 160;
 int largeur = 200;
 Image image;
 Image fond;
 
 
 Touches(String titre){
  super(titre);
  addKeyListener (this);
  setSize(800,600);
  setVisible(true);
  image = getToolkit().getImage("heros.jpg" );
  fond = getToolkit().getImage("fond.jpg" );
  repaint();
 }
 
 
 public void keyPressed(KeyEvent evt){
       if (evt.getKeyCode() ==  KeyEvent.VK_LEFT){
   largeur = largeur - 20;
  }
       else if (evt.getKeyCode() == KeyEvent.VK_RIGHT){
   largeur = largeur + 20;
  }
       else if (evt.getKeyCode() == KeyEvent.VK_UP) hauteur = hauteur - 20;
       else if (evt.getKeyCode() == KeyEvent.VK_DOWN) hauteur = hauteur + 20;
       repaint();
 }
 public void keyTyped(KeyEvent evt) {}
 public void keyReleased(KeyEvent evt) {}
 
 
 public void paint(Graphics g){
  g.drawImage(fond,0,0,this);  
  g.drawImage(image,largeur,hauteur,this);
 
 }
 
 
 public static void main (String[] args){
  Touches fenetre  = new Touches("touches" );
 }
}

n°685454
voleurdeca​rottes
On peut cogner, chef ?
Posté le 27-03-2004 à 01:31:00  profilanswer
 

Après moult rebondissements, je n'utilise plus ce code. Il fonctionne pourtant, mais j'ai opté pour l'affichage de l'image du héros dans un JLabel, et de l'image de fond dans un autre JLabel. Le JLabel du héros se déplace grâce au pavé directionnel.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Résolu] Pb image de fond avec image superposée en avant-plan

 

Sujets relatifs
Liste Ordinateurs Réseau [resolu]commenter un source qui affiche une image BMP à l'écran
[resolu] Personnaliser l'aide d'access[Résolu] Existe-t-il une fonction si sous access?
[c#][vs.net] Capturer l'image d'une winform grâce aux API...[resolu] Probleme de PREG_REPLACE
[Résolu] java.sun.com down depuis hier[PHP-GD] Impossible de sauver l'image
[JS] [Résolu] Compatibilité MozillaListBox et Image
Plus de sujets relatifs à : [Résolu] Pb image de fond avec image superposée en avant-plan


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR