réparation Vide Grille + création et enregistrement de grille

This commit is contained in:
fauvet 2023-04-26 13:13:15 +02:00
parent 5c20b80167
commit 5fee4722cf
11 changed files with 34 additions and 264 deletions

View File

@ -1,9 +1,4 @@
public class Affichage { public class Affichage {
public static final int COULOIR=0;
public static final int MUR=1;
public static final int ENTREE=2;
public static final int SORTIE=3;
public static final boolean LIBRE = true; public static final boolean LIBRE = true;
public static final boolean OCCUPE = false; public static final boolean OCCUPE = false;
@ -40,8 +35,8 @@ public class Affichage {
this.caseEntrortie[1]=0; this.caseEntrortie[1]=0;
} }
this.caseEntrortie[0]=1; this.caseEntrortie[0]=1;
this.cetteCellules.setType(ENTREE); this.cetteCellules.setType(Cellules.ENTREE);
this.cetteCellules.peindre(ENTREE); this.cetteCellules.peindre(Cellules.ENTREE);
} else if(radio3Selected==true && this.caseEntrortie[1]==0){ } else if(radio3Selected==true && this.caseEntrortie[1]==0){
if(this.caseEntrortie[0]==1){ if(this.caseEntrortie[0]==1){
this.caseEntrortie[0]=0; this.caseEntrortie[0]=0;
@ -49,24 +44,24 @@ public class Affichage {
this.caseEntrortie[1]=0; this.caseEntrortie[1]=0;
} }
this.caseEntrortie[1]=1; this.caseEntrortie[1]=1;
this.cetteCellules.setType(SORTIE); this.cetteCellules.setType(Cellules.SORTIE);
this.cetteCellules.peindre(SORTIE); this.cetteCellules.peindre(Cellules.SORTIE);
} else if(radio1Selected==true && this.cetEtat==true){ } else if(radio1Selected==true && this.cetEtat==true){
if(this.caseEntrortie[0]==1){ if(this.caseEntrortie[0]==1){
this.caseEntrortie[0]=0; this.caseEntrortie[0]=0;
} else if(this.caseEntrortie[1]==1){ } else if(this.caseEntrortie[1]==1){
this.caseEntrortie[1]=0; this.caseEntrortie[1]=0;
} }
this.cetteCellules.setType(COULOIR); this.cetteCellules.setType(Cellules.COULOIR);
this.cetteCellules.peindre(COULOIR); this.cetteCellules.peindre(Cellules.COULOIR);
} else if(radio1Selected==true && this.cetEtat==OCCUPE){ } else if(radio1Selected==true && this.cetEtat==OCCUPE){
if(this.caseEntrortie[0]==1){ if(this.caseEntrortie[0]==1){
this.caseEntrortie[0]=0; this.caseEntrortie[0]=0;
} else if(this.caseEntrortie[1]==1){ } else if(this.caseEntrortie[1]==1){
this.caseEntrortie[1]=0; this.caseEntrortie[1]=0;
} }
this.cetteCellules.setType(MUR); this.cetteCellules.setType(Cellules.MUR);
this.cetteCellules.peindre(MUR); this.cetteCellules.peindre(Cellules.MUR);
} }
} }
} }

View File

@ -15,7 +15,7 @@ public class Ecriture {
fichierSortie = new FileOutputStream(this.filePath); fichierSortie = new FileOutputStream(this.filePath);
// Ecriture du tableau de bytes dans le fichier // Ecriture du tableau de bytes dans le fichier
fichierSortie.write(tabBytes); fichierSortie.write(this.tabHeader);
// Ecriture du tableau d'octets binaires dans le fichier // Ecriture du tableau d'octets binaires dans le fichier
for (String flags : this.tabOffSet) { for (String flags : this.tabOffSet) {

View File

@ -2,11 +2,6 @@ import java.awt.*;
import java.util.Random; import java.util.Random;
public class FenetreRndmGrille extends Fenetre{ public class FenetreRndmGrille extends Fenetre{
public static final int COULOIR=0;
public static final int MUR=1;
public static final int ENTREE=2;
public static final int SORTIE=3;
public static final int RANDOM=1; public static final int RANDOM=1;
private int taille; private int taille;
@ -66,28 +61,28 @@ public class FenetreRndmGrille extends Fenetre{
if(compteur == ValeurEntre) if(compteur == ValeurEntre)
{ {
Cellules cellules = new Cellules(i,j, ENTREE); Cellules cellules = new Cellules(i,j, Cellules.ENTREE);
this.fenetre.add(cellules); this.fenetre.add(cellules);
cellules.addMouseListener(modif); cellules.addMouseListener(modif);
grilleCellules[i][j] = cellules; grilleCellules[i][j] = cellules;
} }
else if(compteur == ValeurSortie) else if(compteur == ValeurSortie)
{ {
Cellules cellules = new Cellules(i, j, SORTIE); Cellules cellules = new Cellules(i, j, Cellules.SORTIE);
this.fenetre.add(cellules); this.fenetre.add(cellules);
cellules.addMouseListener(modif); cellules.addMouseListener(modif);
grilleCellules[i][j] = cellules; grilleCellules[i][j] = cellules;
} }
else if(grille[i][j] == true) else if(grille[i][j] == true)
{ {
Cellules cellules = new Cellules(i, j, COULOIR); Cellules cellules = new Cellules(i, j, Cellules.COULOIR);
this.fenetre.add(cellules); this.fenetre.add(cellules);
cellules.addMouseListener(modif); cellules.addMouseListener(modif);
grilleCellules[i][j] = cellules; grilleCellules[i][j] = cellules;
} }
else else
{ {
Cellules cellules = new Cellules(i, j, MUR); Cellules cellules = new Cellules(i, j, Cellules.MUR);
this.fenetre.add(cellules); this.fenetre.add(cellules);
cellules.addMouseListener(modif); cellules.addMouseListener(modif);
grilleCellules[i][j] = cellules; grilleCellules[i][j] = cellules;

View File

@ -1,22 +1,21 @@
import java.awt.*; import java.awt.*;
public class FenetreVideGrille extends Fenetre{ public class FenetreVideGrille extends Fenetre{
public static final int COULOIR=0;
public static final int MUR=1;
public static final int ENTREE=2;
public static final int SORTIE=3;
private int taille; private int taille;
private int[] tabCouleur;
private boolean[][] grille; private boolean[][] grille;
private Cellules[][] grilleCellules; private Cellules[][] grilleCellules;
private int[] tabCouleur;
private Modifications modif;
public FenetreVideGrille(int taille){ public FenetreVideGrille(int taille){
super(); super();
this.taille = taille; this.taille = taille;
this.grille = new boolean[this.taille][this.taille]; this.grille = new boolean[this.taille][this.taille];
this.grilleCellules = new Cellules[this.taille][this.taille]; this.grilleCellules = new Cellules[this.taille][this.taille];
this.tabCouleur = new int[] {0, 0};
} }
public void videGrille(){ public void videGrille(){
@ -30,25 +29,22 @@ public class FenetreVideGrille extends Fenetre{
PanneauModification interfacePanel = new PanneauModification(this.grille, this.taille, this.grilleCellules, this.fenetre); PanneauModification interfacePanel = new PanneauModification(this.grille, this.taille, this.grilleCellules, this.fenetre);
interfacePanel.SetUp(); interfacePanel.SetUp();
/* =============================================================== */ /* ======= Valeurs aléatoire pour l'entre et la sortie ========== */
/* =============================================================== */
for(int i=0; i<taille; i++){ for(int i=0; i<taille; i++){
for(int j=0; j<taille; j++){ for(int j=0; j<taille; j++){
Modifications modif = new Modifications(interfacePanel, this.grille, this.tabCouleur);
grille[i][j] = true; grille[i][j] = true;
Cellules cellules = new Cellules(i, j, COULOIR);
this.modif = new Modifications(interfacePanel, grille,this.tabCouleur);
Cellules cellules = new Cellules(i,j, Cellules.COULOIR);
this.fenetre.add(cellules); this.fenetre.add(cellules);
cellules.addMouseListener(modif); cellules.addMouseListener(modif);
grilleCellules[i][j] = cellules;
this.tabCouleur = modif.getGateState(); this.tabCouleur = modif.getGateState();
} }
} }
this.fenetre.setVisible(true); this.fenetre.setVisible(true);
} }
} }

BIN
Grand.lab

Binary file not shown.

View File

@ -2,14 +2,10 @@ import java.awt.event.MouseEvent;
public class ModificationsTab { public class ModificationsTab {
// -------------------------------------------- // --------------------------------------------
public static final boolean LIBRE = true; public static final boolean LIBRE = true;
public static final boolean OCCUPE = false; public static final boolean OCCUPE = false;
public static final int COULOIR=0;
public static final int MUR=1;
public static final int ENTREE=2;
public static final int SORTIE=3;
// -------------------------------------------- // --------------------------------------------
private boolean[][] cetteGrille; private boolean[][] cetteGrille;
@ -36,9 +32,10 @@ public class ModificationsTab {
this.tabEtat = unTab; this.tabEtat = unTab;
/* ========================================= */ /* ========================================= */
boolean radio1Selected = this.cePanel.GetButtonBW().isSelected(); // MUR / COULOIR
boolean radio2Selected = this.cePanel.GetButtonE().isSelected(); // ENTREE boolean radio2Selected = this.cePanel.GetButtonE().isSelected(); // ENTREE
boolean radio3Selected = this.cePanel.GetButtonS().isSelected(); //SORTIE boolean radio3Selected = this.cePanel.GetButtonS().isSelected(); //SORTIE
/* ========================================= */ /* ========================================= */
if(this.cetteGrille[this.cetteLigne][this.cetteColone] == LIBRE && radio2Selected==false && radio3Selected==false ){ if(this.cetteGrille[this.cetteLigne][this.cetteColone] == LIBRE && radio2Selected==false && radio3Selected==false ){

View File

@ -1,16 +1,11 @@
import java.io.BufferedWriter;
import java.io.File; import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JFileChooser; import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.filechooser.FileNameExtensionFilter;
public class PreEcriture { public class PreEcriture {
private int cetteTaille; private int cetteTaille;
private String path; private String path;
private int ceCompteur;
private int octetRemaining; private int octetRemaining;
private boolean[][] cetteGrille; private boolean[][] cetteGrille;
@ -19,7 +14,6 @@ public class PreEcriture {
private int[] resultat; private int[] resultat;
private String[] tabTemp; private String[] tabTemp;
private byte[] resultatByte; private byte[] resultatByte;
private byte[] resultatOffsetByte;
public PreEcriture(boolean[][] uneGrille, Cellules[][] uneGrilleCell , int uneTaille){ public PreEcriture(boolean[][] uneGrille, Cellules[][] uneGrilleCell , int uneTaille){
@ -46,11 +40,9 @@ public class PreEcriture {
if((this.cetteTaille*this.cetteTaille)%8 == 0){ //définit les tailles s'il y a besoin d'un octet en plus ou pas if((this.cetteTaille*this.cetteTaille)%8 == 0){ //définit les tailles s'il y a besoin d'un octet en plus ou pas
this.tabTemp = new String[(this.cetteTaille*this.cetteTaille)/8]; this.tabTemp = new String[(this.cetteTaille*this.cetteTaille)/8];
this.ceCompteur = (this.cetteTaille*this.cetteTaille)/8;
this.octetRemaining = this.cetteTaille*this.cetteTaille; this.octetRemaining = this.cetteTaille*this.cetteTaille;
} else if((this.cetteTaille*this.cetteTaille)%8 > 0){ } else if((this.cetteTaille*this.cetteTaille)%8 > 0){
this.tabTemp = new String[(this.cetteTaille*this.cetteTaille)/8+1]; this.tabTemp = new String[(this.cetteTaille*this.cetteTaille)/8+1];
this.ceCompteur = ((this.cetteTaille*this.cetteTaille)/8)+1;
this.octetRemaining = (this.cetteTaille*this.cetteTaille)+(this.cetteTaille*this.cetteTaille)%8; this.octetRemaining = (this.cetteTaille*this.cetteTaille)+(this.cetteTaille*this.cetteTaille)%8;
} }
@ -58,8 +50,6 @@ public class PreEcriture {
boolean[] tabHorizontal = new boolean[this.cetteTaille*this.cetteTaille]; boolean[] tabHorizontal = new boolean[this.cetteTaille*this.cetteTaille];
tabHorizontal = outils.PutToVertical(this.cetteGrille, this.cetteTaille); tabHorizontal = outils.PutToVertical(this.cetteGrille, this.cetteTaille);
outils.printBool(tabHorizontal, this.cetteTaille);
// Transformation du tableau de boolean en un tableau de chaine de String qui stock des nombre sous formes de byte // Transformation du tableau de boolean en un tableau de chaine de String qui stock des nombre sous formes de byte
int compteur1=0; int compteur1=0;
for(boolean cetteIteration : tabHorizontal){ for(boolean cetteIteration : tabHorizontal){
@ -86,13 +76,12 @@ public class PreEcriture {
FileNameExtensionFilter filter = new FileNameExtensionFilter("Fichiers .lab", "lab"); FileNameExtensionFilter filter = new FileNameExtensionFilter("Fichiers .lab", "lab");
chooser.setFileFilter(filter); chooser.setFileFilter(filter);
int returnVal = chooser.showSaveDialog(null); int returnVal = chooser.showSaveDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION) { if (returnVal == JFileChooser.APPROVE_OPTION) {
String nomFichier = chooser.getSelectedFile().getName();
if(!nomFichier.endsWith(".lab")) {
nomFichier += ".lab";
}
String contenu = "Contenu du fichier .lab";
File fichier = chooser.getSelectedFile(); File fichier = chooser.getSelectedFile();
String nomFichier = fichier.getName();
if (!nomFichier.endsWith(".lab")) {
fichier = new File(fichier.getAbsolutePath() + ".lab");
}
return fichier.getAbsolutePath(); return fichier.getAbsolutePath();
} }
return null; return null;

118
SAVE.txt
View File

@ -1,118 +0,0 @@
import javax.swing.*;
import java.awt.*;
import java.util.Random;
import javax.swing.border.Border;
public class FenetreRndmGrille extends Fenetre{
private int[] tab_de_int;
private int taille;
private int ValeurEntre;
private int ValeurSortie;
private int[][] grille;
public FenetreRndmGrille(int taille){
super();
this.tab_de_int = new int[] {1, 1};
this.taille = taille;
this.grille = new int[this.taille][this.taille];
}
public void randomGrille(){
this.fenetre.setSize(600, 600);
this.fenetre.setLocation(450, 200);
GridLayout gestionnaire = new GridLayout(this.taille,this.taille);
this.fenetre.setLayout(gestionnaire);
OptionsFRG un_Test = new OptionsFRG(this);
un_Test.SetUp();
/* ======= Valeurs aléatoire pour l'entre et la sortie ========== */
Random rand = new Random();
this.ValeurEntre = rand.nextInt(this.taille*this.taille);
this.ValeurSortie = rand.nextInt(this.taille*this.taille);
if(this.ValeurSortie == this.ValeurEntre){
while(this.ValeurSortie == this.ValeurEntre){
this.ValeurSortie = rand.nextInt(this.taille*this.taille);
}
}
/* =============================================================== */
int compteur=0;
for(int i=0; i<taille; i++){
for(int j=0; j<taille; j++){
int nombreAleatoire = rand.nextInt(3); // génère un nombre entre 0 et 10
Cellules cellules = new Cellules(i, j);
if(compteur==this.ValeurEntre){
Border border = BorderFactory.createLineBorder(Color.BLACK, 1);
ce_panel.setBorder(border);
ce_panel.setBackground(Color.BLUE);
this.fenetre.add(ce_panel);
ModificationsFRG testee = new ModificationsFRG(un_Test, this.tab_de_int);
ce_panel.addMouseListener(testee);
this.tab_de_int=testee.getValues();
} else if(compteur==this.ValeurSortie){
Border border = BorderFactory.createLineBorder(Color.BLACK, 1);
ce_panel.setBorder(border);
ce_panel.setBackground(Color.RED);
this.fenetre.add(ce_panel);
ModificationsFRG testee = new ModificationsFRG(un_Test, this.tab_de_int);
ce_panel.addMouseListener(testee);
this.tab_de_int=testee.getValues();
} else if(nombreAleatoire == 0){
Border border = BorderFactory.createLineBorder(Color.BLACK, 1);
ce_panel.setBorder(border);
ce_panel.setBackground(Color.BLACK);
this.fenetre.add(ce_panel);
ModificationsFRG testee = new ModificationsFRG(un_Test, this.tab_de_int);
ce_panel.addMouseListener(testee);
this.tab_de_int=testee.getValues();
} else{
Border border = BorderFactory.createLineBorder(Color.BLACK, 1);
ce_panel.setBorder(border);
ce_panel.setBackground(Color.WHITE);
this.fenetre.add(ce_panel);
ModificationsFRG testee = new ModificationsFRG(un_Test, this.tab_de_int);
ce_panel.addMouseListener(testee);
this.tab_de_int=testee.getValues();
}
compteur++;
}
}
this.fenetre.setVisible(true);
}
public int[] get_info(){
int[] infos_grille = new int[5];
infos_grille[0] = this.taille;
infos_grille[1] = (this.ValeurEntre/this.taille);
infos_grille[2] = (this.ValeurEntre%this.taille);
infos_grille[3] = (this.ValeurSortie/this.taille);
infos_grille[4] = (this.ValeurSortie%this.taille);
return infos_grille;
}
public JPanel[][] getGrille(){
return this.TabDePanel;
}
}

View File

@ -1,82 +0,0 @@
import java.awt.event.*;
public class Modifications implements MouseListener {
// Def Constante
public static final int COULOIR=0;
public static final int MUR=1;
public static final int ENTREE=2;
public static final int SORTIE=3;
public static final boolean OCCUPE = false;
public static final boolean LIBRE = true;
// Def variable
private boolean[][] grilleTab ;
private int[] ceTab ;
private PanneauModification options;
private int cetteLigne = 0;
private int cetteColone = 0;
private int ceType = 0;
private int grilleType;
private int cellulesBleu = 0;
private int cellulesRouge = 0;
public Modifications(PanneauModification panneauModification, boolean[][] grilleTab, int[] unTab){
this.options = panneauModification;
this.grilleTab = grilleTab;
this.ceTab = unTab;
}
public void mouseClicked(MouseEvent e) {
Cellules notreCellule = (Cellules) e.getSource();
this.cetteLigne = notreCellule.getLigne();
this.cetteColone = notreCellule.getColone();
this.ceType = notreCellule.getType();
// Accéder aux boutons radios de l'objet Options
boolean radio1Selected = options.GetButtonBW().isSelected(); // MUR / COULOIR
boolean radio2Selected = options.GetButtonE().isSelected(); // ENTREE
boolean radio3Selected = options.GetButtonS().isSelected(); //SORTIE
if(this.grilleTab[this.cetteLigne][this.cetteColone] == false && this.ceType==MUR && radio1Selected==true){
this.grilleTab[this.cetteLigne][this.cetteColone] = LIBRE;
notreCellule.setType(COULOIR);
System.out.println("voici le type de la case : "+ notreCellule.getType());
} else if(this.grilleTab[this.cetteLigne][this.cetteColone] == true && this.ceType==COULOIR && radio1Selected==true){
this.grilleTab[this.cetteLigne][this.cetteColone] = OCCUPE;
notreCellule.setType(MUR);
} else if(radio2Selected==true && this.ceTab[0] == 0){
this.grilleTab[this.cetteLigne][this.cetteColone] = LIBRE;
notreCellule.setType(ENTREE);
this.ceTab[0] = 1;
} else if(radio3Selected==true && this.ceTab[1] == 0){
this.grilleTab[this.cetteLigne][this.cetteColone] = LIBRE;
notreCellule.setType(SORTIE);
this.ceTab[0] = 1;
} else if(this.ceTab[0] == 1 && this.ceType==ENTREE && radio1Selected==true){
this.ceTab[0] = 0;
} else if(this.ceTab[1] == 1 && this.ceType==SORTIE && radio1Selected==true){
this.ceTab[1] = 0;
}
System.out.println("etat de la case maintenant : "+this.grilleTab[this.cetteLigne][this.cetteColone]);
}
public int[] getValues(){
return this.ceTab;
}
// Les méthodes suivantes ne sont pas utilisées dans cet exemple, donc nous les laissons vides
public void mouseExited(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
}

View File

@ -1,5 +1,3 @@
import javax.swing.plaf.metal.OceanTheme;
public class outils { public class outils {
public static final int COULOIR=0; public static final int COULOIR=0;
public static final int MUR=1; public static final int MUR=1;

BIN
petit.lab

Binary file not shown.