entourage fonctionnel (décalage des lignes fixé)

This commit is contained in:
Haïssous Kayyissa 2022-04-29 12:01:51 +02:00
parent 64f3f55a97
commit 79df7ffb1a
4 changed files with 199 additions and 35 deletions

View File

@ -27,7 +27,6 @@ public class Case extends JComponent {
Color rose = new Color(236, 0, 140); Color rose = new Color(236, 0, 140);
this.panel.setBackground(rose); this.panel.setBackground(rose);
} else if (this.entourage>0){ } else if (this.entourage>0){
System.out.println(""+ this.entourage);
this.panel.add(new Chiffre(entourage,caseSize)); this.panel.add(new Chiffre(entourage,caseSize));
} }
} }

View File

@ -17,6 +17,5 @@ public class Chiffre extends JComponent {
Color jaune = new Color(236, 214, 0); Color jaune = new Color(236, 214, 0);
chiffre.setColor(jaune); chiffre.setColor(jaune);
chiffre.drawString(Integer.toString(this.entourage),caseSize.width*2/5,caseSize.height*3/5); chiffre.drawString(Integer.toString(this.entourage),caseSize.width*2/5,caseSize.height*3/5);
System.out.println(""+caseSize);
} }
} }

View File

@ -42,12 +42,6 @@ public class Grille extends JComponent {
} }
} }
} }
// Affichage console des emplacements des mines
for (int i=0;i<mines;i++){
System.out.println(""+caseMine[i]);
}
// On place maintenant les mines sur la plateau // On place maintenant les mines sur la plateau
boolean[] minee = new boolean[lignes*colonnes]; boolean[] minee = new boolean[lignes*colonnes];
for (int i=0; i<lignes*colonnes;i++){ for (int i=0; i<lignes*colonnes;i++){
@ -61,6 +55,176 @@ public class Grille extends JComponent {
// Connaître le nombre de mines autour de la case // Connaître le nombre de mines autour de la case
int[] entourage = new int[lignes*colonnes]; int[] entourage = new int[lignes*colonnes];
for (int i=0;i<lignes*colonnes;i++){ for (int i=0;i<lignes*colonnes;i++){
// Gestion des coins
// Coin supérieur droit
if (i==colonnes-1){
for (int j=0;j<mines;j++){
// Si une mine est à gauche
if (caseMine[j]==i-1){
entourage[i]+=1;
}
// Si une mine est en dessous
if (caseMine[j]==i+colonnes){
entourage[i]+=1;
}
// Si une mine est en dessous à gauche
if (caseMine[j]==i+colonnes-1){
entourage[i]+=1;
}
}
}
// Coin suppérieur gauche
else if (i==0){
for (int j=0;j<mines;j++){
// Si une mine est à droite
if (caseMine[j]==i+1){
entourage[i]+=1;
}
// Si une mine est en dessous
if (caseMine[j]==i+colonnes){
entourage[i]+=1;
}
// Si une mine est en dessous à droite
if (caseMine[j]==i+colonnes+1){
entourage[i]+=1;
}
}
}
// Coin inférieur droit
else if (i==lignes*colonnes-1){
for (int j=0;j<mines;j++){
// Si une mine est à gauche
if (caseMine[j]==i-1){
entourage[i]+=1;
}
// Si une mine est au dessus
if (caseMine[j]==i-colonnes){
entourage[i]+=1;
}
// Si une mine est au dessus à gauche
if (caseMine[j]==i-colonnes-1){
entourage[i]+=1;
}
}
}
// Coin inférieur gauche
else if (i==lignes*colonnes-colonnes){
for (int j=0;j<mines;j++){
// Si une mine est à droite
if (caseMine[j]==i+1){
entourage[i]+=1;
}
// Si une mine est au dessus
if (caseMine[j]==i-colonnes){
entourage[i]+=1;
}
// Si une mine est au dessus à droite
if (caseMine[j]==i-colonnes+1){
entourage[i]+=1;
}
}
}
// Si la mine est tout en haut
else if (i<colonnes){
for (int j=0;j<mines;j++){
// Si une mine est à droite
if (caseMine[j]==i+1){
entourage[i]+=1;
}
// Si une mine est à gauche
if (caseMine[j]==i-1){
entourage[i]+=1;
}
// Si une mine est en dessous
if (caseMine[j]==i+colonnes){
entourage[i]+=1;
}
// Si une mine est en dessous à droite
if (caseMine[j]==i+colonnes+1){
entourage[i]+=1;
}
// Si une mine est en dessous à gauche
if (caseMine[j]==i+colonnes-1){
entourage[i]+=1;
}
}
}
// Si la mine est tout en bas
else if (i>lignes*colonnes-colonnes){ // Vérifier la condition
for (int j=0;j<mines;j++){
// Si une mine est à droite
if (caseMine[j]==i+1){
entourage[i]+=1;
}
// Si une mine est à gauche
if (caseMine[j]==i-1){
entourage[i]+=1;
}
// Si une mine est au dessus
if (caseMine[j]==i-colonnes){
entourage[i]+=1;
}
// Si une mine est au dessus à droite
if (caseMine[j]==i-colonnes+1){
entourage[i]+=1;
}
// Si une mine est au dessus à gauche
if (caseMine[j]==i-colonnes-1){
entourage[i]+=1;
}
}
}
// Si la mine est tout à droite
else if (i%colonnes==colonnes-1){
for (int j=0;j<mines;j++){
// Si une mine est à gauche
if (caseMine[j]==i-1){
entourage[i]+=1;
}
// Si une mine est au dessus
if (caseMine[j]==i-colonnes){
entourage[i]+=1;
}
// Si une mine est au dessus à gauche
if (caseMine[j]==i-colonnes-1){
entourage[i]+=1;
}
// Si une mine est en dessous
if (caseMine[j]==i+colonnes){
entourage[i]+=1;
}
// Si une mine est en dessous à gauche
if (caseMine[j]==i+colonnes-1){
entourage[i]+=1;
}
}
}
// Si la mine est tout à gauche
else if (i%colonnes==0){
for (int j=0;j<mines;j++){
// Si une mine est à droite
if (caseMine[j]==i+1){
entourage[i]+=1;
}
// Si une mine est au dessus
if (caseMine[j]==i-colonnes){
entourage[i]+=1;
}
// Si une mine est au dessus à droite
if (caseMine[j]==i-colonnes+1){
entourage[i]+=1;
}
// Si une mine est en dessous
if (caseMine[j]==i+colonnes){
entourage[i]+=1;
}
// Si une mine est en dessous à droite
if (caseMine[j]==i+colonnes+1){
entourage[i]+=1;
}
}
} else {
for (int j=0;j<mines;j++){ for (int j=0;j<mines;j++){
// Si une mine est à droite // Si une mine est à droite
if (caseMine[j]==i+1){ if (caseMine[j]==i+1){
@ -96,7 +260,9 @@ public class Grille extends JComponent {
} }
} }
} }
}
// On place les cases à leur état actuel dans la grille
AffichePlateau(lignes*colonnes, caseSize, entourage, visible, minee); AffichePlateau(lignes*colonnes, caseSize, entourage, visible, minee);
} }

View File

@ -1,6 +1,6 @@
public class Test { public class Test {
public static void main(String[] args) { public static void main(String[] args) {
Grille grille=new Grille(20,25,30); Grille grille=new Grille(20,25,60);
new FrameJeu(grille, 15); new FrameJeu(grille, 15);
} }
} }