Update 'AlgoAlea.java'
This commit is contained in:
parent
611740da67
commit
72913ffe11
@ -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){
|
||||||
|
Loading…
Reference in New Issue
Block a user