From 5c20b8016736c8b4c0beeb3feb63388114ca7d0b Mon Sep 17 00:00:00 2001 From: fauvet Date: Wed, 26 Apr 2023 10:54:36 +0200 Subject: [PATCH] Enregistrement des grille bon pour un type --- Ecriture.java | 62 +++++++++++++-------------- FenetreImpGrille.java | 8 ++-- GestionExporter.java | 6 ++- Lecture.java | 17 ++++---- Makefile | 9 +++- PreEcriture.java | 99 ++++++++++++++++++++++++++++++++++++++++++- importer.java | 2 +- outils.java | 59 +++++++++++++++++++++++++- 8 files changed, 213 insertions(+), 49 deletions(-) diff --git a/Ecriture.java b/Ecriture.java index 8aaa703..4d7d65f 100644 --- a/Ecriture.java +++ b/Ecriture.java @@ -1,39 +1,37 @@ -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -import javax.swing.JFileChooser; -import javax.swing.JOptionPane; -import javax.swing.filechooser.FileNameExtensionFilter; +import java.io.*; public class Ecriture { + private byte[] tabHeader; + private String[] tabOffSet; + private String filePath; - public static void main(String[] args) { - Ecriture enregistreur = new Ecriture(); - enregistreur.enregistrerFichier(); - } - - public void enregistrerFichier() { - JFileChooser chooser = new JFileChooser(); - FileNameExtensionFilter filter = new FileNameExtensionFilter( - "Fichiers .lab", "lab"); - chooser.setFileFilter(filter); - int returnVal = chooser.showSaveDialog(null); - if(returnVal == JFileChooser.APPROVE_OPTION) { - String nomFichier = chooser.getSelectedFile().getName(); - if(!nomFichier.endsWith(".lab")) { - nomFichier += ".lab"; + public Ecriture(byte[] tabBytes, String[] tabOctetsBinaires, String chemin) { + this.tabHeader = tabBytes; + this.tabOffSet = tabOctetsBinaires; + this.filePath = chemin; + + FileOutputStream fichierSortie = null; + try { + fichierSortie = new FileOutputStream(this.filePath); + + // Ecriture du tableau de bytes dans le fichier + fichierSortie.write(tabBytes); + + // Ecriture du tableau d'octets binaires dans le fichier + for (String flags : this.tabOffSet) { + fichierSortie.write((byte) Integer.parseInt(flags, 2)); } - String contenu = "Contenu du fichier .lab"; - File fichier = chooser.getSelectedFile(); - try { - BufferedWriter writer = new BufferedWriter(new FileWriter(fichier)); - writer.write(contenu); - writer.close(); - JOptionPane.showMessageDialog(null, "Le fichier a été enregistré avec succès"); - } catch (IOException e) { - JOptionPane.showMessageDialog(null, "Une erreur est survenue lors de l'enregistrement du fichier"); + + } catch (IOException e) { + e.printStackTrace(); + } finally { + // Fermeture du fichier + if (fichierSortie != null) { + try { + fichierSortie.close(); + } catch (IOException e) { + e.printStackTrace(); + } } } } diff --git a/FenetreImpGrille.java b/FenetreImpGrille.java index d340d4a..18cff12 100644 --- a/FenetreImpGrille.java +++ b/FenetreImpGrille.java @@ -12,12 +12,11 @@ public class FenetreImpGrille extends Fenetre { super(); } - public void ImporterGrille(int taille, int Lentre, int Centre, int Lortie, int Cortie, int[] un_tab){ + public void ImporterGrille(int taille, int Lentre, int Centre, int Lortie, int Cortie, int[] tabGrille){ /* ================================================================ Déclaration des variables ============================================================================= */ - - int compteur=0; int[][] ce_double_tab = new int[taille][taille]; this.grille = new boolean[taille][taille]; + //System.out.println("LA TAILLE DE LA GRRILLE VAUT : "+tabGrille.length); /* =============================================================== Gestion des paramètres de la fenètre ========================================================================== */ /*Création de la fenètre */ @@ -28,9 +27,10 @@ public class FenetreImpGrille extends Fenetre { /* ================================================================================================================================================================ */ /* remplissage du tab 1 */ + int compteur=0; for(int i=0; i> 1; } + //outils.printInt(outils.reverse(ce_tableau_temp), 8); - ce_tab_to_return = ToolBox.concatenate(ce_tab_to_return, ToolBox.reverse(ce_tableau_temp)); + ce_tab_to_return = outils.concatenate(ce_tab_to_return, outils.reverse(ce_tableau_temp)); } /* =================================================================================================================================== */ diff --git a/Makefile b/Makefile index 81cd5f9..fe49310 100644 --- a/Makefile +++ b/Makefile @@ -73,9 +73,16 @@ Affichage.class : Affichage.java outils.class Exporter.class : Exporter.java GestionExporter.class ${JC} ${JCFLAGS} Exporter.java -GestionExporter.class : GestionExporter.java +GestionExporter.class : GestionExporter.java PreEcriture.class ${JC} ${JCFLAGS} GestionExporter.java +PreEcriture.class : PreEcriture.java Ecriture.class + ${JC} ${JCFLAGS} PreEcriture.java + +Ecriture.class : Ecriture.java + ${JC} ${JCFLAGS} Ecriture.java + + # ================================ ### REGLES OPTIONNELLES ### diff --git a/PreEcriture.java b/PreEcriture.java index 8107bd2..4d8fd51 100644 --- a/PreEcriture.java +++ b/PreEcriture.java @@ -1,3 +1,100 @@ +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + +import javax.swing.JFileChooser; +import javax.swing.JOptionPane; +import javax.swing.filechooser.FileNameExtensionFilter; + public class PreEcriture { - public PreEcriture(){} + private int cetteTaille; + private String path; + private int ceCompteur; + private int octetRemaining; + + private boolean[][] cetteGrille; + private Cellules[][] grilleCellules; + + private int[] resultat; + private String[] tabTemp; + private byte[] resultatByte; + private byte[] resultatOffsetByte; + + + public PreEcriture(boolean[][] uneGrille, Cellules[][] uneGrilleCell , int uneTaille){ + this.cetteTaille = uneTaille; + this.cetteGrille = uneGrille; + this.grilleCellules = uneGrilleCell; + + /* ======================================== Confection du header ============================================== */ + + this.resultat = new int[5]; + this.resultatByte = new byte[5]; + int[] tabEntrortie = new int[4]; + + tabEntrortie=outils.ParcoursCell(this.grilleCellules, this.cetteTaille); + + this.resultat[0]=this.cetteTaille; + this.resultat[1]=tabEntrortie[0]; + this.resultat[2]=tabEntrortie[1]; + this.resultat[3]=tabEntrortie[2]; + this.resultat[4]=tabEntrortie[3]; + this.resultatByte = outils.ConvertToByte(this.resultat); + + /* ====================================== Confection de l'Offset ============================================ */ + + 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.ceCompteur = (this.cetteTaille*this.cetteTaille)/8; + this.octetRemaining = this.cetteTaille*this.cetteTaille; + } else if((this.cetteTaille*this.cetteTaille)%8 > 0){ + 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; + } + + String tempString = ""; + boolean[] tabHorizontal = new boolean[this.cetteTaille*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 + int compteur1=0; + for(boolean cetteIteration : tabHorizontal){ + if(cetteIteration==true){ + tempString = tempString + "0"; + } else if(cetteIteration==false){ + tempString = tempString + "1"; + } + if(tempString.length()==8 || this.octetRemaining<8){ + tabTemp[compteur1] = tempString; + + tempString=""; + compteur1++; + this.octetRemaining = this.octetRemaining - 8; + } + } + + this.path = this.CreateFichier(); + Ecriture stylo = new Ecriture(this.resultatByte, this.tabTemp, this.path); + } + + public String CreateFichier() { + JFileChooser chooser = new JFileChooser(); + FileNameExtensionFilter filter = new FileNameExtensionFilter("Fichiers .lab", "lab"); + chooser.setFileFilter(filter); + int returnVal = chooser.showSaveDialog(null); + 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(); + return fichier.getAbsolutePath(); + } + return null; + } } diff --git a/importer.java b/importer.java index 994e49a..f42076a 100644 --- a/importer.java +++ b/importer.java @@ -19,7 +19,7 @@ public class Importer implements ActionListener { public void actionPerformed(ActionEvent e){ this.cet_event=e.getActionCommand(); if(cet_event.equals(this.cette_option)){ - System.out.println("Importation de la grille"); + //System.out.println("Importation de la grille"); /*cherche le chemin du fichier */ FileImport un_test = new FileImport(); diff --git a/outils.java b/outils.java index c4498f1..4fee43e 100644 --- a/outils.java +++ b/outils.java @@ -1,4 +1,11 @@ +import javax.swing.plaf.metal.OceanTheme; + public class outils { + public static final int COULOIR=0; + public static final int MUR=1; + public static final int ENTREE=2; + public static final int SORTIE=3; + protected outils(){ } @@ -33,7 +40,7 @@ public class outils { return tableau_temp; } - public static void PrintGrille(boolean[][] leTableau, int saTaille){ + public static void PrintGrilleBool(boolean[][] leTableau, int saTaille){ for(int i=0; i