Update 'AlgoAlea.java'

This commit is contained in:
Matthis FAUVET 2023-04-28 20:34:59 +02:00
parent 611740da67
commit 72913ffe11

View File

@ -2,6 +2,12 @@ import java.util.Random;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
/**
* Class pour créer les différent parcours de l'algo Aleatoire
* @version 1.1
* @author Matthis Fauvet
*/
public class AlgoAlea { public class AlgoAlea {
private boolean[][] map; private boolean[][] map;
private Cellules[][] grille; private Cellules[][] grille;
@ -14,6 +20,13 @@ public class AlgoAlea {
private JFrame cetteFrame; private JFrame cetteFrame;
/**
* Class qui créer un objet Algo Aleatoire pour résoudre les labyrinthe
* @param uneTaille c'est la taille du labyrinthe
* @param tableau c'est la grille de true et false qui permet de savoir si une cellules est un mur ou un couloir
* @param uneGrille tableau double dimension qui stock les différentes Cellules.
* @param uneFrame c'est la fenetre qui affiche le labyrinthe
*/
public AlgoAlea(int uneTaille, boolean[][] tableau, Cellules[][] uneGrille, JFrame uneFrame) { public AlgoAlea(int uneTaille, boolean[][] tableau, Cellules[][] uneGrille, JFrame uneFrame) {
this.map = tableau; this.map = tableau;
this.grille = uneGrille; this.grille = uneGrille;
@ -23,17 +36,21 @@ public class AlgoAlea {
/* ==================================== AUtomatique ==================================== */ /* ==================================== AUtomatique ==================================== */
/**
* la méthode auto() permet de parcourir 100 fois le labyrinthe puis de print la moyenne de coup de résolutions
* (en combien de coup a été résolue le lab)
*/
public void auto() { public void auto() {
//outils.PrintGrilleBool(this.map,this.cetteTaille); //outils.PrintGrilleBool(this.map,this.cetteTaille);
//outils.PrintGrilleCell(this.grille, this.cetteTaille); //outils.PrintGrilleCell(this.grille, this.cetteTaille);
int decompte = 0; int decompte = 0;
int[] tabRes = new int[1000]; int[] tabRes = new int[100];
Random ran = new Random(); Random ran = new Random();
int nxt=0; int nxt=0;
while(decompte < 1000){ while(decompte < 100){
int compteur = 0; int compteur = 0;
this.coordGate = outils.ParcoursCell(this.grille, this.cetteTaille); this.coordGate = outils.ParcoursCell(this.grille, this.cetteTaille);
@ -62,6 +79,9 @@ public class AlgoAlea {
/* ==================================== Manuelle ==================================== */ /* ==================================== Manuelle ==================================== */
/**
* la class manuel propose une vision / utilisation manuel de notre algo tout en proposant de voir ses actions étape par étape
*/
public void manuel() { public void manuel() {
this.coordGate = outils.ParcoursCell(this.grille, this.cetteTaille); this.coordGate = outils.ParcoursCell(this.grille, this.cetteTaille);
this.notreThese = new These(coordGate[0], coordGate[1], this.cetteTaille, this.map); this.notreThese = new These(coordGate[0], coordGate[1], this.cetteTaille, this.map);
@ -73,8 +93,12 @@ public class AlgoAlea {
/* ==================================== INFINI ==================================== */ /* ==================================== INFINI ==================================== */
/**
* Dans un cas ou l'algo réalise un trop grand nombre de fois des actions, on peut conjecturer que le lab n'est juste pas finissable.
* @param unCompteur c'est le nombre total de coup/déplacement tenté pour arrivé a la fin
*/
public void estInfini(int unCompteur){ public void estInfini(int unCompteur){
if(unCompteur > 10000){ if(unCompteur > 20000){
this.comptErreur++; this.comptErreur++;
} }
if(this.comptErreur > 3){ if(this.comptErreur > 3){