entourage case 0 visible
This commit is contained in:
parent
63642b7146
commit
bd8d725cd1
39
Case.java
39
Case.java
@ -33,20 +33,26 @@ public class Case extends JPanel {
|
||||
|
||||
// Méthode qui permet de montrer la case, et de la considérer comme déminée
|
||||
public void setVisible(){
|
||||
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) {
|
||||
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()));
|
||||
if (this.visible==false){
|
||||
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) {
|
||||
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()));
|
||||
}
|
||||
}
|
||||
// Mise à jour de l'affichage de la case
|
||||
this.updateUI();
|
||||
if (this.getEntourage() == 0) {
|
||||
this.grille.setEntourageVisible(this);
|
||||
}
|
||||
}
|
||||
// Mise à jour de l'affichage de la case
|
||||
this.updateUI();
|
||||
}
|
||||
|
||||
// Méthode permettant de dire si la case est cachée ou visible
|
||||
@ -69,10 +75,19 @@ public class Case extends JPanel {
|
||||
this.entourage=entourage;
|
||||
}
|
||||
|
||||
// Renvoi l'entourage de la case
|
||||
public int getEntourage(){
|
||||
return this.entourage;
|
||||
}
|
||||
|
||||
// Permet d'acceder à la grille sur laquelle est la case
|
||||
public Grille getGrille(){
|
||||
return this.grille;
|
||||
}
|
||||
|
||||
// Méthode pour savoir si le joueur pense que la case est minée
|
||||
public void setReperee(boolean reperee){
|
||||
this.reperee=reperee;
|
||||
this.add(new Etoile(this.getSize()), BorderLayout.CENTER);
|
||||
if ((reperee)&&(minee)){
|
||||
this.deminee=true;
|
||||
}
|
||||
|
62
Grille.java
62
Grille.java
@ -6,6 +6,8 @@ public class Grille extends JPanel {
|
||||
private EtatPartie banniere;
|
||||
private Dimension grilleSize=new Dimension(0,0);
|
||||
private Case[] plateau;
|
||||
private int lignes;
|
||||
private int colonnes;
|
||||
private int taille;
|
||||
private int mines;
|
||||
private int minesLeft;
|
||||
@ -20,6 +22,8 @@ public class Grille extends JPanel {
|
||||
GridLayout damier = new GridLayout(lignes,colonnes);
|
||||
this.setLayout(damier);
|
||||
this.setSize(grilleSize);
|
||||
this.lignes=lignes;
|
||||
this.colonnes=colonnes;
|
||||
this.taille=lignes*colonnes;
|
||||
this.mines=mines;
|
||||
this.banniere=banniere;
|
||||
@ -82,7 +86,7 @@ public class Grille extends JPanel {
|
||||
}
|
||||
}
|
||||
// Mine en bas à gauche
|
||||
if ((i!=taille-colonnes)&&(i%colonnes!=0)){
|
||||
if ((i<=taille-colonnes)&&(i%colonnes!=0)){
|
||||
for (int j=0;j<mines;j++){
|
||||
if (caseMine[j]==i+colonnes-1){
|
||||
entourage+=1;
|
||||
@ -160,4 +164,60 @@ public class Grille extends JPanel {
|
||||
}
|
||||
this.banniere.setMinesLeft(this.minesLeft);
|
||||
}
|
||||
|
||||
// Méthode pour rendre visibles les cases autour d'un 0
|
||||
public void setEntourageVisible(Case panel){
|
||||
for(int i=0; i<this.taille;i++){
|
||||
if (plateau[i]==panel){
|
||||
// Mine au dessus à droite
|
||||
if ((i>colonnes)&&(i%colonnes!=colonnes-1)){
|
||||
for (int j=0;j<mines;j++){
|
||||
plateau[i-colonnes+1].setVisible();
|
||||
}
|
||||
}
|
||||
// Mine au dessus à gauche
|
||||
if ((i>colonnes)&&(i%colonnes!=0)){
|
||||
for (int j=0;j<mines;j++){
|
||||
plateau[i-colonnes-1].setVisible();
|
||||
}
|
||||
}
|
||||
// Mine en dessous à droite
|
||||
if ((i<taille-colonnes)&&(i%colonnes!=colonnes-1)){
|
||||
for (int j=0;j<mines;j++){
|
||||
plateau[i+colonnes+1].setVisible();
|
||||
}
|
||||
}
|
||||
// Mine en bas à gauche
|
||||
if ((i<taille-colonnes)&&(i%colonnes!=0)){
|
||||
for (int j=0;j<mines;j++){
|
||||
plateau[i+colonnes-1].setVisible();
|
||||
}
|
||||
}
|
||||
// Mine au dessus
|
||||
if (i>colonnes){
|
||||
for (int j=0;j<mines;j++){
|
||||
plateau[i-colonnes].setVisible();
|
||||
}
|
||||
}
|
||||
// Mine en dessous
|
||||
if (i<taille-colonnes){
|
||||
for (int j=0;j<mines;j++){
|
||||
plateau[i+colonnes].setVisible();
|
||||
}
|
||||
}
|
||||
// Mine à droite
|
||||
if (i%colonnes!=colonnes-1){
|
||||
for (int j=0;j<mines;j++){
|
||||
plateau[i+1].setVisible();
|
||||
}
|
||||
}
|
||||
// Mine à gauche
|
||||
if (i%colonnes!=0){
|
||||
for (int j=0;j<mines;j++){
|
||||
plateau[i-1].setVisible();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,9 @@ public class ListenerCase implements MouseListener{
|
||||
// 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;
|
||||
}
|
||||
|
@ -17,6 +17,5 @@ public class MineLeft extends JComponent {
|
||||
chiffre.setFont(font);
|
||||
chiffre.setColor(new Color(0, 22, 236));
|
||||
chiffre.drawString(Integer.toString(this.minesLeft),banniereSize.width*1/5,banniereSize.height*2/3);
|
||||
System.out.println(this.getSize());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user