Squashed commit of the following:

commit a8f543114e
Author: ROGER <gwendal.roger@etu.univ-lyon1.fr>
Date:   Mon May 19 21:59:38 2025 +0200

    ajout d'une fonctionnalité permettant de mettre en pause le Jeu grace à un bouton. Ajout d'un vérouillage du clavier pendant lause

commit 27862eb3cd
Author: ROGER <gwendal.roger@etu.univ-lyon1.fr>
Date:   Fri May 16 17:10:15 2025 +0200

    Ajoute de l'arret de la musique en fin de partie + arret propre de l'ordonanceur

commit 2fec9fc96e
Author: ROGER <gwendal.roger@etu.univ-lyon1.fr>
Date:   Fri May 16 16:17:58 2025 +0200

    integration du responsive dans l'affichage de la grille
This commit is contained in:
Morph01
2025-05-19 22:16:42 +02:00
committed by Morph01
parent 85aafa8240
commit aa6ab95728
6 changed files with 35 additions and 27 deletions

View File

@@ -12,25 +12,29 @@ import org.Views.VueTetris;
public class App { public class App {
public String getGreeting() { public String getGreeting() {
return "Hello World!"; return "Hello World!";
} }
public static void main(String[] args) { public static void main(String[] args) {
// Models // Models
Grille grille = new Grille(20, 10); Grille grille = new Grille(20, 10);
Musique musique = new Musique(); Musique musique = new Musique();
musique.start(); musique.start();
Jeu jeu = new Jeu(grille,musique); Jeu jeu = new Jeu(grille, musique);
// Views // Views
VueTetris vueTetris = new VueTetris(grille, jeu); VueTetris vueTetris = new VueTetris(grille, jeu);
// Controllers // Controllers
IO io = new IO(jeu); IO io = new IO(jeu);
vueTetris.addKeyListener(io); vueTetris.addKeyListener(io);
new TetrisBandeauControleur(vueTetris.getVueBandeauControle(), musique, grille);//Création d'un controleur de bandeau avec la musique instanciée new TetrisBandeauControleur(vueTetris.getVueBandeauControle(), musique, grille);// Création d'un
} // controleur de
// bandeau avec la
// musique
// instanciée
}
} }

View File

@@ -16,7 +16,7 @@ public class IO implements KeyListener {
@Override @Override
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
if (jeu.getGrille().estEnPause()){ if (jeu.getGrille().estEnPause()) {
System.err.println("Grille est en pause"); System.err.println("Grille est en pause");
return; return;
} }

View File

@@ -232,8 +232,6 @@ public class Grille extends Observable { // TODO: ?? implements Runnable {
return enPause; return enPause;
} }
// public void verifierEtSupprimerLignesSiBesoin() { // public void verifierEtSupprimerLignesSiBesoin() {
// for (int i = nbLignes - 1; i > 0; i--) { // for (int i = nbLignes - 1; i > 0; i--) {

View File

@@ -1,5 +1,6 @@
package org.Views; package org.Views;
import org.Models.GridLayoutCarre;
import org.Models.GridLayoutCarre; import org.Models.GridLayoutCarre;
import org.Models.PieceCourante; import org.Models.PieceCourante;
@@ -117,5 +118,4 @@ public class VueBandeauControle extends JPanel {
nextPiecePanel.repaint(); nextPiecePanel.repaint();
} }
} }

View File

@@ -1,5 +1,6 @@
package org.Views; package org.Views;
import javax.swing.*;
import javax.swing.*; import javax.swing.*;
import org.Models.*; import org.Models.*;
@@ -32,14 +33,14 @@ public class VueGrille extends JPanel implements Observer, Runnable {
this.nbLignes = grille.getNbLignes(); this.nbLignes = grille.getNbLignes();
this.nbColonnes = grille.getNbColonnes(); this.nbColonnes = grille.getNbColonnes();
setLayout(new BorderLayout()); setLayout(new BorderLayout());
grillePanel = new JPanel(new GridLayoutCarre(nbLignes,nbColonnes)); //pour que les cases soient carrés grillePanel = new JPanel(new GridLayoutCarre(nbLignes, nbColonnes)); // pour que les cases soient carrés
add(grillePanel, BorderLayout.CENTER); add(grillePanel, BorderLayout.CENTER);
casesGrille = new JPanel[nbLignes][nbColonnes]; casesGrille = new JPanel[nbLignes][nbColonnes];
for (int i = 0; i < nbLignes; i++) { for (int i = 0; i < nbLignes; i++) {
for (int j = 0; j < nbColonnes; j++) { for (int j = 0; j < nbColonnes; j++) {
JPanel caseG = new JPanel(){ JPanel caseG = new JPanel() {
@Override @Override
public Dimension getPreferredSize(){ public Dimension getPreferredSize() {
return super.getPreferredSize(); return super.getPreferredSize();
} }
}; };
@@ -60,7 +61,7 @@ public class VueGrille extends JPanel implements Observer, Runnable {
public void resizeCases() { public void resizeCases() {
int largeurPanel = grillePanel.getWidth(); int largeurPanel = grillePanel.getWidth();
int hauteurPanel = grillePanel.getHeight(); int hauteurPanel = grillePanel.getHeight();
if (largeurPanel==0||hauteurPanel==0) { if (largeurPanel == 0 || hauteurPanel == 0) {
return; return;
} }
int taille = Math.min(largeurPanel, hauteurPanel); int taille = Math.min(largeurPanel, hauteurPanel);
@@ -71,7 +72,7 @@ public class VueGrille extends JPanel implements Observer, Runnable {
int tailleCaseX = largeurPanel / nbColonnes; int tailleCaseX = largeurPanel / nbColonnes;
int tailleCaseY = hauteurPanel / nbLignes; int tailleCaseY = hauteurPanel / nbLignes;
int tailleCase = Math.min(tailleCaseX, tailleCaseY); int tailleCase = Math.min(tailleCaseX, tailleCaseY);
Dimension taillePreferee=new Dimension(tailleCase, tailleCase); Dimension taillePreferee = new Dimension(tailleCase, tailleCase);
for (int i = 0; i < nbLignes; i++) { for (int i = 0; i < nbLignes; i++) {
for (int j = 0; j < nbColonnes; j++) { for (int j = 0; j < nbColonnes; j++) {
casesGrille[i][j].setPreferredSize(taillePreferee); casesGrille[i][j].setPreferredSize(taillePreferee);

View File

@@ -7,6 +7,8 @@ import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.awt.event.ComponentAdapter; import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent; import java.awt.event.ComponentEvent;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
public class VueTetris extends JFrame { public class VueTetris extends JFrame {
private static Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); private static Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
@@ -14,13 +16,16 @@ public class VueTetris extends JFrame {
public static double tailleJFrameY = screenSize.getHeight() / 2; public static double tailleJFrameY = screenSize.getHeight() / 2;
private VueGrille vueGrille; private VueGrille vueGrille;
private VueBandeauControle vueControle; private VueBandeauControle vueControle;
private VueGrille vueGrille;
private VueBandeauControle vueControle;
public VueTetris(Grille grille, Jeu jeu) { public VueTetris(Grille grille, Jeu jeu) {
super("Tetris"); super("Tetris");
this.vueGrille = new VueGrille(grille, jeu); this.vueGrille = new VueGrille(grille, jeu);
this.vueControle = new VueBandeauControle(); this.vueControle = new VueBandeauControle();
//TetrisBandeauControleur controleur = new TetrisBandeauControleur(vueControle); // TetrisBandeauControleur controleur = new
// TetrisBandeauControleur(vueControle);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout()); setLayout(new BorderLayout());
@@ -31,7 +36,7 @@ public class VueTetris extends JFrame {
setSize((int) tailleJFrameX, (int) tailleJFrameY); setSize((int) tailleJFrameX, (int) tailleJFrameY);
setLocationRelativeTo(null); setLocationRelativeTo(null);
//listener permettanbt de redimensionner les cases de la grille // listener permettanbt de redimensionner les cases de la grille
addComponentListener(new ComponentAdapter() { addComponentListener(new ComponentAdapter() {
@Override @Override
public void componentResized(ComponentEvent e) { public void componentResized(ComponentEvent e) {