Algo Aléatoire terminé - début algo intéligent
This commit is contained in:
parent
47f29fcb63
commit
f7c5974019
@ -1,5 +1,3 @@
|
|||||||
import javax.swing.CellEditor;
|
|
||||||
|
|
||||||
public class Affichage {
|
public class Affichage {
|
||||||
private Cellules cetteCellules;
|
private Cellules cetteCellules;
|
||||||
private PanneauModification cePanel;
|
private PanneauModification cePanel;
|
||||||
@ -32,16 +30,17 @@ public class Affichage {
|
|||||||
//System.out.println("Etat des deux valeur : " + this.caseEntrortie[0] + " "+ this.caseEntrortie[1]);
|
//System.out.println("Etat des deux valeur : " + this.caseEntrortie[0] + " "+ this.caseEntrortie[1]);
|
||||||
|
|
||||||
if(radio2Selected==true && this.caseEntrortie[0]==0){
|
if(radio2Selected==true && this.caseEntrortie[0]==0){
|
||||||
this.cetEtat=ModificationsTab.LIBRE;
|
this.cetEtat=Cellules.LIBRE;
|
||||||
this.cetteCellules.setType(Cellules.ENTREE);
|
this.cetteCellules.setType(Cellules.ENTREE);
|
||||||
this.cetteCellules.peindre(Cellules.ENTREE);
|
this.cetteCellules.peindre(Cellules.ENTREE);
|
||||||
this.caseEntrortie[0]=1;
|
this.caseEntrortie[0]=1;
|
||||||
} else if(radio3Selected==true && this.caseEntrortie[1]==0){
|
} else if(radio3Selected==true && this.caseEntrortie[1]==0){
|
||||||
this.cetEtat=ModificationsTab.LIBRE;
|
this.cetEtat=Cellules.LIBRE;
|
||||||
this.cetteCellules.setType(Cellules.SORTIE);
|
this.cetteCellules.setType(Cellules.SORTIE);
|
||||||
this.cetteCellules.peindre(Cellules.SORTIE);
|
this.cetteCellules.peindre(Cellules.SORTIE);
|
||||||
this.caseEntrortie[1]=1;
|
this.caseEntrortie[1]=1;
|
||||||
} else if(this.cetEtat == ModificationsTab.LIBRE && radio1Selected==true){
|
} else if(this.cetEtat == Cellules.LIBRE && radio1Selected==true){
|
||||||
|
//System.out.println("cellules peinte en couloir");
|
||||||
if(this.cetteCellules.getType()==Cellules.ENTREE){
|
if(this.cetteCellules.getType()==Cellules.ENTREE){
|
||||||
this.caseEntrortie[0]=0;
|
this.caseEntrortie[0]=0;
|
||||||
} else if(this.cetteCellules.getType()==Cellules.SORTIE){
|
} else if(this.cetteCellules.getType()==Cellules.SORTIE){
|
||||||
@ -49,7 +48,8 @@ public class Affichage {
|
|||||||
}
|
}
|
||||||
this.cetteCellules.setType(Cellules.COULOIR);
|
this.cetteCellules.setType(Cellules.COULOIR);
|
||||||
this.cetteCellules.peindre(Cellules.COULOIR);
|
this.cetteCellules.peindre(Cellules.COULOIR);
|
||||||
} else if(this.cetEtat == ModificationsTab.OCCUPE && radio1Selected==true){
|
} else if(this.cetEtat == Cellules.OCCUPE && radio1Selected==true){
|
||||||
|
//System.out.println("cellules peinte en mur");
|
||||||
this.cetteCellules.setType(Cellules.MUR);
|
this.cetteCellules.setType(Cellules.MUR);
|
||||||
this.cetteCellules.peindre(Cellules.MUR);
|
this.cetteCellules.peindre(Cellules.MUR);
|
||||||
}
|
}
|
||||||
|
93
AlgoAlea.java
Normal file
93
AlgoAlea.java
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import javax.swing.JFrame;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
|
public class AlgoAlea {
|
||||||
|
|
||||||
|
private boolean[][] map;
|
||||||
|
private Cellules[][] grille;
|
||||||
|
|
||||||
|
private int cetteTaille;
|
||||||
|
private int comptErreur=0;
|
||||||
|
private int[] coordGate;
|
||||||
|
|
||||||
|
private These notreThese;
|
||||||
|
|
||||||
|
private JFrame cetteFrame;
|
||||||
|
|
||||||
|
public AlgoAlea(int uneTaille, boolean[][] tableau, Cellules[][] uneGrille, int visuel, JFrame uneFrame) {
|
||||||
|
this.map = tableau;
|
||||||
|
this.grille = uneGrille;
|
||||||
|
this.cetteFrame = uneFrame;
|
||||||
|
this.cetteTaille = uneTaille;
|
||||||
|
|
||||||
|
if(visuel==0){
|
||||||
|
this.auto();
|
||||||
|
} else if(visuel==1){
|
||||||
|
this.manuel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==================================== AUtomatique ==================================== */
|
||||||
|
|
||||||
|
public void auto() {
|
||||||
|
//outils.PrintGrilleBool(this.map,this.cetteTaille);
|
||||||
|
//outils.PrintGrilleCell(this.grille, this.cetteTaille);
|
||||||
|
|
||||||
|
int decompte = 0;
|
||||||
|
int[] tabRes = new int[1000];
|
||||||
|
|
||||||
|
Random ran = new Random();
|
||||||
|
int nxt=0;
|
||||||
|
|
||||||
|
while(decompte < 1000){
|
||||||
|
int compteur = 0;
|
||||||
|
|
||||||
|
this.coordGate = outils.ParcoursCell(this.grille, this.cetteTaille);
|
||||||
|
this.notreThese = new These(coordGate[0], coordGate[1], this.cetteTaille, this.map);
|
||||||
|
|
||||||
|
while(this.notreThese.isArrived(coordGate[2], coordGate[3]) != These.ARRIVE){
|
||||||
|
nxt = ran.nextInt(4);
|
||||||
|
if(nxt == 0){
|
||||||
|
this.notreThese.goRight();
|
||||||
|
} else if(nxt == 1){
|
||||||
|
this.notreThese.goDown();
|
||||||
|
} else if(nxt == 2){
|
||||||
|
this.notreThese.goLeft();
|
||||||
|
} else {
|
||||||
|
this.notreThese.goTop();
|
||||||
|
}
|
||||||
|
|
||||||
|
compteur+=1;
|
||||||
|
estInfini(compteur);
|
||||||
|
}
|
||||||
|
tabRes[decompte] = compteur;
|
||||||
|
decompte++;
|
||||||
|
}
|
||||||
|
JOptionPane.showMessageDialog(null, "Nous avons une moyenne de : "+outils.moyenneTabint(tabRes)+" pour ce labyrinthe", "Information", JOptionPane.INFORMATION_MESSAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ==================================== Manuelle ==================================== */
|
||||||
|
|
||||||
|
public void manuel() {
|
||||||
|
this.coordGate = outils.ParcoursCell(this.grille, this.cetteTaille);
|
||||||
|
this.notreThese = new These(coordGate[0], coordGate[1], this.cetteTaille, this.map);
|
||||||
|
|
||||||
|
Attente attendre = new Attente(this.notreThese, this.grille, this.coordGate);
|
||||||
|
this.cetteFrame.addKeyListener(attendre);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ==================================== INFINI ==================================== */
|
||||||
|
|
||||||
|
public void estInfini(int unCompteur){
|
||||||
|
if(unCompteur > 10000){
|
||||||
|
this.comptErreur++;
|
||||||
|
}
|
||||||
|
if(this.comptErreur > 3){
|
||||||
|
JOptionPane.showMessageDialog(null, "Le labyrinthe est trop probablement non-finissable", "Erreur", JOptionPane.ERROR_MESSAGE);
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
67
Attente.java
Normal file
67
Attente.java
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
import java.awt.event.KeyEvent;
|
||||||
|
import java.awt.event.KeyListener;
|
||||||
|
import java.util.Random;
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class Attente implements KeyListener {
|
||||||
|
public static final boolean FINI = true;
|
||||||
|
public static final boolean ENCOURS = false;
|
||||||
|
|
||||||
|
private Random rand;
|
||||||
|
private int number;
|
||||||
|
private int compteur;
|
||||||
|
|
||||||
|
private These notreThese;
|
||||||
|
private Cellules[][] grilleCellules;
|
||||||
|
private int[] coordGate;
|
||||||
|
|
||||||
|
public Attente(These unPerso, Cellules[][] grille, int[] coord){
|
||||||
|
this.notreThese = unPerso;
|
||||||
|
this.grilleCellules = grille;
|
||||||
|
this.compteur=0;
|
||||||
|
this.rand = new Random();
|
||||||
|
this.coordGate = coord;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keyPressed(KeyEvent e) {
|
||||||
|
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
|
||||||
|
this.grilleCellules[notreThese.getCoord()[0]][notreThese.getCoord()[1]].peindre(Cellules.VUE);
|
||||||
|
|
||||||
|
this.number = this.rand.nextInt(4);
|
||||||
|
if(this.number == 0){
|
||||||
|
this.notreThese.goRight();
|
||||||
|
} else if(this.number == 1){
|
||||||
|
this.notreThese.goDown();
|
||||||
|
} else if(this.number == 2){
|
||||||
|
this.notreThese.goLeft();
|
||||||
|
} else {
|
||||||
|
this.notreThese.goTop();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.grilleCellules[notreThese.getCoord()[0]][notreThese.getCoord()[1]].peindre(Cellules.DESSUS);
|
||||||
|
|
||||||
|
this.compteur++;
|
||||||
|
|
||||||
|
if(this.notreThese.isArrived(this.coordGate[2], this.coordGate[3]) == These.ARRIVE){
|
||||||
|
JOptionPane.showMessageDialog(null, "Labyrinthe treminé en "+this.compteur+" coups !", "Information", JOptionPane.INFORMATION_MESSAGE);
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keyReleased(KeyEvent e) {
|
||||||
|
// Ne rien faire ici
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keyTyped(KeyEvent e) {
|
||||||
|
// Ne rien faire ici
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checked(){
|
||||||
|
System.out.println("true");
|
||||||
|
}
|
||||||
|
}
|
@ -9,6 +9,12 @@ public class Cellules extends JComponent{
|
|||||||
public static final int ENTREE=2;
|
public static final int ENTREE=2;
|
||||||
public static final int SORTIE=3;
|
public static final int SORTIE=3;
|
||||||
|
|
||||||
|
public static final int DESSUS=10;
|
||||||
|
public static final int VUE=11;
|
||||||
|
|
||||||
|
public static final boolean LIBRE = false;
|
||||||
|
public static final boolean OCCUPE = true;
|
||||||
|
|
||||||
private Color backgroundColor;
|
private Color backgroundColor;
|
||||||
|
|
||||||
private int cetteLigne;
|
private int cetteLigne;
|
||||||
@ -58,6 +64,10 @@ public class Cellules extends JComponent{
|
|||||||
backgroundColor = Color.BLUE;
|
backgroundColor = Color.BLUE;
|
||||||
} else if(peinture==SORTIE){
|
} else if(peinture==SORTIE){
|
||||||
backgroundColor = Color.RED;
|
backgroundColor = Color.RED;
|
||||||
|
} else if(peinture==VUE){
|
||||||
|
backgroundColor = Color.YELLOW;
|
||||||
|
} else if(peinture==DESSUS){
|
||||||
|
backgroundColor = Color.ORANGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
repaint();
|
repaint();
|
||||||
|
143
ChoixAlgo.java
143
ChoixAlgo.java
@ -1,7 +1,146 @@
|
|||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
public class ChoixAlgo extends Fenetre {
|
public class ChoixAlgo extends Fenetre {
|
||||||
public ChoixAlgo(boolean[][] uneGrille){
|
private JFrame frameGrille;
|
||||||
|
private boolean[][] ceTableau;
|
||||||
|
private Cellules[][] cetteGrille;
|
||||||
|
private int cetteTaille;
|
||||||
|
|
||||||
|
public ChoixAlgo(int uneTaille, JFrame fenGrille, boolean[][] uneGrille, Cellules[][] uneGrilleCell){
|
||||||
super();
|
super();
|
||||||
outils.PrintGrilleBool(uneGrille, uneGrille.length);
|
this.fenetre.setVisible(true);
|
||||||
|
this.fenetre.setTitle("Algorithmes et visualisation");
|
||||||
|
|
||||||
|
this.ceTableau = uneGrille;
|
||||||
|
this.cetteGrille = uneGrilleCell;
|
||||||
|
this.frameGrille = fenGrille;
|
||||||
|
this.cetteTaille = uneTaille;
|
||||||
|
|
||||||
|
GridLayout gestionnaire = new GridLayout(6, 1);
|
||||||
|
this.fenetre.setLayout(gestionnaire);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setUp(){
|
||||||
|
/* ============================= TEXT PRESENTATION =========================*/
|
||||||
|
|
||||||
|
JLabel unText = new JLabel(" Etape 2 : Choix de l'Algorithme et de la Visualisation");
|
||||||
|
JPanel unPanel = new JPanel();
|
||||||
|
unPanel.setBackground(Color.CYAN);
|
||||||
|
unPanel.add(unText, BorderLayout.CENTER);
|
||||||
|
JPanel unPanel2 = new JPanel();
|
||||||
|
unPanel2.setBackground(Color.CYAN);
|
||||||
|
unPanel2.setLayout(new BoxLayout(unPanel2, BoxLayout.Y_AXIS));
|
||||||
|
unPanel2.add(Box.createVerticalGlue());
|
||||||
|
unPanel2.add(unPanel);
|
||||||
|
unPanel2.add(Box.createVerticalGlue());
|
||||||
|
this.fenetre.add(unPanel2, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
/*============================ Choix de l'algo ============================*/
|
||||||
|
|
||||||
|
JLabel text0 = new JLabel("Choix de l'Algorithme");
|
||||||
|
JPanel cePanel0 = new JPanel();
|
||||||
|
cePanel0.setBackground(Color.CYAN);
|
||||||
|
cePanel0.add(text0, BorderLayout.CENTER);
|
||||||
|
JPanel cePanel1 = new JPanel();
|
||||||
|
cePanel1.setBackground(Color.CYAN);
|
||||||
|
cePanel1.setLayout(new BoxLayout(cePanel1, BoxLayout.Y_AXIS));
|
||||||
|
cePanel1.add(Box.createVerticalGlue());
|
||||||
|
cePanel1.add(cePanel0);
|
||||||
|
cePanel1.add(Box.createVerticalGlue());
|
||||||
|
this.fenetre.add(cePanel1, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
/* ===== -_- ===== */
|
||||||
|
|
||||||
|
JPanel unPanel3 = new JPanel();
|
||||||
|
JPanel unPanel4 = new JPanel();
|
||||||
|
|
||||||
|
JRadioButton radioAA = new JRadioButton("Algorithme Aléatoire");
|
||||||
|
JRadioButton radioAD = new JRadioButton("Algorithme Déterminatif");
|
||||||
|
|
||||||
|
radioAA.setActionCommand("Aalea");
|
||||||
|
radioAD.setActionCommand("Adeter");
|
||||||
|
|
||||||
|
radioAA.setBackground(Color.CYAN);
|
||||||
|
radioAA.setSelected(true);
|
||||||
|
radioAD.setBackground(Color.CYAN);
|
||||||
|
|
||||||
|
ButtonGroup group = new ButtonGroup();
|
||||||
|
group.add(radioAA);group.add(radioAD);
|
||||||
|
|
||||||
|
unPanel4.add(radioAA);
|
||||||
|
unPanel4.add(radioAD);
|
||||||
|
unPanel3.setBackground(Color.CYAN);
|
||||||
|
unPanel3.setLayout(new BoxLayout(unPanel3, BoxLayout.Y_AXIS));
|
||||||
|
unPanel3.add(Box.createVerticalGlue());
|
||||||
|
unPanel3.add(unPanel4);
|
||||||
|
unPanel3.add(Box.createVerticalGlue());
|
||||||
|
unPanel3.setBackground(Color.CYAN);
|
||||||
|
unPanel4.setBackground(Color.CYAN);
|
||||||
|
this.fenetre.add(unPanel3, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
/* ===== */
|
||||||
|
|
||||||
|
JLabel text1 = new JLabel(" Choix de la visualisation");
|
||||||
|
JPanel cePanel2 = new JPanel();
|
||||||
|
cePanel2.setBackground(Color.CYAN);
|
||||||
|
cePanel2.add(text1, BorderLayout.CENTER);
|
||||||
|
JPanel cePanel3 = new JPanel();
|
||||||
|
cePanel3.setBackground(Color.CYAN);
|
||||||
|
cePanel3.setLayout(new BoxLayout(cePanel3, BoxLayout.Y_AXIS));
|
||||||
|
cePanel3.add(Box.createVerticalGlue());
|
||||||
|
cePanel3.add(cePanel2);
|
||||||
|
cePanel3.add(Box.createVerticalGlue());
|
||||||
|
this.fenetre.add(cePanel3, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
/*============================ Choix de la vue ============================*/
|
||||||
|
JPanel unPanel5 = new JPanel();
|
||||||
|
JPanel unPanel6 = new JPanel();
|
||||||
|
|
||||||
|
JRadioButton radioVA = new JRadioButton("Visualisation Automatique");
|
||||||
|
JRadioButton radioVD = new JRadioButton("Visualisation Manuelle");
|
||||||
|
|
||||||
|
radioVA.setActionCommand("Vauto");
|
||||||
|
radioVD.setActionCommand("Vman");
|
||||||
|
|
||||||
|
radioVA.setBackground(Color.CYAN);
|
||||||
|
radioVA.setSelected(true);
|
||||||
|
radioVD.setBackground(Color.CYAN);
|
||||||
|
|
||||||
|
ButtonGroup groupe = new ButtonGroup();
|
||||||
|
groupe.add(radioVA);groupe.add(radioVD);
|
||||||
|
|
||||||
|
unPanel6.add(radioVA);
|
||||||
|
unPanel6.add(radioVD);
|
||||||
|
|
||||||
|
unPanel5.setBackground(Color.CYAN);
|
||||||
|
unPanel5.setLayout(new BoxLayout(unPanel5, BoxLayout.Y_AXIS));
|
||||||
|
unPanel5.add(Box.createVerticalGlue());
|
||||||
|
unPanel5.add(unPanel6);
|
||||||
|
unPanel5.add(Box.createVerticalGlue());
|
||||||
|
unPanel5.setBackground(Color.CYAN);
|
||||||
|
unPanel6.setBackground(Color.CYAN);
|
||||||
|
this.fenetre.add(unPanel5, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
/*Création du dernier panneau */
|
||||||
|
JPanel unPanel10 = new JPanel();
|
||||||
|
JButton unButton0 = new JButton("Suivant");
|
||||||
|
JPanel unPanel11 = new JPanel();
|
||||||
|
unPanel11.add(unButton0, BorderLayout.CENTER);
|
||||||
|
unPanel10.setBackground(Color.CYAN);
|
||||||
|
unPanel11.setBackground(Color.CYAN);
|
||||||
|
unPanel10.setBackground(Color.CYAN);
|
||||||
|
unPanel10.setLayout(new BoxLayout(unPanel10, BoxLayout.Y_AXIS));
|
||||||
|
unPanel10.add(Box.createVerticalGlue());
|
||||||
|
unPanel10.add(unPanel11);
|
||||||
|
unPanel10.add(Box.createVerticalGlue());
|
||||||
|
this.fenetre.add(unPanel10, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
/* Evenement */
|
||||||
|
|
||||||
|
this.fenetre.setVisible(true);
|
||||||
|
|
||||||
|
GestionChoixAlgo gestion = new GestionChoixAlgo(this.cetteTaille, this.fenetre, group, groupe, this.ceTableau, this.cetteGrille ,this.frameGrille);
|
||||||
|
unButton0.addActionListener(gestion);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ import java.awt.*;
|
|||||||
|
|
||||||
public class FenetreImpGrille extends Fenetre {
|
public class FenetreImpGrille extends Fenetre {
|
||||||
private boolean[][] grille;
|
private boolean[][] grille;
|
||||||
|
private Cellules[][] grilleCell;
|
||||||
|
|
||||||
public FenetreImpGrille(){
|
public FenetreImpGrille(){
|
||||||
super();
|
super();
|
||||||
@ -11,6 +12,7 @@ public class FenetreImpGrille extends Fenetre {
|
|||||||
/* ================================================================ Déclaration des variables ============================================================================= */
|
/* ================================================================ Déclaration des variables ============================================================================= */
|
||||||
int[][] ce_double_tab = new int[taille][taille];
|
int[][] ce_double_tab = new int[taille][taille];
|
||||||
this.grille = new boolean[taille][taille];
|
this.grille = new boolean[taille][taille];
|
||||||
|
this.grilleCell = new Cellules[taille][taille];
|
||||||
//System.out.println("LA TAILLE DE LA GRRILLE VAUT : "+tabGrille.length);
|
//System.out.println("LA TAILLE DE LA GRRILLE VAUT : "+tabGrille.length);
|
||||||
|
|
||||||
/* =============================================================== Gestion des paramètres de la fenètre ========================================================================== */
|
/* =============================================================== Gestion des paramètres de la fenètre ========================================================================== */
|
||||||
@ -42,20 +44,25 @@ public class FenetreImpGrille extends Fenetre {
|
|||||||
|
|
||||||
if((i*taille+j)==(Lentre*taille+Centre)){
|
if((i*taille+j)==(Lentre*taille+Centre)){
|
||||||
Cellules cellules = new Cellules(i, j, Cellules.ENTREE);
|
Cellules cellules = new Cellules(i, j, Cellules.ENTREE);
|
||||||
|
this.grilleCell[i][j] = cellules;
|
||||||
this.fenetre.add(cellules);
|
this.fenetre.add(cellules);
|
||||||
} else if((i*taille+j)==(Lortie*taille+Cortie)){
|
} else if((i*taille+j)==(Lortie*taille+Cortie)){
|
||||||
Cellules cellules = new Cellules(i, j, Cellules.SORTIE);
|
Cellules cellules = new Cellules(i, j, Cellules.SORTIE);
|
||||||
|
this.grilleCell[i][j] = cellules;
|
||||||
this.fenetre.add(cellules);
|
this.fenetre.add(cellules);
|
||||||
} else if(ce_double_tab[i][j] == 1){
|
} else if(ce_double_tab[i][j] == 1){
|
||||||
Cellules cellules = new Cellules(i, j, Cellules.MUR);
|
Cellules cellules = new Cellules(i, j, Cellules.MUR);
|
||||||
|
this.grilleCell[i][j] = cellules;
|
||||||
this.fenetre.add(cellules);
|
this.fenetre.add(cellules);
|
||||||
} else{
|
} else{
|
||||||
Cellules cellules = new Cellules(i, j, Cellules.COULOIR);
|
Cellules cellules = new Cellules(i, j, Cellules.COULOIR);
|
||||||
|
this.grilleCell[i][j] = cellules;
|
||||||
this.fenetre.add(cellules);
|
this.fenetre.add(cellules);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.fenetre.setVisible(true);
|
this.fenetre.setVisible(true);
|
||||||
outils.PrintGrilleBool(this.grille, taille);
|
ChoixAlgo Suite = new ChoixAlgo(taille, this.fenetre, this.grille, this.grilleCell);
|
||||||
|
Suite.setUp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,9 +52,9 @@ public class FenetreRndmGrille extends Fenetre{
|
|||||||
int nombreAleatoire = rand.nextInt(2); // génère un nombre entre 0 et 2
|
int nombreAleatoire = rand.nextInt(2); // génère un nombre entre 0 et 2
|
||||||
|
|
||||||
if(nombreAleatoire == 0){
|
if(nombreAleatoire == 0){
|
||||||
grille[i][j] = true;
|
grille[i][j] = Cellules.LIBRE; //true
|
||||||
} else {
|
} else {
|
||||||
grille[i][j] = false;
|
grille[i][j] = Cellules.OCCUPE; //false
|
||||||
}
|
}
|
||||||
|
|
||||||
this.modif = new Modifications(interfacePanel, grille,this.tabCouleur);
|
this.modif = new Modifications(interfacePanel, grille,this.tabCouleur);
|
||||||
@ -65,7 +65,7 @@ public class FenetreRndmGrille extends Fenetre{
|
|||||||
this.fenetre.add(cellules);
|
this.fenetre.add(cellules);
|
||||||
cellules.addMouseListener(modif);
|
cellules.addMouseListener(modif);
|
||||||
grilleCellules[i][j] = cellules;
|
grilleCellules[i][j] = cellules;
|
||||||
grille[i][j] = ModificationsTab.LIBRE;
|
grille[i][j] = Cellules.LIBRE;
|
||||||
}
|
}
|
||||||
else if(compteur == ValeurSortie)
|
else if(compteur == ValeurSortie)
|
||||||
{
|
{
|
||||||
@ -73,9 +73,9 @@ public class FenetreRndmGrille extends Fenetre{
|
|||||||
this.fenetre.add(cellules);
|
this.fenetre.add(cellules);
|
||||||
cellules.addMouseListener(modif);
|
cellules.addMouseListener(modif);
|
||||||
grilleCellules[i][j] = cellules;
|
grilleCellules[i][j] = cellules;
|
||||||
grille[i][j] = ModificationsTab.LIBRE;
|
grille[i][j] = Cellules.LIBRE;
|
||||||
}
|
}
|
||||||
else if(grille[i][j] == true)
|
else if(grille[i][j] == Cellules.LIBRE)
|
||||||
{
|
{
|
||||||
Cellules cellules = new Cellules(i, j, Cellules.COULOIR);
|
Cellules cellules = new Cellules(i, j, Cellules.COULOIR);
|
||||||
this.fenetre.add(cellules);
|
this.fenetre.add(cellules);
|
||||||
@ -94,8 +94,6 @@ public class FenetreRndmGrille extends Fenetre{
|
|||||||
compteur++;
|
compteur++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
outils.PrintGrilleBool(grille, taille);
|
|
||||||
|
|
||||||
this.fenetre.setVisible(true);
|
this.fenetre.setVisible(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
47
GestionChoixAlgo.java
Normal file
47
GestionChoixAlgo.java
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.event.*;
|
||||||
|
|
||||||
|
public class GestionChoixAlgo extends JFrame implements ActionListener {
|
||||||
|
private JFrame cetteFrame;
|
||||||
|
private ButtonGroup ceGroupe0;
|
||||||
|
private ButtonGroup ceGroupe1;
|
||||||
|
|
||||||
|
private int cetteTaille;
|
||||||
|
|
||||||
|
private JFrame frameGrille;
|
||||||
|
private boolean[][] cetteGrille;
|
||||||
|
private Cellules[][] cetteGrilleCell;
|
||||||
|
|
||||||
|
public GestionChoixAlgo(int uneTaille, JFrame uneFrame, ButtonGroup group0, ButtonGroup group1, boolean[][] uneGrille, Cellules[][] grilleCell,JFrame uneFenetre){
|
||||||
|
this.cetteFrame = uneFrame;
|
||||||
|
this.ceGroupe0 = group0;
|
||||||
|
this.ceGroupe1 = group1;
|
||||||
|
|
||||||
|
this.cetteTaille = uneTaille;
|
||||||
|
|
||||||
|
this.frameGrille=uneFenetre;
|
||||||
|
this.cetteGrille = uneGrille;
|
||||||
|
this.cetteGrilleCell=grilleCell;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void actionPerformed(ActionEvent e){
|
||||||
|
this.cetteFrame.dispose();
|
||||||
|
if(this.ceGroupe0.getSelection().getActionCommand()=="Aalea" && this.ceGroupe1.getSelection().getActionCommand()=="Vauto")
|
||||||
|
{
|
||||||
|
this.frameGrille.dispose();
|
||||||
|
AlgoAlea algorithme = new AlgoAlea(this.cetteTaille, this.cetteGrille, this.cetteGrilleCell, 0, null);
|
||||||
|
}
|
||||||
|
else if(this.ceGroupe0.getSelection().getActionCommand()=="Adeter" && this.ceGroupe1.getSelection().getActionCommand()=="Vauto")
|
||||||
|
{
|
||||||
|
this.frameGrille.dispose();
|
||||||
|
}
|
||||||
|
else if(this.ceGroupe0.getSelection().getActionCommand()=="Aalea" && this.ceGroupe1.getSelection().getActionCommand()=="Vman")
|
||||||
|
{
|
||||||
|
AlgoAlea algorithme = new AlgoAlea(this.cetteTaille, this.cetteGrille, this.cetteGrilleCell, 1, this.frameGrille);
|
||||||
|
}
|
||||||
|
else if(this.ceGroupe0.getSelection().getActionCommand()=="Adeter" && this.ceGroupe1.getSelection().getActionCommand()=="Vman")
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -26,18 +26,20 @@ public class GestionExporter implements ActionListener{
|
|||||||
public void actionPerformed(ActionEvent e){
|
public void actionPerformed(ActionEvent e){
|
||||||
this.cet_event=e.getActionCommand();
|
this.cet_event=e.getActionCommand();
|
||||||
if (cet_event.equals(this.Reponses1)){
|
if (cet_event.equals(this.Reponses1)){
|
||||||
this.frameGrille.dispose();
|
|
||||||
this.frameModif.dispose();
|
this.frameModif.dispose();
|
||||||
this.framePopup.dispose();
|
this.framePopup.dispose();
|
||||||
//outils.PrintGrilleBool(this.cetteGrille, this.cetteTaille);
|
//outils.PrintGrilleBool(this.cetteGrille, this.cetteTaille);
|
||||||
|
|
||||||
PreEcriture precriture = new PreEcriture(this.cetteGrille, this.grilleCellules, this.cetteTaille);
|
PreEcriture precriture = new PreEcriture(this.cetteGrille, this.grilleCellules, this.cetteTaille);
|
||||||
ChoixAlgo suite = new ChoixAlgo(this.cetteGrille);
|
|
||||||
|
ChoixAlgo suite = new ChoixAlgo(this.cetteTaille, this.frameGrille ,this.cetteGrille, this.grilleCellules);
|
||||||
|
suite.setUp();
|
||||||
}
|
}
|
||||||
else if (cet_event.equals(this.Reponses2)){
|
else if (cet_event.equals(this.Reponses2)){
|
||||||
this.frameGrille.dispose();
|
|
||||||
this.frameModif.dispose();
|
this.frameModif.dispose();
|
||||||
this.framePopup.dispose();
|
this.framePopup.dispose();
|
||||||
ChoixAlgo suite = new ChoixAlgo(this.cetteGrille);
|
ChoixAlgo suite = new ChoixAlgo(this.cetteTaille, this.frameGrille, this.cetteGrille, this.grilleCellules);
|
||||||
|
suite.setUp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -27,6 +27,7 @@ public class GestionModif implements ActionListener{
|
|||||||
}
|
}
|
||||||
else if (cet_event.equals(this.Reponses2)){
|
else if (cet_event.equals(this.Reponses2)){
|
||||||
Exporter newExport = new Exporter(this.cetteGrille, this.grilleCellules, this.cetteTaille, this.cetteFrameGrille, this.cetteFrameModif);
|
Exporter newExport = new Exporter(this.cetteGrille, this.grilleCellules, this.cetteTaille, this.cetteFrameGrille, this.cetteFrameModif);
|
||||||
|
//outils.PrintGrilleBool(this.cetteGrille, this.cetteTaille);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -105,9 +105,9 @@ public class Lecture {
|
|||||||
ceResultat = outils.concatenate(ceResultat, outils.reverse(ceTableauTemp));
|
ceResultat = outils.concatenate(ceResultat, outils.reverse(ceTableauTemp));
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i=0; i<ceResultat.length; i++){
|
/*for(int i=0; i<ceResultat.length; i++){
|
||||||
System.out.print("le resultats vaut : "+ceResultat[i] +"\n");
|
System.out.print("le resultats vaut : "+ceResultat[i] +"\n");
|
||||||
}
|
}*/
|
||||||
|
|
||||||
/* =================================== Fermeture fichier ==================================== */
|
/* =================================== Fermeture fichier ==================================== */
|
||||||
|
|
||||||
|
17
Makefile
17
Makefile
@ -31,7 +31,7 @@ Lecture.class : Lecture.java outils.class
|
|||||||
outils.class : outils.java
|
outils.class : outils.java
|
||||||
${JC} ${JCFLAGS} outils.java
|
${JC} ${JCFLAGS} outils.java
|
||||||
|
|
||||||
FenetreImpGrille.class : FenetreImpGrille.java Cellules.class
|
FenetreImpGrille.class : FenetreImpGrille.java Cellules.class ChoixAlgo.class
|
||||||
${JC} ${JCFLAGS} FenetreImpGrille.java
|
${JC} ${JCFLAGS} FenetreImpGrille.java
|
||||||
|
|
||||||
### ========================================================================
|
### ========================================================================
|
||||||
@ -82,8 +82,21 @@ PreEcriture.class : PreEcriture.java Ecriture.class
|
|||||||
Ecriture.class : Ecriture.java
|
Ecriture.class : Ecriture.java
|
||||||
${JC} ${JCFLAGS} Ecriture.java
|
${JC} ${JCFLAGS} Ecriture.java
|
||||||
|
|
||||||
ChoixAlgo.class : ChoixAlgo.java
|
ChoixAlgo.class : ChoixAlgo.java GestionChoixAlgo.class
|
||||||
${JC} ${JCFLAGS} ChoixAlgo.java
|
${JC} ${JCFLAGS} ChoixAlgo.java
|
||||||
|
|
||||||
|
GestionChoixAlgo.class : GestionChoixAlgo.java AlgoAlea.class
|
||||||
|
${JC} ${JCFLAGS} GestionChoixAlgo.java
|
||||||
|
|
||||||
|
AlgoAlea.class : AlgoAlea.java These.class Attente.class
|
||||||
|
${JC} ${JCFLAGS} AlgoAlea.java
|
||||||
|
|
||||||
|
These.class : These.java
|
||||||
|
${JC} ${JCFLAGS} These.java
|
||||||
|
|
||||||
|
Attente.class : Attente.java
|
||||||
|
${JC} ${JCFLAGS} Attente.java
|
||||||
|
|
||||||
# ================================
|
# ================================
|
||||||
|
|
||||||
### REGLES OPTIONNELLES ###
|
### REGLES OPTIONNELLES ###
|
||||||
|
@ -1,12 +1,6 @@
|
|||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
|
|
||||||
public class ModificationsTab {
|
public class ModificationsTab {
|
||||||
// --------------------------------------------
|
|
||||||
|
|
||||||
public static final boolean LIBRE = true;
|
|
||||||
public static final boolean OCCUPE = false;
|
|
||||||
|
|
||||||
// --------------------------------------------
|
|
||||||
|
|
||||||
private boolean[][] cetteGrille;
|
private boolean[][] cetteGrille;
|
||||||
private MouseEvent cetEvent;
|
private MouseEvent cetEvent;
|
||||||
@ -40,13 +34,13 @@ public class ModificationsTab {
|
|||||||
/* ========================================= */
|
/* ========================================= */
|
||||||
|
|
||||||
//System.out.println("Etat de la case avant cliqué : "+this.cetteGrille[this.cetteLigne][this.cetteColone]);
|
//System.out.println("Etat de la case avant cliqué : "+this.cetteGrille[this.cetteLigne][this.cetteColone]);
|
||||||
if(this.cetteGrille[this.cetteLigne][this.cetteColone] == OCCUPE){
|
if(this.cetteGrille[this.cetteLigne][this.cetteColone] == Cellules.OCCUPE){
|
||||||
this.cetteGrille[this.cetteLigne][this.cetteColone] = LIBRE;
|
this.cetteGrille[this.cetteLigne][this.cetteColone] = Cellules.LIBRE;
|
||||||
} else {
|
} else {
|
||||||
if(notreCellule.getType()==Cellules.ENTREE || notreCellule.getType()==Cellules.SORTIE){
|
if(notreCellule.getType()==Cellules.ENTREE || notreCellule.getType()==Cellules.SORTIE){
|
||||||
this.cetteGrille[this.cetteLigne][this.cetteColone] = LIBRE;
|
this.cetteGrille[this.cetteLigne][this.cetteColone] = Cellules.LIBRE;
|
||||||
} else if (radio1Selected==true) {
|
} else if (radio1Selected==true) {
|
||||||
this.cetteGrille[this.cetteLigne][this.cetteColone] = OCCUPE;
|
this.cetteGrille[this.cetteLigne][this.cetteColone] = Cellules.OCCUPE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,9 +57,9 @@ public class PreEcriture {
|
|||||||
if(this.octetRemaining<8){
|
if(this.octetRemaining<8){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(cetteIteration==true){
|
if(cetteIteration==Cellules.LIBRE){
|
||||||
tempString = tempString + "0";
|
tempString = tempString + "0";
|
||||||
} else if(cetteIteration==false){
|
} else if(cetteIteration==Cellules.OCCUPE){
|
||||||
tempString = tempString + "1";
|
tempString = tempString + "1";
|
||||||
}
|
}
|
||||||
if(tempString.length()==8){
|
if(tempString.length()==8){
|
||||||
@ -73,9 +73,9 @@ public class PreEcriture {
|
|||||||
|
|
||||||
if(decompte != tabHorizontal.length){
|
if(decompte != tabHorizontal.length){
|
||||||
while(decompte != tabHorizontal.length){
|
while(decompte != tabHorizontal.length){
|
||||||
if(tabHorizontal[decompte]==true){
|
if(tabHorizontal[decompte]==Cellules.LIBRE){
|
||||||
tempString=tempString+"0";
|
tempString=tempString+"0";
|
||||||
}else if(tabHorizontal[decompte]==false){
|
}else if(tabHorizontal[decompte]==Cellules.OCCUPE){
|
||||||
tempString=tempString+"1";
|
tempString=tempString+"1";
|
||||||
}
|
}
|
||||||
decompte++;
|
decompte++;
|
||||||
@ -85,9 +85,6 @@ public class PreEcriture {
|
|||||||
this.tabTemp[compteur1] = tempString;
|
this.tabTemp[compteur1] = tempString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for(int i=0; i<tabTemp.length; i++){
|
for(int i=0; i<tabTemp.length; i++){
|
||||||
System.out.println(tabTemp[i]+" ");
|
System.out.println(tabTemp[i]+" ");
|
||||||
}
|
}
|
||||||
|
86
These.java
Normal file
86
These.java
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
public class These {
|
||||||
|
public static final boolean LIBRE = false;
|
||||||
|
public static final boolean OCCUPE = true;
|
||||||
|
|
||||||
|
public static final boolean ARRIVE = true;
|
||||||
|
public static final boolean CHEMIN = false;
|
||||||
|
|
||||||
|
private int coordX;
|
||||||
|
private int coordY;
|
||||||
|
private int cetteTaille;
|
||||||
|
|
||||||
|
private boolean[][] cetteGrille;
|
||||||
|
|
||||||
|
public These(int x, int y, int taille, boolean[][] grille){
|
||||||
|
this.coordX = x;
|
||||||
|
this.coordY = y;
|
||||||
|
this.cetteGrille = grille;
|
||||||
|
this.cetteTaille = taille;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean goRight(){
|
||||||
|
if(coordY+1 < this.cetteTaille){
|
||||||
|
//System.out.println("etat case droite :"+this.cetteGrille[coordX][coordY+1]+" pose :"+(coordX+1)+" "+coordY);
|
||||||
|
if(this.cetteGrille[coordX][coordY+1] == LIBRE){
|
||||||
|
this.coordY = this.coordY+1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean goDown(){
|
||||||
|
if(coordX+1 < this.cetteTaille){
|
||||||
|
if(this.cetteGrille[coordX+1][coordY] == LIBRE){
|
||||||
|
this.coordX = this.coordX+1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean goLeft(){
|
||||||
|
if(coordY-1 >= 0){
|
||||||
|
//System.out.println("etat case gauche :"+this.cetteGrille[coordX-1][coordY]+" pose :"+(coordX-1)+" "+coordY);
|
||||||
|
if(this.cetteGrille[coordX][coordY-1] == LIBRE){
|
||||||
|
this.coordY = this.coordY-1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean goTop(){
|
||||||
|
if(coordX-1 >= 0){
|
||||||
|
//System.out.println("etat case top : "+this.cetteGrille[coordX][coordY-1] +" pose : "+coordX+" "+(coordY-1));
|
||||||
|
if(this.cetteGrille[coordX-1][coordY] == LIBRE){
|
||||||
|
this.coordX = this.coordX-1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gestion Fin
|
||||||
|
|
||||||
|
public boolean isArrived(int finalX, int finalY){
|
||||||
|
// renvoie un boolean
|
||||||
|
if(this.coordX == finalX && this.coordY == finalY){
|
||||||
|
return ARRIVE;
|
||||||
|
} else {
|
||||||
|
return CHEMIN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Miscelaneous
|
||||||
|
|
||||||
|
public void printPlacement(){
|
||||||
|
System.out.println("La position en X vaut : "+coordX+" et en y : "+coordY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] getCoord(){
|
||||||
|
int[] coordonnes = new int[2];
|
||||||
|
coordonnes[0] = coordX; coordonnes[1]=coordY;
|
||||||
|
return coordonnes;
|
||||||
|
}
|
||||||
|
}
|
@ -107,4 +107,12 @@ public class outils {
|
|||||||
}
|
}
|
||||||
return resultat;
|
return resultat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int moyenneTabint(int[] leTableau){
|
||||||
|
int somme = 0;
|
||||||
|
for(int valeur : leTableau){
|
||||||
|
somme = somme + valeur;
|
||||||
|
}
|
||||||
|
return somme/leTableau.length;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
34
save.txt
Normal file
34
save.txt
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
public void manuel() {
|
||||||
|
Random ran = new Random();
|
||||||
|
int nxt=0;
|
||||||
|
int compteur = 0;
|
||||||
|
|
||||||
|
Attente attendre = new Attente();
|
||||||
|
this.fenetre.requestFocus();
|
||||||
|
|
||||||
|
|
||||||
|
this.coordGate = outils.ParcoursCell(this.grille, this.cetteTaille);
|
||||||
|
this.notreThese = new These(coordGate[0], coordGate[1], this.cetteTaille, this.map);
|
||||||
|
|
||||||
|
while(this.notreThese.isArrived(coordGate[2], coordGate[3]) != These.ARRIVE){
|
||||||
|
|
||||||
|
Attente attendre = new Attente();
|
||||||
|
this.cetteFrame.addKeyListener(attendre);
|
||||||
|
|
||||||
|
/*nxt = ran.nextInt(4);
|
||||||
|
if(nxt == 0){
|
||||||
|
this.notreThese.goRight();
|
||||||
|
} else if(nxt == 1){
|
||||||
|
this.notreThese.goDown();
|
||||||
|
} else if(nxt == 2){
|
||||||
|
this.notreThese.goLeft();
|
||||||
|
} else {
|
||||||
|
this.notreThese.goTop();
|
||||||
|
}
|
||||||
|
|
||||||
|
this.grille[notreThese.getCoord()[0]][notreThese.getCoord()[1]].peindre(Cellules.VUE);
|
||||||
|
|
||||||
|
compteur++;
|
||||||
|
estInfini(compteur);*/
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user