IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

Faire un pion


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Par défaut Faire un pion
    bonjour à toutes et tous,

    Je suis sur la conception d'un Monopoly et je bloque sur la conception des pions de jeu.

    Mon plateau est un tableau de Jpanel et j'aimerai pouvoir mettre une image représentative du pion sur le Jpanel correspondant à la case où est situé le pion.

    J'avais pensé à un Jbutton mais je n'ai pas besoin d'interagir avec le pion, juste l'afficher SUR le JPanel.
    J'ai besoin d'une orientation, d'un conseil sur ce qui s'offre à moi comme opportunité pour la conception de mon jeton.
    (un JLabel s'intègre dans le JPanel et je ne souhaite pas intégré le pion dans une case, juste l'afficher au dessus.)

    Je vous remercie d'avance de vos conseils.

  2. #2
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Salut,

    Pourquoi ne pas simplement utiliser une image ?

    Tu peux l'afficher simplement dans un JLabel par exemple avec un truc du genre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    BufferedImage image = ImageIO.read( /* File, URL ou InputStream */ );
    ImageIcon icon = new ImageIcon(image); 
    JLabel label = new JLabel();
    label.setIcon(icon);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Par défaut
    Merci Nico02 pour ta réponse.

    En fait, mes JPanels (mes cases) sont limitées et je ne peux plus rien rajouter dedans.
    Et de fait, je ne crois pas qu'il soit possible de mettre un JLabel au dessus d'un JPanel, du genre superposition.

  4. #4
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    Je comprends pas très bien tes restriction mais bon..

    Tu as une autre solution pour arriver à tes fin c'est d'utiliser une classe qui hérite de JPanel et qui va se charger d'afficher une image.

    Code extrait de l’excellent tuto de J.M Doudoux

    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
     
     
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Panel;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
     
    /**
     * Composant qui affiche une image
     */ 
    public class AfficheImage extends Panel {
     
      private static final long serialVersionUID = 1L;
      private BufferedImage image;
     
      public AfficheImage(String nomFichier) {
     
        try {
          image = ImageIO.read(new File(nomFichier));
          this.setPreferredSize(new Dimension(image.getWidth(),
            image.getHeight()));
        } catch (IOException ie) {
          ie.printStackTrace();
        }
      }
     
      public void paint(Graphics g) {
        g.drawImage(image, 0, 0, null);
      }
    }
    Que tu utilises

    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
     
    import java.awt.BorderLayout;
    import javax.swing.JFrame;
     
    public class MonApp extends JFrame {
     
      private static final long serialVersionUID = 1L;
     
      public MonApp(String titre) {
        super(titre);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        init();
      }
     
      private void init()
      {
        AfficheImage afficheImage = new AfficheImage("Duke.gif");
        this.setLayout(new BorderLayout());
        this.add(afficheImage, BorderLayout.CENTER);
        this.pack();
      }
     
      public static void main(String[] args) {
        MonApp app = new MonApp("Afficher image");
        app.setVisible(true);
      }
    }
    A souligner que cette méthode ne marche pas si les images sont dans un JAR.

    Je te laisse lire le tuto pour plus d'infos

    Cdt.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 26
    Par défaut
    Alors j'ai tester le code et ça ne marche pas très bien.
    Je transfert mon code et une image de mon plateau actuellement. (c'est le début, indulgence svp ^^)


    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
    package view;
     
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Panel;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
     
    import javax.imageio.ImageIO;
     
    public class AfficheImage extends Panel{
    	private static final long serialVersionUID = 1L;
    	  private BufferedImage image;
     
    	  public AfficheImage(String nomFichier) {
     
    	    try {
    	      image = ImageIO.read(new File(nomFichier));
    	      this.setPreferredSize(new Dimension(/*image.getWidth(),
    	        image.getHeight()*/30,30));
    	    } catch (IOException ie) {
    	      ie.printStackTrace();
    	    }
    	  }
    	  public void paint(Graphics g) {
    	    g.drawImage(image, 0, 0, null);
    	  }
    }

    et pour ma classe de dessin, je met juste le bout qui nous interesse :

    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
    int debut=0;
    		int fin = debut+9;
     
    		//print 9 cell and see if we pass the go
    			for(int i=debut;i<fin;i++){
    				if (i>39){
    					i=0;
    					fin = fin-40;
    				}
    				ligne.add(make_cell(Board.map[i]));
    				for(Player p : listPlayer){
    					if(p.getPlace()==Board.map[i]){
    						drawImage();
    					}
    				}
    			}
     
    		//add Panel to the game.	
    		game.add(action);	
    		game.add(ligne);
    		game.add(log);
    		//we add the board to the content Pane
    		this.setContentPane(game);
    		this.setTitle("Game");//Title of the Frame
    		this.setExtendedState(JFrame.MAXIMIZED_BOTH);
    		this.setLocationRelativeTo(null);//center the frame
    		this.setVisible(true);//Set the frame visible
    		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    	}
    	private void drawImage()
    	  {
    	    AfficheImage afficheImage = new AfficheImage("img/go.jpg");
    	    this.setLayout(new BorderLayout());
    	    this.add(afficheImage, BorderLayout.CENTER);
    	    this.pack();
    	  }

  6. #6
    Membre Expert Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Par défaut
    C'est quoi qui marche pas ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] problem pour faire sauter le pion d'un case à un autre
    Par nobsss dans le forum Général Python
    Réponses: 1
    Dernier message: 26/05/2015, 21h37
  2. faire un fichier .ini
    Par florent dans le forum C++Builder
    Réponses: 14
    Dernier message: 31/05/2002, 22h06
  3. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  4. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo