Guest User

Untitled

a guest
Apr 26th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. class Visiteur extends Thread {
  4. private static Random alea = new Random();
  5. int salle;
  6. int nbSalles;
  7. boolean[] visitee;
  8. boolean fini;
  9. Controleur gardien;
  10. final int captotsalle = 3;
  11.  
  12.  
  13. Visiteur(String who, Controleur pgardien, int nb) {
  14. setName(who);
  15. nbSalles = nb; // l’exterieur est codé comme une salle
  16. salle = 0; // le visiteur est initialement à l’extérieur
  17. visitee = new boolean[nbSalles];
  18. visitee[0] = true; // l’extérieur est visité
  19. this.gardien = pgardien;
  20. for (int i = 1; i < nbSalles; i++)
  21. visitee[i] = false; // aucune "vraie" salle n’est visitée
  22. }
  23.  
  24. public void bouger() {
  25. // il va au hasard dans une des deux salles voisines.
  26. if (alea.nextBoolean())
  27. salle = (salle + 1) % nbSalles;
  28. else
  29. salle = (salle - 1 + nbSalles) % nbSalles;
  30.  
  31. //System.out.println(getName() + " dans la salle " + salle);
  32. // il dort pendant les commentaires du guide
  33. try {
  34. if(this.gardien.getCapaciteSalle(salle) < this.captotsalle){
  35. visitee[salle] = true;
  36. this.gardien.entree(salle);
  37. Thread.sleep(alea.nextInt(1000));
  38. this.gardien.sortir(salle);
  39. }
  40. else{
  41. System.out.println("Le visiteur " + this.getName() + " ne peux pas rentre dans la salle car trop de monde y est");
  42. }
  43.  
  44.  
  45. } catch (InterruptedException ie) {
  46. }
  47. // il a fini s’il a vu toutes les salles et si il est sorti du musée
  48. if (salle == 0) {
  49. fini = true;
  50. for (int i = 0; i < nbSalles; i++)
  51. fini &= visitee[i];
  52. } else
  53. fini = false;
  54. }
  55.  
  56. public void run() {
  57. while (!fini)
  58. bouger();
  59. }
  60. }
Add Comment
Please, Sign In to add comment