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

AWT/Swing Java Discussion :

Implémentation de jeu de dames


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Par défaut Implémentation de jeu de dames
    Bonjour

    J'aimerai avoir vos suggestions concernant la programmation de jeu de dames dans l’environnement NetBeans.
    pour le moment je n'utilise pas L'IA. je me contente sur deux joueurs.
    j'ai commencé à élaborer l'interface graphique du jeu, je voudrai que les carrés soient déplaçable. voila mon bout de 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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    import java.awt.event.*;
    import javax.swing.*;
    import java.awt.*;
     
    public class JeudeDames extends JMenuBar {
     
        public JeudeDames() {
            super();
            initializeMenu();
        }
     
        private void initializeMenu() {
            JMenu Fichier = new JMenu("Fichier");
            JMenuItem NouvPartie = new JMenuItem("Nouvelle Partie");
            JMenuItem Chargpartie = new JMenuItem("Charger une partie");
            JMenuItem EnregPartie = new JMenuItem("Enregistrer une partie");
            JMenuItem Quitter = new JMenuItem("Quitter");
            Quitter.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent ae) {
                    System.exit(0);
                }
            });
     
            Fichier.add(NouvPartie);
            Fichier.add(Chargpartie);
            Fichier.add(EnregPartie);
            Fichier.add(Quitter);
            add(Fichier);
     
            JMenu About = new JMenu("?");
            JMenuItem Regle = new JMenuItem("Régle du jeu");
            JMenuItem Apropos = new JMenuItem("A porpos");
            Apropos.addActionListener(new ActionListener() {
     
                public void actionPerformed(ActionEvent e) {
                    JOptionPane.showMessageDialog(null,"Développé par Ahmed Ould Mohamed","About",JOptionPane.WARNING_MESSAGE);              
                }
            });
            About.add(Regle);
            About.add(Apropos);
            add(About);
        }
     
        public static void main(String[] args) {
            JFrame frame = new JFrame();
            JPanel p = new JPanel();
            p.setLayout(new GridLayout (10, 10));
            for (int i = 1; i <= 10; i++) {
                for (int j = 1; j <= 10; j++) {
                    JButton b = new JButton();
                    if ((i + j) % 2 == 0) {
                        b.setBackground(Color.white);
                    } else {
                        b.setBackground(Color.BLACK);
                    }
                    p.add(b);
                }
            }
            frame.add(p);
            frame.setJMenuBar(new JeudeDames());
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(500, 400); //On donne une taille à notre fenêtre
            frame.setTitle("Jeu de Dames v 1.1");
            frame.setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
            frame.setResizable(false); //On interdit la redimensionnement de la fenêtre
            frame.setVisible(true);
        }
    }
    est-ce un bon début ?
    et pour l’implémentation, avez vous des idées ?

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    ton code est bien partie, il est agréable à lire , une petite remarque pour la lisibilité de ton code, tes listeners tu peux les mettre dans une classe à part , controleurBouton implements ActionListener{}.

    controleurBouton controle= new controleurBouton ()
    Apropos.addActionListener(controle);

    Pour ta question en particulier : les carrés soient déplaçable, je pense que c'est pour tes pions, et d'intuition je ferais un calque en fond d'un JPanel avec le damier et par dessus des petites images de pion. Au clique des petites images ( MouseListener et MouseMotionListener il me semble) tu fais ton déplacement, je pense qu'il y a un peu de math ^^.

    Si c'est vraiment tes cases que tu veux déplacer regarde les 2 listeners que j'ai mis. Il y a de quoi s'amuser avec .
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Par défaut
    Salut

    merci de m'avoir répondu
    est ce vous pouvez me donner un exemple sur le déplacement des carrés ? j'ai pas bien saisie !

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Je me posais la question est ce que c'est les carrés que tu veux déplacer ou tu as prévu des pions dessus?
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Par défaut
    ce sont les pions que j'aimerais déplacer.
    mais je ne sais pas comment placer les pions ni comment les déplacer !

  6. #6
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Je ne connais pas ton niveau donc il y a peut être plus simple mais pour avoir fait un jeu semblable voila le déroulement :

    c'est un code que j'ai écris il se base sur le graphique pur de java donc pas aussi simple que du Jbutton, je t'ai mis les parties de code qui peuvent te servir pour le déplacement avec les noms pour que tu comprennes le principe. Quand je n'arrive pas à orienter et que je montre du code certaines personnes copie colle, donc maintenant je tiens à dire que sa ne fonctionnera surement pas comme sa ^^. Il faut le lire, le comprendre et l'adapter.

    Si tu arrives à faire sa, tu pourras déplacer tes pions sur un JPanel sur lequel comme je t'ai dis tout à l'heure je ferais un paint avec un damier. Après il faut vérifier au MouseRelease si la position est valide c'est à dire pas sur un autre pion ou si c'est une case valide.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class TableDeJeu extends JFrame{
     
    public TableDeJeu (){
     
    this.setLayout(new BorderLayout());
    Table plat = new Table ()
     
    this.add(Table ,BorderLayout.Center);
    }
    }
    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
     
    public class Table extends JPanel{
     this.setLayout(null);
     listePion= new ArrayList<Pion>();
     p = new Pion(new Point(100,50));
     p2 = new Pion(new Point(200,200));
     p3 = new Pion(new Point(300,130));
     ...	
     liste.add(p);
     liste.add(p2);
     liste.add(p3);
     ...
     
     public void paint(Graphics g) {
       super.paint(g);
       Graphics2D g2 = (Graphics2D) g;
       for(int i = 0 ; i < liste.size(); i++)
       {
           liste.get(i).paint(g2); 
       }
     
     sr= new DetectSouri(this);
     this.addMouseMotionListener(sr);
     this.addMouseListener(sr);
     }
    }
    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
     
    public class Pion extends JComponent
    {
      private Point pt;
      private Point ptOrigine;
      private Rectangle r;
     
     public Pion(Point p){
     pt = p;
     ptOrigine= new Point(0,0);
     r= new Rectangle(30,40);
     r.setLocation(p);
    }
    public void paint(Graphics g) 
    	{
            Graphics2D g2 = (Graphics2D) g;     
            g2.setColor(Color.white);
            g2.fill(r);
            g2.setColor(Color.black);
            g2.draw(r)
    }
    }
    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
     
     
    public class DetectSouri implements MouseListener, MouseMotionListener
    {
    public void mousePressed(MouseEvent arg0) 
    {
      // pour chaque pion si le clique et dans un pion on prend le pion
       for(int i=0;i<_table.getListe().size();i++)
       {
          if (_table.getListe().get(i).getR().contains(arg0.getX(), arg0.getY()))
         {
    	pion=_table.getListe().get(i);
    	ind=i;
         }
       }
     
       preX = rect.x - arg0.getX();
       preY = rect.y - arg0.getY();
       updateLocation(arg0);			
    }
     
    public void mouseDragged(MouseEvent arg0) 
    {	
    	updateLocation(arg0);		
    }
    public void updateLocation(MouseEvent e) 
     {
          _table.getListe().get(ind).setLocation(preX + e.getX(), preY + e.getY());    
    	_table.repaint();
    	_table.updateUI();
    }
    }
    PS : Si ce code est trop compliqué, pour reprendre ton idée de base, tu peux mettre sur des images sur des boutons, à partir de la tu peux au clique sur un bouton sauvegarder le pion et au deuxième clique remplacer l'image du nouveau bouton avec l'image et retirer l'image du premier. Il faut bien sur garder les règles de gestion case valide.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 135
    Par défaut
    la classe Table ne m'est pas claire ! pourriez vous me l'expliquer un peu s'il vous plait.
    si je veux utiliser les butons avec les images aurai-je besoin du "graphique" ?

  8. #8
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    La Classe table représente ta table de jeu, actuellement elle est vide blanche et parcours le tableau pion pour dessiner ce qu'il y a dedans, des pions qui sont des rectangles pour l'instant.
    Il faudrait donc y dessiner un damier et mettre les pions en forme de rond, avec 2 couleurs.

    Pour l'option JButton non tu as juste besoin d'étudier la javadoc de JButton pour mettre des images dedans après c'est juste un peu sauvegarde au clique sur un bouton donc ActionListener, pour savoir si c'est un choix de pion ou en cours de déplacement et de mise à jours des images des boutons au second clique avec les règles de gestion donc beaucoup de if le bouton cliqué et valide.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

Discussions similaires

  1. jeu de dame en c
    Par MALAKFATINE dans le forum Projets
    Réponses: 1
    Dernier message: 18/09/2006, 09h34
  2. créer jeu de dame en C
    Par SAMUELSalbert dans le forum C
    Réponses: 11
    Dernier message: 31/07/2006, 20h33
  3. Code source en c d'un jeu de dames
    Par ledawa dans le forum Développement 2D, 3D et Jeux
    Réponses: 33
    Dernier message: 22/05/2006, 08h54
  4. [Jeu de dames]Enregistrer les règles...
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/11/2005, 19h39
  5. probleme pour un jeu de dames en python
    Par doudou152 dans le forum Général Python
    Réponses: 7
    Dernier message: 22/04/2005, 14h53

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