package puissance4.vue; import puissance4.controleur.Puissance4Controleur; import puissance4.model.Pion; 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)); 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); } public void Play(int colonne) { 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); } this.MajGrille(); } else { System.out.println("Colonne rempli !"); } } 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++; } } } }