avancee debut/fin
This commit is contained in:
parent
bb1215eab7
commit
528870aeff
BIN
Avancee.odt
Normal file
BIN
Avancee.odt
Normal file
Binary file not shown.
41
Case.java
41
Case.java
@ -8,17 +8,17 @@ public class Case extends JPanel {
|
||||
private boolean visible;
|
||||
private boolean minee;
|
||||
private boolean reperee;
|
||||
private boolean deminee;
|
||||
private ListenerCase listener;
|
||||
private boolean finDePartie;
|
||||
|
||||
// Définition du constructeur
|
||||
public Case(Grille grille, Dimension caseSize) {
|
||||
super();
|
||||
// Initialisation des attributs
|
||||
this.visible=false;
|
||||
this.reperee=false;
|
||||
this.deminee=false;
|
||||
this.reperee=false;
|
||||
this.grille=grille;
|
||||
this.finDePartie=false;
|
||||
|
||||
// On place un listener sur notre case pour qu'elle réagisse aux clicks du joueur
|
||||
this.listener = new ListenerCase();
|
||||
@ -31,28 +31,34 @@ public class Case extends JPanel {
|
||||
this.setBackground(new Color(70, 70, 70));
|
||||
}
|
||||
|
||||
// Méthode qui permet de montrer la case, et de la considérer comme déminée
|
||||
// Méthode qui permet de montrer la case, et fait perdre si elle est minée
|
||||
public void setVisible(){
|
||||
|
||||
if (this.visible==false){
|
||||
if (!this.visible){
|
||||
this.visible = true;
|
||||
this.deminee = true;
|
||||
|
||||
// On affiche une mine si la case est minée, sinon le nombre de mines autour d'elle
|
||||
if (this.minee == true) {
|
||||
if ((this.minee)&&(!this.finDePartie)) {
|
||||
this.setBackground(new Color(200, 0, 0));
|
||||
this.grille.setAllVisible();
|
||||
this.finDePartie=true;
|
||||
}
|
||||
else if ((this.minee)&&(this.finDePartie)) {
|
||||
this.setBackground(new Color(236, 0, 140));
|
||||
} else {
|
||||
this.setBackground(new Color(80, 80, 80));
|
||||
|
||||
if (this.entourage > 0) {
|
||||
this.add(new Entourage(this.entourage, this.getSize()));
|
||||
}
|
||||
this.grille.verifVictoire();
|
||||
}
|
||||
|
||||
// Mise à jour de l'affichage de la case
|
||||
this.updateUI();
|
||||
if ((this.entourage == 0)&&(minee==false)) {
|
||||
if ((this.entourage == 0)&&(!minee)) {
|
||||
this.grille.setEntourageVisible(this);
|
||||
}
|
||||
this.grille.verifVictoire();
|
||||
}
|
||||
}
|
||||
|
||||
@ -90,7 +96,6 @@ public class Case extends JPanel {
|
||||
public void setReperee(boolean reperee){
|
||||
this.reperee=reperee;
|
||||
if ((reperee)&&(minee)){
|
||||
this.deminee=true;
|
||||
this.grille.verifVictoire();
|
||||
}
|
||||
this.grille.MinesLeft();
|
||||
@ -101,8 +106,18 @@ public class Case extends JPanel {
|
||||
return this.reperee;
|
||||
}
|
||||
|
||||
// Methode pour dire si la case a été déminée
|
||||
public boolean getDeminee(){
|
||||
return this.deminee;
|
||||
// Methode pour montrer que la partie est gagnée
|
||||
public void setVictoire(){
|
||||
this.finDePartie=true;
|
||||
if (this.minee==true){
|
||||
removeAll();
|
||||
this.setBackground(new Color(236, 214, 0));;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Methode pour savoir dans le Listener si la partie est finie ou non
|
||||
public boolean getFinDePartie(){
|
||||
return this.finDePartie;
|
||||
}
|
||||
}
|
||||
|
21
Chiffre.java
21
Chiffre.java
@ -1,21 +0,0 @@
|
||||
import javax.swing.JComponent;
|
||||
import java.awt.*;
|
||||
|
||||
public class Chiffre extends JComponent {
|
||||
private int entourage;
|
||||
private Dimension caseSize;
|
||||
public Chiffre(int entourage, Dimension caseSize) {
|
||||
super();
|
||||
this.entourage = entourage;
|
||||
this.caseSize=caseSize;
|
||||
}
|
||||
@Override
|
||||
protected void paintComponent(Graphics pinceau) {
|
||||
Graphics chiffre = pinceau.create();
|
||||
Font font = new Font("Arial", Font.BOLD, caseSize.width*2/5);
|
||||
chiffre.setFont(font);
|
||||
Color jaune = new Color(236, 214, 0);
|
||||
chiffre.setColor(jaune);
|
||||
chiffre.drawString(Integer.toString(this.entourage),caseSize.width*2/5,caseSize.height*3/5);
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
public class FrameVictoire {
|
||||
public FrameVictoire(Grille grille){
|
||||
System.out.println("Victoire!");
|
||||
}
|
||||
}
|
39
Grille.java
39
Grille.java
@ -28,7 +28,7 @@ public class Grille extends JPanel {
|
||||
this.mines=mines;
|
||||
this.banniere=banniere;
|
||||
// On génère le plateau contenant les cases
|
||||
GenererPlateau(taille, caseSize);
|
||||
GenererPlateau(caseSize);
|
||||
|
||||
|
||||
// Instalation des mines
|
||||
@ -130,24 +130,31 @@ public class Grille extends JPanel {
|
||||
|
||||
|
||||
// On place les cases à leur état actuel dans la grille
|
||||
AfficherPlateau(taille);
|
||||
AfficherPlateau();
|
||||
}
|
||||
|
||||
// Méthode pour Génerer le plateau
|
||||
protected void GenererPlateau(int taille, Dimension caseSize){
|
||||
this.plateau= new Case[taille];
|
||||
for (int i=0;i<taille;i++){
|
||||
protected void GenererPlateau(Dimension caseSize){
|
||||
this.plateau= new Case[this.taille];
|
||||
for (int i=0;i<this.taille;i++){
|
||||
this.plateau[i]= new Case(this,caseSize);
|
||||
}
|
||||
}
|
||||
|
||||
// Méthode pour Afficher le plateau
|
||||
protected void AfficherPlateau(int taille){
|
||||
for (int i=0;i<taille;i++){
|
||||
protected void AfficherPlateau(){
|
||||
for (int i=0;i<this.taille;i++){
|
||||
this.add(this.plateau[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// Méthode pour montrer toutes les cases à la fin de la partie
|
||||
public void setAllVisible(){
|
||||
for (int i=0;i<this.taille;i++){
|
||||
this.plateau[i].setVisible();
|
||||
}
|
||||
}
|
||||
|
||||
// Méthode pour obtenir la taille de la grille de jeu
|
||||
public Dimension getGrilleSize(){
|
||||
return grilleSize;
|
||||
@ -166,17 +173,25 @@ public class Grille extends JPanel {
|
||||
|
||||
// Méthode déterminant les conditions de victoire
|
||||
public void verifVictoire(){
|
||||
int casesDeminees=0;
|
||||
int casesVisibles=0;
|
||||
for (int i=0;i<this.taille;i++){
|
||||
if(plateau[i].getDeminee()==true){
|
||||
casesDeminees+=1;
|
||||
if(plateau[i].getVisible()==true){
|
||||
casesVisibles+=1;
|
||||
}
|
||||
}
|
||||
if (taille==casesDeminees){
|
||||
new FrameVictoire(this);
|
||||
// Lance la victoire si les conditions sont remplies
|
||||
if (taille-mines==casesVisibles){
|
||||
for (int i=0;i<taille;i++){
|
||||
this.plateau[i].setVictoire();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Methode pour récupérer le plateau de jeu
|
||||
public Case[] getPlateau(){
|
||||
return this.plateau;
|
||||
}
|
||||
|
||||
// Méthode pour rendre visibles les cases autour d'un 0
|
||||
public void setEntourageVisible(Case panel){
|
||||
for(int i=0; i<this.taille;i++){
|
||||
|
@ -1,44 +0,0 @@
|
||||
import java.awt.event.*;
|
||||
import java.awt.*;
|
||||
|
||||
public class Listener implements MouseListener{
|
||||
private int marquage=0;
|
||||
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent evenement){
|
||||
Case panel = (Case)evenement.getSource();
|
||||
if ((evenement.getButton() == MouseEvent.BUTTON1)&&(panel.getVisible()==false)&&(this.marquage==0)){
|
||||
panel.setVisible();
|
||||
if (panel.getMine()==true){
|
||||
System.out.println("Perdu!");
|
||||
}
|
||||
}
|
||||
if (evenement.getButton() == MouseEvent.BUTTON3) {
|
||||
if (this.marquage==0){
|
||||
panel.add(new Etoile(panel.getSize()), BorderLayout.CENTER);
|
||||
this.marquage=1;
|
||||
}
|
||||
else if (this.marquage==1){
|
||||
panel.removeAll();
|
||||
panel.add(new Sus(panel.getSize()), BorderLayout.CENTER);
|
||||
this.marquage=2;
|
||||
}
|
||||
else if (this.marquage==2){
|
||||
panel.removeAll();
|
||||
this.marquage=0;
|
||||
}
|
||||
panel.updateUI();
|
||||
|
||||
System.out.println(""+this.marquage);
|
||||
}
|
||||
}
|
||||
public void mouseEntered(MouseEvent evenement){
|
||||
}
|
||||
public void mouseExited(MouseEvent evenement){
|
||||
}
|
||||
public void mousePressed(MouseEvent evenement){
|
||||
}
|
||||
public void mouseReleased(MouseEvent evenement){
|
||||
}
|
||||
|
||||
}
|
@ -1,54 +1,58 @@
|
||||
import java.awt.event.*;
|
||||
import java.awt.*;
|
||||
|
||||
public class ListenerCase implements MouseListener{
|
||||
private int marquage=0;
|
||||
public class ListenerCase implements MouseListener {
|
||||
private int marquage = 0;
|
||||
|
||||
@Override
|
||||
// Méthode qui va servir à détecter le click de la souris
|
||||
public void mouseClicked(MouseEvent evenement){
|
||||
Case panel = (Case)evenement.getSource();
|
||||
// Si le joueur clique gauche, tant que la case n'est pas marquée, elle sera révélée
|
||||
if ((evenement.getButton() == MouseEvent.BUTTON1)&&(panel.getVisible()==false)&&(this.marquage==0)){
|
||||
panel.setVisible();
|
||||
if (panel.getMine()==true){
|
||||
System.out.println("Perdu!");
|
||||
@Override
|
||||
// Méthode qui va servir à détecter le click de la souris
|
||||
public void mouseClicked(MouseEvent evenement) {
|
||||
Case panel = (Case) evenement.getSource();
|
||||
if (panel.getFinDePartie() == false) {
|
||||
// Si le joueur clique gauche, tant que la case n'est pas marquée, elle sera
|
||||
// révélée
|
||||
if ((evenement.getButton() == MouseEvent.BUTTON1) && (panel.getVisible() == false)
|
||||
&& (this.marquage == 0)) {
|
||||
panel.setVisible();
|
||||
}
|
||||
}
|
||||
// Si le joueur clique droit, la case sera marquée
|
||||
if ((evenement.getButton() == MouseEvent.BUTTON3)&&(panel.getVisible()==false)) {
|
||||
// Au premier click, on place une étoile pour indiquer la présence d'une mine
|
||||
// TODO: Regarder switch
|
||||
if (this.marquage==0){
|
||||
panel.add(new Etoile(panel.getSize()), BorderLayout.CENTER);
|
||||
panel.setReperee(true);
|
||||
this.marquage=1;
|
||||
// Si le joueur clique droit, la case sera marquée
|
||||
if ((evenement.getButton() == MouseEvent.BUTTON3) && (panel.getVisible() == false)) {
|
||||
// Au premier click, on place une étoile pour indiquer la présence d'une mine
|
||||
if (this.marquage == 0) {
|
||||
panel.add(new Etoile(panel.getSize()), BorderLayout.CENTER);
|
||||
panel.setReperee(true);
|
||||
this.marquage = 1;
|
||||
}
|
||||
// Au second, on met un point d'interrogation en cas de soupçon pour aider à la
|
||||
// réflexion
|
||||
else if (this.marquage == 1) {
|
||||
panel.removeAll();
|
||||
panel.add(new Doute(panel.getSize()), BorderLayout.CENTER);
|
||||
this.marquage = 2;
|
||||
}
|
||||
// Au troisième click on efface tout marquage
|
||||
else if (this.marquage == 2) {
|
||||
panel.setReperee(false);
|
||||
panel.removeAll();
|
||||
this.marquage = 0;
|
||||
}
|
||||
// On met à jour l'affichage de la case cliquée
|
||||
panel.updateUI();
|
||||
}
|
||||
// Au second, on met un point d'interrogation en cas de soupçon pour aider à la réflexion
|
||||
else if (this.marquage==1){
|
||||
panel.removeAll();
|
||||
panel.add(new Doute(panel.getSize()), BorderLayout.CENTER);
|
||||
this.marquage=2;
|
||||
}
|
||||
// Au troisième click on efface tout marquage
|
||||
else if (this.marquage==2){
|
||||
panel.setReperee(false);
|
||||
panel.removeAll();
|
||||
this.marquage=0;
|
||||
}
|
||||
// On met à jour l'affichage de la case cliquée
|
||||
panel.updateUI();
|
||||
}
|
||||
}
|
||||
|
||||
// Les autres méthodes de l'interface n'interviennent pas
|
||||
public void mouseEntered(MouseEvent evenement){
|
||||
}
|
||||
public void mouseExited(MouseEvent evenement){
|
||||
}
|
||||
public void mousePressed(MouseEvent evenement){
|
||||
}
|
||||
public void mouseReleased(MouseEvent evenement){
|
||||
// Les autres méthodes de l'interface n'interviennent pas
|
||||
public void mouseEntered(MouseEvent evenement) {
|
||||
}
|
||||
|
||||
public void mouseExited(MouseEvent evenement) {
|
||||
}
|
||||
|
||||
public void mousePressed(MouseEvent evenement) {
|
||||
}
|
||||
|
||||
public void mouseReleased(MouseEvent evenement) {
|
||||
}
|
||||
|
||||
}
|
||||
|
18
Sus.java
18
Sus.java
@ -1,18 +0,0 @@
|
||||
import javax.swing.JComponent;
|
||||
import java.awt.*;
|
||||
|
||||
public class Sus extends JComponent {
|
||||
private Dimension caseSize;
|
||||
public Sus(Dimension caseSize) {
|
||||
super();
|
||||
this.caseSize=caseSize;
|
||||
}
|
||||
@Override
|
||||
protected void paintComponent(Graphics pinceau) {
|
||||
Graphics chiffre = pinceau.create();
|
||||
Font font = new Font("Arial", Font.BOLD, caseSize.width*3/5);
|
||||
chiffre.setFont(font);
|
||||
chiffre.setColor(new Color(236, 0, 140));
|
||||
chiffre.drawString("?",caseSize.width*3/10,caseSize.height*4/5);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user