ajout de la classe plateau effective
This commit is contained in:
parent
3d4c5bd4c8
commit
2037f8fd7a
BIN
CASE/IMAGE/replay.png
Normal file
BIN
CASE/IMAGE/replay.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
Binary file not shown.
@ -12,54 +12,12 @@ public class main_ex{
|
||||
JFrame fenetre = new JFrame("Démineur");
|
||||
int ligne=10;
|
||||
int collonne=20;
|
||||
int bombe=1;
|
||||
int bombe=12;
|
||||
fenetre.setLocation(0,0);
|
||||
//on choisi une taille arbitraire
|
||||
|
||||
//nous utiliserons un gestionnaire GridLayout de dimensions choisi précédament
|
||||
GridLayout grille = new GridLayout(ligne+1,collonne);
|
||||
paintMenuJeu[] tabScore= new paintMenuJeu[3];
|
||||
for(int i=0; i<collonne; i++){
|
||||
paintMenuJeu menu= new paintMenuJeu(0, bombe);
|
||||
menu.setPreferredSize(new Dimension(100,100));
|
||||
if(i==1){
|
||||
tabScore[0]=menu;
|
||||
menu.setChoix(1);
|
||||
}
|
||||
if(i==2){
|
||||
tabScore[1]=menu;
|
||||
menu.setChoix(2);
|
||||
}
|
||||
if(i==3){
|
||||
tabScore[2]=menu;
|
||||
menu.setChoix(3);
|
||||
}
|
||||
if(i==collonne-1){
|
||||
menu.setChoix(4);
|
||||
menu.addMouseListener(new observateurSAV(menu, fenetre));
|
||||
}
|
||||
fenetre.add(menu);
|
||||
}
|
||||
fenetre.setLayout(grille);
|
||||
// l'application ne se fermera que si on clique sur
|
||||
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
fenetre.setVisible(true);
|
||||
// nous creons le tableau de Case qui représente l'etat du jeu
|
||||
Case[][] tab = new Case[ligne][collonne];
|
||||
// on ajoute a la fenetre toute les case (ligne*collonne)
|
||||
for(int i=0; i<ligne; i++){
|
||||
for(int t=0; t<collonne; t++){
|
||||
tab[i][t]= new Case();
|
||||
tab[i][t].setPreferredSize(new Dimension(50,50));
|
||||
//nous ajoutons aussi a chaque case son observateur de case
|
||||
tab[i][t].addMouseListener(new observateurCase(i, t, tab, tabScore));
|
||||
fenetre.add(tab[i][t]);
|
||||
}
|
||||
}
|
||||
//nous disposons les bombe dans le jeu
|
||||
plateau.setAllBombe(bombe, ligne, collonne, tab);
|
||||
//maitenant que les bombe sont mise nous pouvons modifier le nombre de voisin des cases
|
||||
plateau.setAllVoisin(tab);
|
||||
fenetre.pack();
|
||||
plateau plat = new plateau(fenetre,ligne,collonne, bombe);
|
||||
|
||||
}
|
||||
}
|
Binary file not shown.
@ -9,18 +9,17 @@ public class observateurCase implements MouseListener{
|
||||
private int ligne, collonne;
|
||||
private Case[][] tableau;
|
||||
private plateau plat;
|
||||
private paintMenuJeu[] tabScore;
|
||||
public observateurCase(int ligne0, int collonne0, Case[][] tableau0, paintMenuJeu[] tabScore0){
|
||||
public observateurCase(int ligne0, int collonne0, Case[][] tableau0, plateau plat0){
|
||||
this.ligne=ligne0;
|
||||
this.collonne=collonne0;
|
||||
this.tableau=tableau0;
|
||||
this.tabScore=tabScore0;
|
||||
this.plat=plat0;
|
||||
}
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent evenement){
|
||||
//nous testons si le joueur a gagner/perdu
|
||||
//si perdu
|
||||
if(plateau.etatDeVictoire(this.tableau)==-1){
|
||||
if(plat.etatDeVictoire()==-1){
|
||||
plateau.removeListener(this.tableau);
|
||||
for(int i=0;i<this.tableau.length;i++){
|
||||
for(int t=0;t<this.tableau[i].length;t++){
|
||||
@ -28,19 +27,17 @@ public class observateurCase implements MouseListener{
|
||||
this.tableau[i][t].repaint();
|
||||
}
|
||||
}
|
||||
for(int i=0; i<tabScore.length; i++){
|
||||
tabScore[i].setChoix(5);
|
||||
}
|
||||
plat.perdu();
|
||||
plat.paintLogo();
|
||||
}
|
||||
//si gagner
|
||||
if(plateau.etatDeVictoire(this.tableau)==1){
|
||||
if(plat.etatDeVictoire()==1){
|
||||
plateau.removeListener(this.tableau);
|
||||
for(int i=0; i<tabScore.length; i++){
|
||||
tabScore[i].setChoix(6);
|
||||
}
|
||||
plat.gagner();
|
||||
plat.paintLogo();
|
||||
}
|
||||
//si on clique gauche
|
||||
if(evenement.getButton() == MouseEvent.BUTTON1){
|
||||
if(evenement.getButton() == MouseEvent.BUTTON1 && plat.etatDeVictoire()==0){
|
||||
//si la case n'est pas suspecter(d'etre une bombe ou je sais pas) et que elle n'est pas visible
|
||||
if(this.tableau[this.ligne][this.collonne].getSuspition()==false && this.tableau[this.ligne][this.collonne].getVisibiliter()==false){
|
||||
//nous la rendons visible et la reafichons
|
||||
@ -53,20 +50,18 @@ public class observateurCase implements MouseListener{
|
||||
}
|
||||
}
|
||||
//si clique droit
|
||||
if(evenement.getButton() == MouseEvent.BUTTON3){
|
||||
//nous modifions la suspitions de la case et la reafichons
|
||||
if(evenement.getButton() == MouseEvent.BUTTON3 && plat.etatDeVictoire()==0){
|
||||
//nous modifions la suspitions de la case et la reafichons si la case n'est pas visible
|
||||
if(this.tableau[this.ligne][this.collonne].getVisibiliter()==false){
|
||||
this.tableau[this.ligne][this.collonne].suspition();
|
||||
this.tableau[this.ligne][this.collonne].repaint();
|
||||
}
|
||||
//nous testons si le joeur a gagner/perdu
|
||||
if(this.tableau[this.ligne][this.collonne].getSuspition2()==true){
|
||||
for(int i=0; i<tabScore.length; i++){
|
||||
tabScore[i].setScore(tabScore[i].getScore()-1);
|
||||
}
|
||||
plat.setScore(-1);
|
||||
}
|
||||
if(this.tableau[this.ligne][this.collonne].getSuspition2()==false && this.tableau[this.ligne][this.collonne].getSuspition()==true){
|
||||
for(int i=0; i<tabScore.length; i++){
|
||||
tabScore[i].setScore(tabScore[i].getScore()+1);
|
||||
}
|
||||
plat.setScore(+1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
@ -3,15 +3,25 @@ import java.awt.event.*;
|
||||
import javax.swing.*;
|
||||
|
||||
public class observateurSAV implements MouseListener{
|
||||
private JFrame fenetre;
|
||||
private plateau plat;
|
||||
private paintMenuJeu button;
|
||||
public observateurSAV(paintMenuJeu button0, JFrame fenetre0){
|
||||
private boolean fonction;
|
||||
public observateurSAV(paintMenuJeu button0, plateau plat0){
|
||||
this.button=button0;
|
||||
this.fenetre=fenetre0;
|
||||
this.plat=plat0;
|
||||
this.fonction=false;
|
||||
}
|
||||
public void setFonction(boolean fonction0){
|
||||
this.fonction=fonction0;
|
||||
}
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent evenement){
|
||||
this.fenetre.dispose();
|
||||
if(this.fonction==false){
|
||||
plat.getFenetre().dispose();
|
||||
}
|
||||
if(this.fonction==true){
|
||||
plateau nouvellePartie= new plateau(plat.getFenetre(), plat.getLigne(), plat.getCollonne(), plat.getBombe());
|
||||
}
|
||||
}
|
||||
@Override // un bouton cliqué
|
||||
public void mouseEntered(MouseEvent evenement){
|
||||
|
Binary file not shown.
@ -5,7 +5,7 @@ import javax.swing.JComponent;
|
||||
public class paintMenuJeu extends JComponent{
|
||||
private int choix;
|
||||
private int score;
|
||||
private Image un, deux, trois, quatre, cinq, six, sept, huit, neuf, zero, err, sav, lose, win;
|
||||
private Image un, deux, trois, quatre, cinq, six, sept, huit, neuf, zero, err, sav, lose, win, replay;
|
||||
private boolean survol;
|
||||
public paintMenuJeu(int choix0, int score0){
|
||||
this.choix=choix0;
|
||||
@ -24,6 +24,7 @@ public class paintMenuJeu extends JComponent{
|
||||
this.sav=Toolkit.getDefaultToolkit().getImage("./IMAGE/sav.png");
|
||||
this.lose=Toolkit.getDefaultToolkit().getImage("./IMAGE/lose.png");
|
||||
this.win=Toolkit.getDefaultToolkit().getImage("./IMAGE/win.png");
|
||||
this.replay=Toolkit.getDefaultToolkit().getImage("./IMAGE/replay.png");
|
||||
this.survol=false;
|
||||
}
|
||||
public void setChoix(int choix0){
|
||||
@ -89,6 +90,13 @@ public class paintMenuJeu extends JComponent{
|
||||
if(this.choix==6){
|
||||
secondPinceau.drawImage(this.win, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
||||
}
|
||||
if(this.choix==7){
|
||||
if(this.survol==true){
|
||||
secondPinceau.setColor(new Color(0,255,0));
|
||||
secondPinceau.fillRect(0, 0, this.getWidth(), this.getHeight());
|
||||
}
|
||||
secondPinceau.drawImage(this.replay, this.getWidth()/6, this.getHeight()/6, this.getWidth()/6*4, this.getHeight()/6*4 ,this);
|
||||
}
|
||||
}
|
||||
private void paintNombre(Graphics secondPinceau, int nombre){
|
||||
if(this.score>=0){
|
||||
|
Binary file not shown.
@ -5,21 +5,101 @@
|
||||
|
||||
import java.util.*;
|
||||
import java.awt.event.*;
|
||||
import java.awt.*;
|
||||
import javax.swing.*;
|
||||
|
||||
public class plateau{
|
||||
private paintMenuJeu logo;
|
||||
private JFrame fenetre;
|
||||
private observateurSAV observateur;
|
||||
private int ligne, collonne, bombe;
|
||||
private paintMenuJeu[] tabScore= new paintMenuJeu[3];
|
||||
private Case[][] tableau;
|
||||
public plateau(JFrame fenetre0, int ligne0, int collonne0, int bombe0){
|
||||
this.fenetre=fenetre0;
|
||||
this.ligne=ligne0;
|
||||
this.collonne=collonne0;
|
||||
this.bombe=bombe0;
|
||||
this.tableau=new Case[ligne][collonne];
|
||||
this.fenetre.dispose();
|
||||
this.fenetre=new JFrame("démineur");
|
||||
GridLayout grille = new GridLayout(ligne+1,collonne);
|
||||
for(int i=0; i<collonne; i++){
|
||||
paintMenuJeu menu= new paintMenuJeu(0, bombe);
|
||||
menu.setPreferredSize(new Dimension(100,100));
|
||||
if(i==1){
|
||||
this.tabScore[0]=menu;
|
||||
menu.setChoix(1);
|
||||
}
|
||||
if(i==2){
|
||||
this.tabScore[1]=menu;
|
||||
menu.setChoix(2);
|
||||
}
|
||||
if(i==3){
|
||||
this.tabScore[2]=menu;
|
||||
menu.setChoix(3);
|
||||
}
|
||||
if(i==collonne-1){
|
||||
menu.setChoix(4);
|
||||
this.setLogo(menu);
|
||||
observateurSAV observateur=new observateurSAV(menu, this);
|
||||
menu.addMouseListener(observateur);
|
||||
this.setObservateur(observateur);
|
||||
}
|
||||
fenetre.add(menu);
|
||||
}
|
||||
fenetre.setLayout(grille);
|
||||
// l'application ne se fermera que si on clique sur
|
||||
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
fenetre.setVisible(true);
|
||||
// nous creons le tableau de Case qui représente l'etat du jeu
|
||||
// on ajoute a la fenetre toute les case (ligne*collonne)
|
||||
for(int i=0; i<ligne; i++){
|
||||
for(int t=0; t<collonne; t++){
|
||||
this.tableau[i][t]= new Case();
|
||||
this.tableau[i][t].setPreferredSize(new Dimension(50,50));
|
||||
//nous ajoutons aussi a chaque case son observateur de case
|
||||
this.tableau[i][t].addMouseListener(new observateurCase(i, t, this.tableau, this));
|
||||
fenetre.add(this.tableau[i][t]);
|
||||
}
|
||||
}
|
||||
//nous disposons les bombe dans le jeu
|
||||
this.setAllBombe();
|
||||
//maitenant que les bombe sont mise nous pouvons modifier le nombre de voisin des cases
|
||||
this.setAllVoisin();
|
||||
this.fenetre.pack();
|
||||
}
|
||||
public void setLogo(paintMenuJeu logo0){
|
||||
this.logo=logo0;
|
||||
}
|
||||
public void setObservateur(observateurSAV observateur0){
|
||||
this.observateur=observateur0;
|
||||
}
|
||||
public int getLigne(){
|
||||
return this.ligne;
|
||||
}
|
||||
public int getCollonne(){
|
||||
return this.collonne;
|
||||
}
|
||||
public int getBombe(){
|
||||
return this.bombe;
|
||||
}
|
||||
public JFrame getFenetre(){
|
||||
return this.fenetre;
|
||||
}
|
||||
//-------------------------Fonction plaçant les bombes aléatoirement------------------------
|
||||
|
||||
public static void setAllBombe(int nombre, int ligne, int collonne, Case[][] tableau0){
|
||||
private void setAllBombe(){
|
||||
Random rand = new Random();
|
||||
//on répète le nombre de fois le nombre de bombe a placer
|
||||
for(int i=0; i<nombre; i++){
|
||||
for(int i=0; i<this.bombe; i++){
|
||||
//on genere 2 chiffre aléatoire(ligne et collonne)
|
||||
int x=rand.nextInt(ligne);
|
||||
int y=rand.nextInt(collonne);
|
||||
int x=rand.nextInt(this.ligne);
|
||||
int y=rand.nextInt(this.collonne);
|
||||
//si il n'y a pas de bombe ici
|
||||
if(tableau0[x][y].getBombe()==false){
|
||||
if(this.tableau[x][y].getBombe()==false){
|
||||
//on en place une
|
||||
tableau0[x][y].setBombe();
|
||||
this.tableau[x][y].setBombe();
|
||||
}else{
|
||||
//autrement nous recomencerons 1 fois de plus le tirage pour ne pas modifier le nombre de bombe
|
||||
i--;
|
||||
@ -28,79 +108,79 @@ public class plateau{
|
||||
}
|
||||
//-------------------------Fonction mettant le nombre de bombe voisin a chaque Case------------------
|
||||
|
||||
public static void setAllVoisin(Case[][] tableau0){
|
||||
public void setAllVoisin(){
|
||||
//nous parcourons le tableau du jeu
|
||||
for(int i=0; i<tableau0.length; i++){
|
||||
for(int t=0; t<tableau0[i].length; t++){
|
||||
for(int i=0; i<this.tableau.length; i++){
|
||||
for(int t=0; t<this.tableau[i].length; t++){
|
||||
int voisin=0;
|
||||
//nous regardons dans les cases adjacentes(si elles existe) si elle sont des bombes
|
||||
if(i>0){
|
||||
if(tableau0[i-1][t].getBombe()==true){
|
||||
if(this.tableau[i-1][t].getBombe()==true){
|
||||
//si elle le sont alors nous augmentons le nombre de voisin
|
||||
voisin++;
|
||||
}
|
||||
if(t>0){
|
||||
if(tableau0[i-1][t-1].getBombe()==true){
|
||||
if(this.tableau[i-1][t-1].getBombe()==true){
|
||||
voisin++;
|
||||
}
|
||||
}
|
||||
if(t<tableau0[i].length-1){
|
||||
if(tableau0[i-1][t+1].getBombe()==true){
|
||||
if(t<this.tableau[i].length-1){
|
||||
if(this.tableau[i-1][t+1].getBombe()==true){
|
||||
voisin++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(i<tableau0.length-1){
|
||||
if(tableau0[i+1][t].getBombe()==true){
|
||||
if(i<this.tableau.length-1){
|
||||
if(this.tableau[i+1][t].getBombe()==true){
|
||||
voisin++;
|
||||
}
|
||||
if(t>0){
|
||||
if(tableau0[i+1][t-1].getBombe()==true){
|
||||
if(this.tableau[i+1][t-1].getBombe()==true){
|
||||
voisin++;
|
||||
}
|
||||
}
|
||||
if(t<tableau0[i].length-1){
|
||||
if(tableau0[i+1][t+1].getBombe()==true){
|
||||
if(t<this.tableau[i].length-1){
|
||||
if(this.tableau[i+1][t+1].getBombe()==true){
|
||||
voisin++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(t>0){
|
||||
if(tableau0[i][t-1].getBombe()==true){
|
||||
if(this.tableau[i][t-1].getBombe()==true){
|
||||
voisin++;
|
||||
}
|
||||
}
|
||||
if(t<tableau0[i].length-1){
|
||||
if(tableau0[i][t+1].getBombe()==true){
|
||||
if(t<this.tableau[i].length-1){
|
||||
if(this.tableau[i][t+1].getBombe()==true){
|
||||
voisin++;
|
||||
}
|
||||
}
|
||||
//finalement nous mettons pour cette case sont nombre de voisin
|
||||
tableau0[i][t].setVoisin(voisin);
|
||||
this.tableau[i][t].setVoisin(voisin);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------Fonction qui verifie l'etat de jeu(perdu, gagner)------------------------
|
||||
|
||||
public static int etatDeVictoire(Case[][] tableau0){
|
||||
public int etatDeVictoire(){
|
||||
//variable pour une condition
|
||||
int condition=0;
|
||||
//nous parcourons le tableau du jeu
|
||||
for(int i=0; i<tableau0.length; i++){
|
||||
for(int t=0; t<tableau0[i].length; t++){
|
||||
for(int i=0; i<this.tableau.length; i++){
|
||||
for(int t=0; t<this.tableau[i].length; t++){
|
||||
//si une case n'est pas visible mais que ce n'est pas une bombe
|
||||
if(tableau0[i][t].getVisibiliter()==false && tableau0[i][t].getBombe()==false){
|
||||
if(this.tableau[i][t].getVisibiliter()==false && this.tableau[i][t].getBombe()==false){
|
||||
//nous augmentons la conditions pour montrer que la partie est toujour en cours
|
||||
condition++;
|
||||
}
|
||||
//si une bombe est visible
|
||||
if(tableau0[i][t].getVisibiliter()==true && tableau0[i][t].getBombe()==true){
|
||||
if(this.tableau[i][t].getVisibiliter()==true && this.tableau[i][t].getBombe()==true){
|
||||
//on retourne une valeur représentant la défaite: -1
|
||||
return -1;
|
||||
}
|
||||
//si une bombe n'est pas susposer comme tel
|
||||
if(tableau0[i][t].getSuspition2()==false && tableau0[i][t].getBombe()==true){
|
||||
if(this.tableau[i][t].getSuspition2()==false && this.tableau[i][t].getBombe()==true){
|
||||
//nous augmentons la conditions pour montrer que la partie n'est pas fini
|
||||
condition++;
|
||||
}
|
||||
@ -131,4 +211,23 @@ public class plateau{
|
||||
}
|
||||
}
|
||||
}
|
||||
public void perdu(){
|
||||
for(int i=0; i<tabScore.length; i++){
|
||||
this.tabScore[i].setChoix(5);
|
||||
}
|
||||
}
|
||||
public void gagner(){
|
||||
for(int i=0; i<tabScore.length; i++){
|
||||
this.tabScore[i].setChoix(6);
|
||||
}
|
||||
}
|
||||
public void setScore(int n){
|
||||
for(int i=0; i<tabScore.length; i++){
|
||||
tabScore[i].setScore(tabScore[i].getScore()+n);
|
||||
}
|
||||
}
|
||||
public void paintLogo(){
|
||||
this.logo.setChoix(7);
|
||||
this.observateur.setFonction(true);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user