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 :

problème d'utilisation de sprite


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
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Par défaut problème d'utilisation de sprite
    bonjour j'ai une liste de domino (jeu de plateu)
    Je voudrais utiliser un sprite pour le déplacemente des dominos à l'aide de la souris.
    J'aurrai pu utiliser le drag and drop mais j'aurrai préférer utiliser le sprite pour la gestion de ses collisions.

    Ma question serait : comment je pourrais faire pour associer ma liste de domino à une class sprite pour qu'il renvoi directement mes images sur mon plateau.

    voici mes class :

    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
    58
     
    package domino;
    import java.awt.Image;
    import javax.swing.ImageIcon;
    import java.lang.Object;
     
    /***********************************************************
     *Definition d'un domino
     *
     **********************************************************/
     
    import java.awt.Image;
    import javax.swing.ImageIcon;
    import java.lang.Object.*;
    /***********************************************************
     *Definition d'un domino
     *
     **********************************************************/
     
     public class Domino implements Cloneable {
     
     int a;
      int b;
      ImageIcon image;
     
     
     public Domino ( int fa, int fb)
     {
       a = fa;
       b=fb;
      image=new ImageIcon ("C:\\image\\"+a+b+".jpg");
     } 
     
    public Object clone() throws CloneNotSupportedException
     
    {
     
      return new Domino(a,b);
    }
     
     
      public int geta (){
     
        return a;
      }
      public int getb (){
     
        return b;
      }
      public Image getImage(){
        return image.getImage();
      }
      void retourne() {
        int d = b;
        b = a;
        a = d;
      }
     }
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
     
    package domino;
    /*
     * partie graphique du déroulement du jeu
     * 
     */
     
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
     
    import javax.swing.ImageIcon;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    public class Tapis extends JPanel {
     
     
      private static ImageIcon[] dominoJouee= new ImageIcon[3];;
     
      private static ImageIcon[] dominoSud = new ImageIcon[7];
     
      static String gagnant = new String("");
     
       private ImageIcon dominoV,tapisdomino;
     
      JLabel essai;
      private Joueur[] lesjoueurs;
     
      JLabel nombre[] = new JLabel[7];
     
      int reponse = -1;
     
      int totalEstOuest = 0;
     
      int totalNordSud = 0;
     
      Tapis(Joueur[] joueurs) {
     
        lesjoueurs = joueurs;
        dominoV = new ImageIcon("C:\\image\\00.jpg");
        tapisdomino = new ImageIcon("C:\\image\\Tapis.gif");
        essai=new JLabel(dominoV);
        setLayout(null);
     
      }
     
     
     
      // ==============================================
      // Initialise le plateau
      public void affiche() {
          int v=0;  
          while (dominoJouee[v]!=null) 
          {
     
          dominoJouee[v] = new ImageIcon("");
          v++;
          }
     
      }
     
     
      // ==========================================
      // affiche carte jouee
      public void afficheJoue(Domino y, int u, int a, int b) {
    	  System.out.println("C:\\image\\"+a+b+".jpg");
        dominoJouee[u] = new ImageIcon("C:\\image\\"+a+b+".jpg");
        repaint();
      }
     
      public void efface() {
       int v=0;  
          while (dominoJouee[v]!=null) 
          {
     
          dominoJouee[v] = new ImageIcon("");
          v++;
          }
        repaint();
      }
     
      int getReponse() {
        return reponse;
      }
     
    //  @Override
      public void paintComponent(Graphics g) {
        super.paintComponent(g);
        // jeux joueur sud
        int nb = 0;
        int posx = 125;
        int posy = 550;
        g.drawImage(tapisdomino.getImage(), 0, 0, null);
        nb = lesjoueurs[0].main.size();
        for (int v = 0; v < nb; v++) { 
    	    Domino ledomino =(Domino)lesjoueurs[0].main.get(v); 
    	    if (ledomino!=null){
    	    	g.drawImage(ledomino.getImage(), posx,posy, null); posx = posx + 50; 
    	    }
        }
        // jeux joueur est
        posx = 580;
        posy = 125;
        nb = lesjoueurs[1].main.size();
        for (int v = 0; v < nb; v++) {
          g.drawImage(dominoV.getImage(), posx, posy, null);
          posy = posy + 50;
        }
     
        // jeux joueur ouest
        posx = 5;
        posy = 125;
        nb = lesjoueurs[3].main.size();
        for (int v = 0; v < nb; v++) {
          g.drawImage(dominoV.getImage(), posx, posy, null);
          posy = posy + 50;
        }
        // affiche tableau resultat
     
      }
     
     
      void setReponse(int lareponse) {
        reponse = lareponse;
      }
     
    }
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    package domino;
    /*
     *  constitution du jeu de domino
     */
     
     
     import java.util.ArrayList;
     import java.lang.Object;
     
    public class Liste{
     
     
     // public class BoiteDomino implements Cloneable 
     
      ArrayList lejeu = new ArrayList();
      ArrayList lesDominos = new ArrayList(28);
     
     
     
     
      Liste()
      {
         lejeu.add(new Domino(0,0));//double 0
        lejeu.add(new Domino(0,1));
        lejeu.add(new Domino(0,2));
        lejeu.add(new Domino(0,3));
        lejeu.add(new Domino(0,4));
        lejeu.add(new Domino(0,5));
        lejeu.add(new Domino(0,6));
         lejeu.add(new Domino(1,1)); // double 1
          lejeu.add(new Domino(1,2));
           lejeu.add(new Domino(1,3));
            lejeu.add(new Domino(1,4));
             lejeu.add(new Domino(1,5));
              lejeu.add(new Domino(1,6)); 
                 lejeu.add(new Domino(2,2)); //Double 2
                 lejeu.add(new Domino(2,3));
                  lejeu.add(new Domino(2,4));
                   lejeu.add(new Domino(2,5));
                    lejeu.add(new Domino(2,6));
                     lejeu.add(new Domino(3,3)); // double 3
                       lejeu.add(new Domino(3,4));
                        lejeu.add(new Domino(3,5));
                         lejeu.add(new Domino(3,6));
                          lejeu.add(new Domino(4,4)); // double 4
                            lejeu.add(new Domino(4,5));
                             lejeu.add(new Domino(4,6));
                              lejeu.add(new Domino(5,5)); //double 5
                                lejeu.add(new Domino(5,6));
                                 lejeu.add(new Domino(6,6)); // double 6
     
      }
     
     
      void bat() {
        int numero = 0;
          for (int i = 28; i > 0; i--) {
          numero = (int) (Math.random() * i);
          lesDominos.add((lejeu.get(numero)));
          lejeu.remove(numero);}
     
        }
     
       void distribue(Joueur joueur, int nb) {
        for (int i = 0; i < nb; i++) {
          joueur.main.add(lesDominos.get(0));
          lesDominos.remove(0);
        }
      }
     
     
      }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Par défaut
    je voudrais faire une class sprite de ce genre :

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    package domino;
     
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Point;
    import java.awt.image.BufferedImage;
    import java.awt.Graphics2D;
    /**
     * class reprensentan un sprite mobile 
     * @author ludo
     */
     
     
        public class Sprite 
    {
      //Emplacement du sprite
      private int x,y;
      private Image image;
      //Indique si le sprite est visible
      private boolean visible=false;
     
      /**
       * Crée le sprite
       */
      public Sprite(Image image,int x,int y)
      {
        this.image=image;
        this.x=x;
        this.y=y;
      }
     
      /**
       * Dessine le sprite à son emplacement
       */
      public void draw(Graphics g, int x, int y)
        {
            if ( image != null )
                g.drawImage(image,x,y,null);
      }
     
      /**
       * Renvoie la visibilité du sprite
       */
      public boolean estVisible()
      {
        return visible;
      }
     
      /**
       * Change la visiblité du sprite
       */
      public void setVisible(boolean visible)
      {
        this.visible=visible;
      }
     
      /**
       * Change la position du sprite
       */
      public void place(int x,int y)
      {
        this.x=x;
        this.y=y;
      }
     
      /**
       * Translate le sprite
       */
      public void translate(int vx,int vy)
      {
        x += vx;
        y += vy;
      }
     
      /**
       * Retourne l'abscisse du sprite
       */
      public int getX()
      {
        return x;
     
      }
     
      /**
       * Retourne l'ordonnée du sprite
       */
      public int getY()
      {
        return y;
      }
     
    }
    mais sans que la méthode paint soit dans la class Sprite mais dans la class tapis. Et que cette methode renvoi mon sprite(image domino)

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Je dois rater un truc car je ne vois pas ou se trouve le probleme. Si c'est ce que tu veux rien ne t'empeche de faire le rendu dans la classes Tapis, il te faut juste un getter permettant d'abtenir l'image de chaque Sprite.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Par défaut
    ok j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for (int v = 0; v < nb; v++) { 
    	    Domino ledomino =(Domino)lesjoueurs[0].main.get(v); 
    	    if (ledomino!=null){
         Image image=ledomino.getImage();
          Sprite img=new Sprite(image,posx,posy);
           g2d.drawImage(image, posx,posy,null);
                posx = posx + 50; 
    	    }
    l'image s'affiche mais est-ce qu'il pourra ce comporter comme un sprite ?
    si oui comment puis-je le faire ce déplacer comme un drag and drop

Discussions similaires

  1. [RTFEditorKit] Problème d'utilisation
    Par jean.lamy dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 21/10/2004, 18h30
  2. Problème d'utilisation de Mysql avec dev-c++
    Par Watchi dans le forum Dev-C++
    Réponses: 10
    Dernier message: 06/08/2004, 14h35
  3. [cvs] problèmes d'utilisation
    Par gromite dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 29/06/2004, 17h41
  4. Problème: Requête utilisant NOT IN
    Par fages dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/05/2004, 10h18
  5. problème d'utilisation avec turbo pascal 7.0
    Par le 27 dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 03/12/2003, 10h44

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