dimanche 7 juin 2015

Ampelsteuerung mit Timer

hi,

ich habe hier meine Ampelsteuerung implementiert:
Java Code:

  1.  
  2. public class Ampelsteuerung implements ActionListener{
  3.  
  4.  
  5. protected Ampel[] ampeln;
  6.  
  7. public void actionPerformed(ActionEvent e){
  8. if (e.getActionCommand().equals("NEXT_PHASE")){
  9. for (Ampel ampel : this.ampeln) {
  10. ampel.toNextPhase();
  11. }
  12. }
  13. }
  14.  
  15.  
  16.  
  17.  
  18. }

und hier meine public class Ampel:

Java Code:

  1.  
  2. public class Ampel implements Drawable {
  3.  
  4. protected int x;
  5. protected int y;
  6. protected String phase;
  7.  
  8. public Ampel(int x, int y, String phase){
  9. this.x = x;
  10. this.y = y;
  11. this.phase = phase;
  12. }
  13.  
  14. public Ampel(int x, int y){
  15. this.phase = Ampelphase.rot;
  16. this.x = x;
  17. this.y = y;
  18. }
  19.  
  20. public Ampel(Ampel a){
  21. this.x = a.x;
  22. this.y = a.y;
  23. this.phase = a.phase;
  24. }
  25.  
  26. public String toString(){
  27. return String.format("[X = %03d Y = %03d Phase = %03s]", x, y, phase);
  28. }
  29.  
  30.  
  31. public void toNextPhase(){
  32. if (phase == "rot"){
  33. phase = Ampelphase.rotGelb;
  34. }
  35. if (phase == "rotGelb"){
  36. phase = Ampelphase.gruen;
  37. }
  38. if (phase == "gelb"){
  39. phase = Ampelphase.rot;
  40. }
  41. if (phase == "grün"){
  42. phase = Ampelphase.gelb;
  43. }
  44. }
  45.  
  46. public void draw(Graphics g){
  47. g.setColor(Color.GRAY);
  48. g.fillRect(x, y, 100, 200);
  49.  
  50. if (phase == "rot"){
  51. g.setColor(Color.RED);
  52. g.fillOval(x + 25 , y + 15, 50, 50);
  53. g.setColor(Color.LIGHT_GRAY);
  54. g.fillOval(x + 25, y + 70, 50, 50);
  55. g.setColor(Color.LIGHT_GRAY);
  56. g.fillOval(x + 25, y + 125, 50, 50);
  57. }
  58. if (phase == "gelb"){
  59. g.setColor(Color.LIGHT_GRAY);
  60. g.fillOval(x + 25 , y + 15, 50, 50);
  61. g.setColor(Color.YELLOW);
  62. g.fillOval(x + 25, y + 70, 50, 50);
  63. g.setColor(Color.LIGHT_GRAY);
  64. g.fillOval(x + 25, y + 125, 50, 50);
  65. }
  66. if (phase == "grün"){
  67. g.setColor(Color.LIGHT_GRAY);
  68. g.fillOval(x + 25 , y + 15, 50, 50);
  69. g.setColor(Color.LIGHT_GRAY);
  70. g.fillOval(x + 25, y + 70, 50, 50);
  71. g.setColor(Color.GREEN);
  72. g.fillOval(x + 25, y + 125, 50, 50);
  73. }
  74.  
  75.  
  76. }
  77.  
  78.  
  79. }

in der Klasse Ampeltest sollen wir nun die Ampeln ausgeben lassen mit dem timer:

Java Code:

  1.  
  2. public class Ampeltest {
  3.  
  4.  
  5. public static void main(String[] args) {
  6. DirtyPainter painter = new DirtyPainter();
  7. Ampel a = new Ampel(3, 3);
  8. Ampelsteuerung steuerung = new Ampelsteuerung();
  9. Timer timer = new Timer(1500, steuerung);
  10. timer.setActionCommand("NEXT_PHASE");
  11. timer.addActionListener(steuerung);
  12. timer.start();
  13. painter.add(a);
  14. painter.showDrawing();
  15.  
  16.  
  17.  
  18. }
  19.  
  20.  
  21. }


meine Frage ist jetzt, wie ich der Ampelsteuerung bescheid geben kann, das der Timer gestartet ist und er alle Ampeln im Array umschalten soll ?

Ampelsteuerung, Ampel und Ampeltest sind eigene public classes.

Danke für eure Antworten


Ampelsteuerung mit Timer

0 commentaires:

Enregistrer un commentaire