84 lines
2.7 KiB
Java
84 lines
2.7 KiB
Java
import java.awt.event.KeyEvent;
|
|
import java.awt.event.KeyListener;
|
|
import java.util.Random;
|
|
import javax.swing.*;
|
|
|
|
/**
|
|
* La class Attente inclu un KeyListener, cette classe a pour objectif d'attendre une entré sur la touche espace du clavier
|
|
* pour regarder le parcours qu'emprunte l'algorithme
|
|
* @version 1.1
|
|
* @author Matthis Fauvet
|
|
*/
|
|
|
|
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;
|
|
|
|
/**
|
|
* Class qui créer un objet Algo determinatif pour résoudre le Labyrinthe
|
|
* @param unPerso On rentre un objet de type These qui est l'objet qui va parcourir notre labyrinthe
|
|
* @param grille grille C'est la grille qui va être parcourue comme le labyrinthe
|
|
* @param coord Ce sont les coordonnées des portes d'entrées et de sortie
|
|
*/
|
|
public Attente(These unPerso, Cellules[][] grille, int[] coord){
|
|
this.notreThese = unPerso;
|
|
this.grilleCellules = grille;
|
|
this.compteur=0;
|
|
this.rand = new Random();
|
|
this.coordGate = coord;
|
|
}
|
|
|
|
/**
|
|
* Méthode qui a chaque fois que la barre "espace" est cliqué on parcours notre tableau dans une directions aléatoire
|
|
* @param e On rentre
|
|
*/
|
|
@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");
|
|
}
|
|
}
|