Partage
  • Partager sur Facebook
  • Partager sur Twitter

Le jeu du Morpion (Gestion de 3 cases identique)

    1 mai 2012 à 22:26:55

    Bonjour,

    Je suis nouveau en dev Java, j’essaye de réaliser mon premier programme, le jeu du Morpion.

    Seulement voila, je ne sais pas comment faire un contrôle sur 3 cases identiques.

    Exemple 3 cases alignées en O ou X affiche un message d'information : Le joueur XXXX a gagné

    Mon programme


    Le jeu du morpion


    Voici mon code



    Class Start


    package morpion;
    
    public class Start {
    
        public static void main(String[] args) {
            // TODO code application logic here
            Fenetre fen = new Fenetre();
            fen.setVisible(true);
        }
    }
    

    Class Fenetre pour définir l'aspect graphique + action sur les boutons


    package morpion;
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class Fenetre extends JFrame implements ActionListener {
    
        private String nomJoueur1 = "xxxxxxxx";
        private String nomJoueur2 = "xxxxxxxx";
        private JPanel conteneurP = new JPanel();
        private JPanel panGrille = new JPanel();
        private JPanel panJouer = new JPanel();
        private JPanel panIdentifiant = new JPanel();
        private JLabel labelJoueur1 = new JLabel("Joueur n°1 : " + nomJoueur1);
        private JLabel labelJoueur2 = new JLabel("Joueur n°2 : " + nomJoueur2);
        //Bouton hérité de JButon pour les personnaliser
        private Bouton boutonPlay = new Bouton("Start");
        private Bouton2 boutonRePlay = new Bouton2("Re Jouer");
        String[] tab_morpion = {"", "", "", "", "", "", "", "", ""};
        BoutonGrille[] tab_bouton = new BoutonGrille[tab_morpion.length];
    
        public Fenetre() {
            this.setTitle("Le Morpion");
            this.setSize(500, 500);
            this.setLocationRelativeTo(null);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    
            //Définir les conteneurs
            this.setContentPane(conteneurP);
            conteneurP.setBackground(Color.DARK_GRAY);
            conteneurP.setLayout(new BorderLayout());
            panJouer.setLayout(new GridLayout(1, 2));
            panGrille.setLayout(new GridLayout(3, 3));
            panIdentifiant.add(labelJoueur1);
            panIdentifiant.add(labelJoueur2);
    
            //Emboiter les conteneurs
            conteneurP.add(panGrille, BorderLayout.CENTER);
            conteneurP.add(panJouer, BorderLayout.SOUTH);
            conteneurP.add(panIdentifiant, BorderLayout.NORTH);
            boutonPlay.addActionListener(this);
            boutonRePlay.addActionListener(this);
            boutonPlay.setPreferredSize(new Dimension(100, 90));
            panGrille.setVisible(false);
    
            //Ajouter les boutons
            panJouer.add(boutonPlay);
            panJouer.add(boutonRePlay);
            boutonRePlay.setEnabled(false);
    
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
    
            if (e.getSource() == boutonPlay) {
    
    
                //Commancement de la partie , Initilisation de la grille de bouton, Nom des joueurs
                nomJoueur1 = JOptionPane.showInputDialog(null, "Nom du joueur n°1 : ", "Identification", JOptionPane.QUESTION_MESSAGE);
                nomJoueur2 = JOptionPane.showInputDialog(null, "Nom du joueur n°2 : ", "Identification", JOptionPane.QUESTION_MESSAGE);
                JOptionPane.showMessageDialog(null, "La partie va commencer", "Information", JOptionPane.INFORMATION_MESSAGE);
                labelJoueur1.setText("Joueur n°1 : " + nomJoueur1 + " = O ");
                labelJoueur2.setText("Joueur n°2 : " + nomJoueur2 + " = X ");
                panGrille.setVisible(true);
    
                panGrille.removeAll();
    
    
                for (int i = 0; i < tab_bouton.length; i++) {
                    tab_bouton[i] = new BoutonGrille(tab_morpion[i]);
                    panGrille.add(tab_bouton[i]);
    
                }
    
                boutonRePlay.setEnabled(true);
    
    
            }
            // Réinitialisation de la partie sans redéfinir le nom des joueurs
            if (e.getSource() == boutonRePlay) {
                panGrille.setVisible(false);
    
                panGrille.removeAll();
                panGrille.setVisible(true);
    
                for (int i = 0; i < tab_bouton.length; i++) {
                    tab_bouton[i] = new BoutonGrille(tab_morpion[i]);
                    panGrille.add(tab_bouton[i]);
    
                }
            }
    
    
        }
    
        //--------------------------------------------------
        //          Getters and Setters
        //-------------------------------------------------
        public BoutonGrille[] getTab_bouton() {
            return tab_bouton;
        }
    
        public void setTab_bouton(BoutonGrille[] tab_bouton) {
            this.tab_bouton = tab_bouton;
        }
    }
    


    Class boutonGrille


    package morpion;
    
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import javax.swing.*;
    
    public class BoutonGrille extends JButton implements ActionListener {
    
        private String name;
        Font police = new Font("Arial", Font.BOLD, 48);
        private static int joueur = 0;
    
        public BoutonGrille(String str) {
            super(str);
            this.name = str;
            this.addActionListener(this);
            this.setFont(police);
    
        }
    
        @Override
        //Controle du joueur 1 ou 2 pour définir une X ou un O
        public void actionPerformed(ActionEvent e) {
    
            joueur = (joueur + 1) % 2;
    
            if (joueur == 0) {
                this.setText("X");
    
            } else {
                this.setText("O");
    
            }
    
    
            this.setEnabled(false);
    
    
        }
    }
    


    Je vous l'accorde mon code n'est surement pas des plus propres ou optimisé mais je débute ;)

    Merci par avance de votre aide
    • Partager sur Facebook
    • Partager sur Twitter

    Le jeu du Morpion (Gestion de 3 cases identique)

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown