diff --git a/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/Coche.java b/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/Coche.java deleted file mode 100644 index e12b59e..0000000 --- a/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/Coche.java +++ /dev/null @@ -1,15 +0,0 @@ -import javax.swing.JCheckBox; - -public class Coche extends JCheckBox{ - - private Ingredient valeur; - - public Coche(Ingredient valeur){ - super(valeur.name()); - this.valeur = valeur; - } - - public Ingredient getValeur(){ - return this.valeur; - } -} \ No newline at end of file diff --git a/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementIngredient.class b/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementIngredient.class new file mode 100644 index 0000000..83dd040 Binary files /dev/null and b/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementIngredient.class differ diff --git a/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementIngredient.java b/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementIngredient.java index a879a93..11efaa2 100644 --- a/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementIngredient.java +++ b/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementIngredient.java @@ -1,21 +1,22 @@ import javax.swing.*; import java.awt.*; import java.awt.event.*; +import java.util.Deque; public class EvenementIngredient implements ItemListener{ - private PileIngredient historiqueChoix; + private Deque historiqueChoix; private JButton boutonRetour; - public EvenementIngredient(PileIngredient historiqueChoix, JButton boutonRetour){ + public EvenementIngredient(Deque historiqueChoix, JButton boutonRetour){ this.historiqueChoix = historiqueChoix; this.boutonRetour = boutonRetour; } @Override public void itemStateChanged(ItemEvent e){ - Coche coche = (Coche) e.getSource(); - this.historiqueChoix.push(coche.getValeur()); + JCheckBox coche = (JCheckBox) e.getSource(); + this.historiqueChoix.push(coche); this.boutonRetour.setEnabled(true); } } diff --git a/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementRetour.class b/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementRetour.class new file mode 100644 index 0000000..409973f Binary files /dev/null and b/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementRetour.class differ diff --git a/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementRetour.java b/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementRetour.java index 6470b98..a1f548f 100644 --- a/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementRetour.java +++ b/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/EvenementRetour.java @@ -1,33 +1,25 @@ import javax.swing.*; import java.awt.*; import java.awt.event.*; +import java.util.Deque; public class EvenementRetour implements ActionListener{ - private PileIngredient historique; - private Coche[] listeCoche; - private EvenementIngredient evenementIngredient; + private Deque historique; - public EvenementRetour(PileIngredient historique, Coche[] listeCoche, EvenementIngredient evenementIngredient){ + public EvenementRetour(Deque historique){ this.historique = historique; - this.listeCoche = listeCoche; - this.evenementIngredient = evenementIngredient; } @Override public void actionPerformed(ActionEvent e){ - Ingredient dernierChoisis = this.historique.pop(); + JCheckBox dernierChoisis = this.historique.pop(); JButton boutonRetour = (JButton) e.getSource(); - for (Coche coche : this.listeCoche){ - if (coche.getValeur() == dernierChoisis){ - coche.removeItemListener(evenementIngredient); - coche.setSelected(!coche.isSelected()); - coche.addItemListener(evenementIngredient); - if (historique.isEmpty()){ - boutonRetour.setEnabled(false); - } - } + dernierChoisis.setSelected(!dernierChoisis.isSelected()); // cette ligne declenche l'evenementIngredient + this.historique.pop(); // il faut donc retirer le dernier ingredient ajouter malencontreusement + if (historique.isEmpty()){ + boutonRetour.setEnabled(false); } } } diff --git a/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/Fenetre.class b/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/Fenetre.class new file mode 100644 index 0000000..2773114 Binary files /dev/null and b/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/Fenetre.class differ diff --git a/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/Fenetre.java b/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/Fenetre.java index 6a40ab7..386dd83 100644 --- a/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/Fenetre.java +++ b/DEV/DEV3.2/Controle_Machine_Blanc/Q1_Annulation/Fenetre.java @@ -1,9 +1,11 @@ import javax.swing.*; import java.awt.*; +import java.util.Deque; +import java.util.ArrayDeque; public class Fenetre extends JFrame{ - private PileIngredient historique; + private Deque historique; public Fenetre(){ super(); @@ -11,7 +13,7 @@ public class Fenetre extends JFrame{ this.setSize(500, 300); this.setLocation(0, 0); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - this.historique = new PileIngredient(); + this.historique = new ArrayDeque<>(); this.addIngredient(); } @@ -20,17 +22,17 @@ public class Fenetre extends JFrame{ EvenementIngredient evenementIngredient = new EvenementIngredient(this.historique, retour); Ingredient[] listeIngredient = Ingredient.values(); int nbIngredient = listeIngredient.length; - Coche[] listeCoche = new Coche[nbIngredient]; + JCheckBox[] listeCoche = new JCheckBox[nbIngredient]; int i; - this.setLayout(new GridLayout(1,nbIngredient+1)); + this.setLayout(new GridLayout(nbIngredient+1,1)); for (i=0; i pile; - - public PileIngredient(){ - this.pile = new ArrayDeque<>(); - } - - public void push(Ingredient valeur){ - this.pile.push(valeur); - } - - public Ingredient pop(){ - return this.pile.pop(); - - } - - public boolean isEmpty(){ - return this.pile.isEmpty(); - } -} \ No newline at end of file diff --git a/DEV/DEV3.2/Controle_Machine_Blanc/Q2_Perfection/Arbre.java b/DEV/DEV3.2/Controle_Machine_Blanc/Q2_Perfection/Arbre.java new file mode 100644 index 0000000..b52ebd8 --- /dev/null +++ b/DEV/DEV3.2/Controle_Machine_Blanc/Q2_Perfection/Arbre.java @@ -0,0 +1,55 @@ +import java.util.*; + +public class Arbre{ + + private Noeud racine = null; + private int nbNoeud = 0; + + public Arbre(int[] tableau){ + for (int valeur : tableau){ + this.add(valeur); + } + } + + public void add(int valeur){ + this.nbNoeud ++; + if (racine == null){ + this.racine = new Noeud(valeur); + } + else{ + Queue parcours = new LinkedList<>(); + Noeud noeudActuel; + parcours.offer(this.racine); + do{ + noeudActuel = parcours.poll(); + } while(noeudActuel.add(valeur, parcours) == false); + } + } + + public int[] toArray(){ + if (racine == null){ + return new int[0]; + } + + int[] resultat = new int[this.nbNoeud]; + Queue parcours = new LinkedList<>(); + int i; + + parcours.offer(this.racine); + + for (i=0; i parcours){ + if (this.gauche == null){ + this.gauche = new Noeud(valeur); + return true; + } + if (this.droite == null){ + this.droite = new Noeud(valeur); + return true; + } + parcours.offer(this.gauche); + parcours.offer(this.droite); + return false; + } + + public int getValeur(Queue parcours){ + parcours.offer(this.gauche); + parcours.offer(this.droite); + return this.valeur; + } +} \ No newline at end of file