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

Graphisme Java Discussion :

P.b Sprite et mousseListner : tout ce déplace en même temps


Sujet :

Graphisme Java

  1. #21
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bah une List qui contiendra des Objets Rectangle...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Lis l = new ArrayList().
    l.add(new Rectangle(...));

  2. #22
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Ouais
    ben au faite je me suis mal exprimé :

    Alors voila le souci :

    1) Je crée une liste de pièce de domino :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    list pièces = new List();
    /*je crée mes pièces de domino*/
    int j; 
            for (int i = 0; i < 7; i++) { 
                j = i; 
             while (j < 7) { 
      int k=i*10+j;
                    pieces.add(k); 
                    j++; 
                } 
     
            } 
    /*fin de la liste*/
    2) Je distribue des dominos à chaque joueur( ce sera sa main)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public static void bat() { //battage
     
            Collections.shuffle(pieces); 
        }
    /*cette fonction sera dans la class joueur*/
    void distribue(Joueur joueur, int nb) { //nb = 7, pour 7 pièces par joueur.
        for (int i = 0; i < nb; i++) {
          joueur.main.add(pieces.elementAt(0));
          //getPiece();
        }   
      }
    jusque la pas de souci.

  3. #23
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Maintenant je veux créer une liste de rectangle(dessin de domino)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HashMap rectangle= new HashMap();
    j'ai crée une class Rectangle5 qui crée les dessin des différentes pièce de domino.

    3)affichage
    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
     
    void paint(Graphics g)
    {
    /*ma liste de rectangle*/
    int j; 
            for (int i = 0; i < 7; i++) { 
                j = i; 
             while (j < 7) { 
      int id=i*10+j;
      Rectangle5 rect=new Rectangle5(0,0,25,50,i,j)
                    rectangle.put((int)id, rect);
                    j++; 
                } 
     
            }
     
    /*localisation des pièces de domino*/
    posx=30;
    posy=30;
    /*afficahge*/
    for(i=0;i<main.size();i++)
    {
    int k=main.get(i); // la pièce "i" de la main du joueur
    Rectangle5 rec= rectangle.get(k);
    rec.setPosition(posx,posy);
    rect.dessiner(g);
    posx=posx+25;
    }
    }
    Ais-je la bonne soluce ?

  4. #24
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Euh sinon tu mets une méthode draw(Graphics g) dans ta classe Domino qui permet de dessiner le domino sur des graphics et basta...

  5. #25
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 864
    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 864
    Points : 22 910
    Points
    22 910
    Billets dans le blog
    51
    Par défaut
    Hum, mais ne voulait-il pas que ce soit le tapis qui dessine l'ensemble plutot que les domino au depart precedement ?

    Quelques part ca peut etre effectivement interessant de deleguer le rendu des domino a une/plusieurs autre(s) classe(s) si tu comptes, entre autre, laisser a l'utilisateur le choix de faire varier l'apparence des dominos mais pour ce genre de choses mieux aurait-il peut-etre fallu reflechir a/planifier l'architecture du programme avant de commencer a coder.

    Note : a priori, ca devrait compiler juste en enlevant les annotation comme le dit Sinok.

  6. #26
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    bien suivi je voudrais que ce soit la class tapis qui fasse le rendu graph

  7. #27
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Voila encore une fois mon problème du départ reste entier. Mon souci est de pourvoir des drag sur une collection. Quand je crée un domino un par un j'arrive à faire un drag. Mais quand ce crée une collection de domino oups ça marche plus

    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
     
    public class Prog extends Applet implements WindowListener,MouseMotionListener,MouseListener {
      Rectangle5 rect1,rect;
      Domino jeu= new Domino();
      ArrayList l = new ArrayList();
      boolean clicRect1;
      private static int x1,y1,n1;
      Piece p;
      Joueur joueur[]=new Joueur[4];
      public void init() {
     
        joueur[0]= new Joueur();
     
        jeu.ini(); //crée une liste de domino
        jeu.bat();
     
        //**************************************** 
      //distribue 7 dominos à chacun des joueurs
      //****************************************
       n1=0;
         while (n1<4)
           {
     
          jeu.distribue(joueur[n1], 7);
     
            n1++;      
                 }
       /**************FIN DISTRIBUTION*************/
        addMouseListener(this);
        addMouseMotionListener(this);
        clicRect1 = false;
     
     
      }
      public void paint(Graphics g) {
     
        int posx = 15;
        int posy = 30;
        int nb = (int)joueur[0].numPieces();
     
         for (int v = 0; v < nb; v++) { 
          Piece ledomino =(Piece)joueur[0].main.elementAt(v); 
          int a=ledomino.geta();
          int b=ledomino.getb();
          rect1=new Rectangle5(posx,posy,25,50,a,b);
          l.add(rect1);
          rect1.dessiner(g);
          posx = posx+28; 
     
        }
     
      }
     
      public void mouseClicked(MouseEvent e){
     
        x1 = e.getX();
        y1 = e.getY();
        System.out.println(x1+" et "+y1);
     
      }
     
      public void mousePressed(MouseEvent e){
        int x,y;
        x = e.getX();
        y = e.getY();
        for(int i=0;i<l.size();i++)   
            rect= (Rectangle5)l.get(i);
           if (rect.estDans(x,y))
           (clicRect1=true);
      }
      public void mouseDragged(MouseEvent e){
        int x,y;
        x = e.getX();
        y = e.getY();
       if (clicRect1==true) {
          rect.setPosition(x,y);
          repaint();
      }
     
      }
      public void mouseReleased(MouseEvent e){
       if (clicRect1)
          clicRect1=false;
     
      }
     
      //Listener
     
     
     //WindowsAdapter 
     
    public static void main(String[] args) {
          Prog applet = new Prog();
          Frame frame = new Frame("Applet");
          frame.addWindowListener(applet);
          frame.add("Center", applet);
          frame.setSize(350, 250);
          frame.show();
          applet.init();
          applet.start();
     
       }
    }
    Et pourtant ça semble être bon et simple mais ça marche pas

  8. #28
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    J'ai fais que ma class Rectangle extends de JComponent puis j'ai modifié mon code :

    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
     
     
     
    {
     
    //**************************************** 
      //distribue 7 dominos à chacun des joueurs
      //****************************************
       n1=0;
         while (n1<4)
           {
     
          jeu.distribue(joueur[n1], 7);
           //joueur[n1].recoit();
            n1++;      
                 }
     
        // rect.dessiner(g);
        int posx = 15;
        int posy = 30;
        int nb = (int)joueur[0].numPieces();
     
         for (int v = 0; v < nb; v++) { 
         Piece ledomino =(Piece)joueur[0].main.elementAt(v); 
          int a=ledomino.geta();
          int b=ledomino.getb();
          rect1=new Rectangle5(posx,posy,25,50,a,b);
          l.add(rect1);
          add(rect1);
          posx = posx+28; 
     
        }
     
     
        addMouseListener(this);
        addMouseMotionListener(this);
        clicRect1 = false;
        clicRect2 = false;
     
      }
      public void paint(Graphics g) {
       // rect.dessiner(g);
     
         for (int v = 0; v < l.size(); v++) { 
         rect1=(Rectangle5)l.get(v);
         rect1.dessiner(g);
     
        }
     
     
      }
    }

    ça marche mais je trouve pas le code propre

  9. #29
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Pas de critque constructive sur ce bout de code ?
    Bon! sinon quelqu'un aurait une idée sur la manière dont pourrait faire pour que mes dominos lors d'un déplacement avec un drag puissent aller quand dans une zone précise.
    c.a.d lorsque le premier joueur pose son domino le second pourra déposer son domino au dessus ou dessous du domino précedent, ansi de suite

Discussions similaires

  1. Grant sur toutes les tables en même temps
    Par jer64 dans le forum SQL
    Réponses: 3
    Dernier message: 25/09/2006, 07h59
  2. Réponses: 9
    Dernier message: 14/12/2005, 21h05
  3. [JFrame] Désiconifier toutes les autres fenêtres en même temps
    Par stoukou dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 07/10/2005, 12h01

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