Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- class Visiteur extends Thread {
- private static Random alea = new Random();
- int salle;
- int nbSalles;
- boolean[] visitee;
- boolean fini;
- Controleur gardien;
- final int captotsalle = 3;
- Visiteur(String who, Controleur pgardien, int nb) {
- setName(who);
- nbSalles = nb; // l’exterieur est codé comme une salle
- salle = 0; // le visiteur est initialement à l’extérieur
- visitee = new boolean[nbSalles];
- visitee[0] = true; // l’extérieur est visité
- this.gardien = pgardien;
- for (int i = 1; i < nbSalles; i++)
- visitee[i] = false; // aucune "vraie" salle n’est visitée
- }
- public void bouger() {
- // il va au hasard dans une des deux salles voisines.
- if (alea.nextBoolean())
- salle = (salle + 1) % nbSalles;
- else
- salle = (salle - 1 + nbSalles) % nbSalles;
- //System.out.println(getName() + " dans la salle " + salle);
- // il dort pendant les commentaires du guide
- try {
- if(this.gardien.getCapaciteSalle(salle) < this.captotsalle){
- visitee[salle] = true;
- this.gardien.entree(salle);
- Thread.sleep(alea.nextInt(1000));
- this.gardien.sortir(salle);
- }
- else{
- System.out.println("Le visiteur " + this.getName() + " ne peux pas rentre dans la salle car trop de monde y est");
- }
- } catch (InterruptedException ie) {
- }
- // il a fini s’il a vu toutes les salles et si il est sorti du musée
- if (salle == 0) {
- fini = true;
- for (int i = 0; i < nbSalles; i++)
- fini &= visitee[i];
- } else
- fini = false;
- }
- public void run() {
- while (!fini)
- bouger();
- }
- }
Add Comment
Please, Sign In to add comment