ajout du score et nombre de lignes supprimés dans la vue + vue gameover

This commit is contained in:
ROGER
2025-05-20 12:38:23 +02:00
parent e93b1cfb64
commit abd6ae07c8
4 changed files with 84 additions and 5 deletions

View File

@@ -16,6 +16,9 @@ public class Grille extends Observable { // TODO: ?? implements Runnable {
private int pieceCouranteY; private int pieceCouranteY;
private boolean enPause = false; private boolean enPause = false;
private int score = 0;
private int nbLignesSupprimees = 0;
public Grille(int nbLignes, int nbColonnes) { public Grille(int nbLignes, int nbColonnes) {
this.nbLignes = nbLignes; this.nbLignes = nbLignes;
this.nbColonnes = nbColonnes; this.nbColonnes = nbColonnes;
@@ -249,6 +252,8 @@ public class Grille extends Observable { // TODO: ?? implements Runnable {
// } // }
public void verifierEtSupprimerLignesSiBesoin() { public void verifierEtSupprimerLignesSiBesoin() {
int tmpNbLignesSupprimees = 0;
System.out.println("Debut uppression d'une ligne......");
for (int i = nbLignes - 1; i >= 0; i--) { for (int i = nbLignes - 1; i >= 0; i--) {
boolean ligneSupprimable = true; boolean ligneSupprimable = true;
@@ -261,9 +266,28 @@ public class Grille extends Observable { // TODO: ?? implements Runnable {
if (ligneSupprimable) { if (ligneSupprimable) {
supprimerLigne(i); supprimerLigne(i);
nbLignesSupprimees += 1;
i++; i++;
tmpNbLignesSupprimees++;
} }
} }
System.out.println(tmpNbLignesSupprimees+ " Lignes supprimées");
switch (tmpNbLignesSupprimees) {
case 1:
score += 100;
break;
case 2:
score += 300;
break;
case 3:
score += 500;
break;
case 4:
score += 800;
break;
default:
break;
}
} }
// // TODO : EUHHHHHHHHHH JE CROIS PAS que ça marche comme ça c'est pas en mode // // TODO : EUHHHHHHHHHH JE CROIS PAS que ça marche comme ça c'est pas en mode
@@ -322,4 +346,12 @@ public class Grille extends Observable { // TODO: ?? implements Runnable {
this.setCase(i, j, false); this.setCase(i, j, false);
} }
} }
public int getScore(){
return score;
}
public int getNbLignesSupprimees() {
return nbLignesSupprimees;
}
} }

View File

@@ -11,6 +11,8 @@ import org.Models.Pieces.PieceO;
import org.Models.Pieces.PieceS; import org.Models.Pieces.PieceS;
import org.Models.Pieces.PieceT; import org.Models.Pieces.PieceT;
import org.Models.Pieces.PieceZ; import org.Models.Pieces.PieceZ;
import org.Views.VueGameOver;
import org.Views.VueTetris;
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public class Jeu extends Observable implements Runnable { public class Jeu extends Observable implements Runnable {
@@ -40,7 +42,7 @@ public class Jeu extends Observable implements Runnable {
private PieceCourante getNouvellePiece() { private PieceCourante getNouvellePiece() {
Random random = new Random(); Random random = new Random();
int randomiiii = random.nextInt(6); int randomiiii = random.nextInt(7);
System.err.println("randomiiiii : " + randomiiii); System.err.println("randomiiiii : " + randomiiii);
PieceCourante nouvellePiece; PieceCourante nouvellePiece;
@@ -100,6 +102,9 @@ public class Jeu extends Observable implements Runnable {
public boolean estFinPartie() { public boolean estFinPartie() {
for (Point caseColoree : this.grille.motifPieceCouranteColoriee()) { for (Point caseColoree : this.grille.motifPieceCouranteColoriee()) {
if (this.grille.getCase(caseColoree.y, caseColoree.x)) { if (this.grille.getCase(caseColoree.y, caseColoree.x)) {
new VueGameOver(grille.getScore(),e -> System.exit(0),e->{
System.out.println("Début d'une nouvelle partie");
});
return true; return true;
} }
} }

View File

@@ -26,13 +26,13 @@ public class VueBandeauControle extends JPanel implements Observer {
// setPreferredSize(); // setPreferredSize();
// SCORE // SCORE
scoreLabel = new JLabel("SCORE : 0"); scoreLabel = new JLabel("SCORE : " + jeu.getGrille().getScore());
scoreLabel.setForeground(Color.white); scoreLabel.setForeground(Color.white);
scoreLabel.setFont(new Font("Arial", Font.PLAIN, 16)); scoreLabel.setFont(new Font("Arial", Font.PLAIN, 16));
scoreLabel.setAlignmentX(Component.CENTER_ALIGNMENT); scoreLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
// NB LIGNE // NB LIGNE
nbLigneLabel = new JLabel("LIGNES : 0"); nbLigneLabel = new JLabel("LIGNES : "+ jeu.getGrille().getNbLignesSupprimees());
nbLigneLabel.setForeground(Color.white); nbLigneLabel.setForeground(Color.white);
nbLigneLabel.setFont(new Font("Arial", Font.PLAIN, 16)); nbLigneLabel.setFont(new Font("Arial", Font.PLAIN, 16));
nbLigneLabel.setAlignmentX(Component.CENTER_ALIGNMENT); nbLigneLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
@@ -133,8 +133,9 @@ public class VueBandeauControle extends JPanel implements Observer {
public void update(Observable o, Object arg) { public void update(Observable o, Object arg) {
if (o instanceof Jeu) { if (o instanceof Jeu) {
afficherPieceSuivante(jeu.getPieceSuivante()); afficherPieceSuivante(jeu.getPieceSuivante());
setScore(jeu.getGrille().getScore());
// TODO : setScore ?? nbLigneLabel.setText("LIGNES : " + jeu.getGrille().getNbLignesSupprimees());
scoreLabel.setText("SCORE : " + jeu.getGrille().getScore());
} }
} }
} }

View File

@@ -0,0 +1,41 @@
package org.Views;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
public class VueGameOver extends JFrame {
private JButton quitterButton;
private JButton rejouerButton;
public VueGameOver(int score, ActionListener quitterListener, ActionListener rejouerListener) {
setTitle("FIN DE PARTIE");
setSize(400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
//Fenetre de fin de partie
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
//Texte de fin de partie
JLabel messageFin = new JLabel("GAME OVER !", SwingConstants.CENTER);
messageFin.setFont(new Font("Arial", Font.BOLD, 32));
panel.add(messageFin, BorderLayout.NORTH);
//Texte de score
JLabel messageScore = new JLabel("Votre score : " + score, SwingConstants.CENTER);
messageScore.setFont(new Font("Arial", Font.PLAIN, 24));
panel.add(messageScore, BorderLayout.CENTER);
//Boutons
JPanel buttonPanel = new JPanel();
quitterButton = new JButton("Quitter");
rejouerButton = new JButton("Rejouer");
//mise en forme boutons
quitterButton.addActionListener(quitterListener);
rejouerButton.addActionListener(rejouerListener);
buttonPanel.add(quitterButton);
buttonPanel.add(rejouerButton);
panel.add(buttonPanel, BorderLayout.SOUTH);
setContentPane(panel);
setVisible(true);
}
}