From a3854362c8d3569284277c4d2dcf030770e0f396 Mon Sep 17 00:00:00 2001 From: Morph01 <145839520+Morph01@users.noreply.github.com> Date: Mon, 19 May 2025 22:47:02 +0200 Subject: [PATCH] refactor: better achitecture and next piece preview fixed --- .../Controllers/TetrisBandeauControleur.java | 3 -- app/src/main/java/org/Models/Grille.java | 1 - .../main/java/org/Models/Ordonnanceur.java | 2 -- .../java/org/Views/VueBandeauControle.java | 30 +++++++++++++++---- app/src/main/java/org/Views/VueGrille.java | 2 -- app/src/main/java/org/Views/VueTetris.java | 4 +-- 6 files changed, 26 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/Controllers/TetrisBandeauControleur.java b/app/src/main/java/org/Controllers/TetrisBandeauControleur.java index 7b64f07..ea193ca 100644 --- a/app/src/main/java/org/Controllers/TetrisBandeauControleur.java +++ b/app/src/main/java/org/Controllers/TetrisBandeauControleur.java @@ -4,9 +4,6 @@ import org.Models.Grille; import org.Models.Musique; import org.Views.VueBandeauControle; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - public class TetrisBandeauControleur { private boolean partieEnPause = false; private boolean partieTerminee = false; diff --git a/app/src/main/java/org/Models/Grille.java b/app/src/main/java/org/Models/Grille.java index d38e30c..2ad27a5 100644 --- a/app/src/main/java/org/Models/Grille.java +++ b/app/src/main/java/org/Models/Grille.java @@ -21,7 +21,6 @@ public class Grille extends Observable { // TODO: ?? implements Runnable { this.nbColonnes = nbColonnes; this.grille = new boolean[nbLignes][nbColonnes]; initGrille(); - this.grille[nbLignes - 1][nbColonnes - 1] = true; } public void initGrille() { diff --git a/app/src/main/java/org/Models/Ordonnanceur.java b/app/src/main/java/org/Models/Ordonnanceur.java index 9ce2d93..5508cec 100644 --- a/app/src/main/java/org/Models/Ordonnanceur.java +++ b/app/src/main/java/org/Models/Ordonnanceur.java @@ -4,7 +4,6 @@ public class Ordonnanceur extends Thread { Runnable runnable; long pause; - private boolean estActif = true; public Ordonnanceur(Runnable runnable, long pause) { this.runnable = runnable; @@ -12,7 +11,6 @@ public class Ordonnanceur extends Thread { } public void stopOrdonnanceur() { - estActif = false; interrupt(); } diff --git a/app/src/main/java/org/Views/VueBandeauControle.java b/app/src/main/java/org/Views/VueBandeauControle.java index cbb6b75..9d3265b 100644 --- a/app/src/main/java/org/Views/VueBandeauControle.java +++ b/app/src/main/java/org/Views/VueBandeauControle.java @@ -2,20 +2,26 @@ package org.Views; import org.Models.GridLayoutCarre; import org.Models.GridLayoutCarre; +import org.Models.Jeu; import org.Models.PieceCourante; import javax.swing.*; import java.awt.*; +import java.util.Observable; +import java.util.Observer; -public class VueBandeauControle extends JPanel { +@SuppressWarnings("deprecation") +public class VueBandeauControle extends JPanel implements Observer { private JLabel scoreLabel; private JPanel nextPiecePanel; private JButton pauseButton; private JPanel[][] caseNextPiece = new JPanel[4][4]; private JLabel nbLigneLabel; private JButton quitterButton; + private Jeu jeu; - public VueBandeauControle() { + public VueBandeauControle(Jeu jeu) { + this.jeu = jeu; setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); setBackground(Color.gray); // setPreferredSize(); @@ -65,6 +71,7 @@ public class VueBandeauControle extends JPanel { add(boutonsPanel); // setVisible(true); + jeu.addObserver(this); } public void setScore(int score) { @@ -104,18 +111,31 @@ public class VueBandeauControle extends JPanel { } public void afficherPieceSuivante(PieceCourante piece) { - boolean[][] motif = piece.getMotif(); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { + caseNextPiece[i][j].setBackground(Color.WHITE); + } + } + + boolean[][] motif = piece.getMotif(); + for (int i = 0; i < motif.length; i++) { + for (int j = 0; j < motif[i].length; j++) { if (motif[i][j]) { caseNextPiece[i][j].setBackground(Color.RED); - } else { - caseNextPiece[i][j].setBackground(Color.WHITE); } } } + nextPiecePanel.revalidate(); nextPiecePanel.repaint(); } + @Override + public void update(Observable o, Object arg) { + if (o instanceof Jeu) { + afficherPieceSuivante(jeu.getPieceSuivante()); + + // TODO : setScore ?? + } + } } \ No newline at end of file diff --git a/app/src/main/java/org/Views/VueGrille.java b/app/src/main/java/org/Views/VueGrille.java index d86fb56..902fe08 100644 --- a/app/src/main/java/org/Views/VueGrille.java +++ b/app/src/main/java/org/Views/VueGrille.java @@ -8,8 +8,6 @@ import org.Models.*; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; -import java.awt.GridLayout; -import java.awt.Toolkit; import java.util.Observable; import java.util.Observer; diff --git a/app/src/main/java/org/Views/VueTetris.java b/app/src/main/java/org/Views/VueTetris.java index f0c02f8..de81fac 100644 --- a/app/src/main/java/org/Views/VueTetris.java +++ b/app/src/main/java/org/Views/VueTetris.java @@ -1,6 +1,5 @@ package org.Views; -import org.Controllers.TetrisBandeauControleur; import org.Models.*; import javax.swing.*; @@ -23,7 +22,7 @@ public class VueTetris extends JFrame { super("Tetris"); this.vueGrille = new VueGrille(grille, jeu); - this.vueControle = new VueBandeauControle(); + this.vueControle = new VueBandeauControle(jeu); // TetrisBandeauControleur controleur = new // TetrisBandeauControleur(vueControle); @@ -47,7 +46,6 @@ public class VueTetris extends JFrame { setVisible(true); vueGrille.resizeCases(); - // Utilisation de la pièce L vueControle.afficherPieceSuivante(jeu.getPieceSuivante()); }