Skip to content
Snippets Groups Projects
VueJoueur.java 3.21 KiB
Newer Older
package puissance4.vue;

import puissance4.controleur.Puissance4Controleur;

import javax.swing.*;
import java.awt.*;

public class VueJoueur extends JFrame {

    private Puissance4Controleur game;

    public VueJoueur(Puissance4Controleur game){
        this.game=game;

        //On créer la vue
        this.setSize( 1000, 800);
        JPanel vue= new JPanel(new BorderLayout());

        //Récupération ligne & colonne
        int nbLigne = this.game.getGrilleCourant().getNblignes();
        int nbColonne = this.game.getGrilleCourant().getNbColonnes();

        //New grille
        JPanel grille = new JPanel(new GridLayout(nbLigne+1, nbColonne));

        //On créé chaque case
        for(int colonne = 0; colonne < nbColonne; colonne++)
        {
            for(int ligne = 0; ligne < nbLigne; ligne++)
            {
                //Création ligne & colonne
                JLabel cases = new JLabel();
                cases.setBorder(BorderFactory.createLineBorder(Color.BLACK));

                //Ajout de la case à la grille
                grille.add(cases);
            }
        }

        //Bouttons pour jouer
        for(int i = 0; i < nbColonne; i++)
        {
            int col = i;

            JButton buttonPLay = new JButton("Jouer colonne :"+(col+1));
BARBI HUGO's avatar
BARBI HUGO committed
            buttonPLay.addActionListener(e -> this.play(col));
            grille.add(buttonPLay);
        }

        //Ajout dans la grille
        vue.add(grille, BorderLayout.CENTER);

        //Affichage de la vue
        this.setContentPane(vue);
        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

BARBI HUGO's avatar
BARBI HUGO committed
    public void play(int colonne)
AMOCA OKKES's avatar
AMOCA OKKES committed
        if(this.game.peutJouer(colonne)) {
            if (this.game.getWinner()!=null){
                String colorWinner="Jaune";
                if (this.game.getWinner().getColor().getCouleur()==Color.RED){
                    colorWinner="Rouge";
                }

                JOptionPane.showMessageDialog(this,
                        this.game.getWinner().getNom()+" ("+colorWinner+") A GAGNE LA PARTIE !");
                this.game.setWinner(null);
            }

BARBI HUGO's avatar
BARBI HUGO committed
            this.majGrille();
        }
        else {
            System.out.println("Colonne rempli !");
        }
    }

BARBI HUGO's avatar
BARBI HUGO committed
    public void majGrille()
    {
        int nbLigne = this.game.getGrilleCourant().getNblignes();
        int nbColonne = this.game.getGrilleCourant().getNbColonnes();
        JPanel grille = (JPanel)((BorderLayout)this.getContentPane().getLayout()).getLayoutComponent(BorderLayout.CENTER);
        int but = 0;

        for (int i = nbLigne-1; i >= 0; i--)
        {
            for(int j = 0; j < nbColonne; j++)
            {
                if(this.game.getGrilleCourant().getCases()[j][i].estVide()) //Si la case est vide
                {
                    grille.getComponent(but).setBackground(Color.WHITE);
                    ((JLabel) grille.getComponent(but)).setOpaque(true);
                }
                else{
                    grille.getComponent(but).setBackground(this.game.getGrilleCourant().getCases()[j][i].getPion().getCouleur());
                    ((JLabel) grille.getComponent(but)).setOpaque(true);
                }
                but++;
            }
        }
    }
}