Easy Coding
  Forum Wiki Tagging Projekte Karte RSS
» Start
» All Recent Changes
» Wiki Suche
» Wiki Hilfe

Coder How To's

Algorithmen Informationen

edit SideBar

Neue Wiki Eintrage finden Sie unter easy-coding.de/wiki.

Java-Observer

Roboter bewegen sich nacheinander in zufällige Richtungen.

Das Programm funktioniert ab Java Version 1.5.

RoboterObserver
  1. import java.util.*;
  2. public class RoboterObserver {
  3.         public static void main(String[] args) {
  4.                 StepTimer t = new StepTimer();
  5.                 t.addObserver(new Robot("Adam"));
  6.                 t.addObserver(new Robot("Eva"));
  7.                 t.addObserver(new Robot("Cindy"));
  8.                 t.addObserver(new Robot("Bert"));
  9.                 t.start();
  10.         }
  11. }
  12.  
  13. /**
  14. * Sleeptimer
  15. */
  16. class StepTimer extends Observable {   
  17.         public void start() {
  18.                 while(true) {
  19.                         //Eine kleine Sleep Funktion, damit die CPU nicht fortlaufend mit 100% werkelt
  20.                         try {
  21.                             Thread.sleep(1000);
  22.                             setChanged();
  23.                             notifyObservers();
  24.                         } catch (Exception e){
  25.                             // Zu viel Koffein
  26.                         }
  27.                 }
  28.         }
  29. }
  30.  
  31. /**
  32. * Roboter
  33. */
  34. class Robot implements Observer {
  35.         String name;
  36.         int x=50, y=50, step=0;
  37.  
  38.         /**
  39.          * Konstruktor
  40.          */
  41.         Robot(String name) {
  42.                 this.name = name;
  43.         }
  44.  
  45.         /**
  46.          * gibt +1, -1 oder nil zurueck
  47.          */
  48.         private int leftRightOrUpDown() {
  49.                 double d = Math.random();
  50.                 if (d<0.4) return -1;
  51.                 if (d<0.8) return 1;
  52.                 return 0;
  53.         }
  54.  
  55.         /**
  56.          * Updatet die Position
  57.          * @param o Observer
  58.          * @param arg unbenutzt
  59.          */
  60.         public void update(Observable o, Object arg) {
  61.                 System.out.print(this.name+" bewegt sich im "+(++this.step)+
  62.                                 ". Schritt von ("+this.x+","+this.y+")");
  63.                 do
  64.                         this.x += leftRightOrUpDown();
  65.                 while(this.x > 100 || this.x < 0);
  66.  
  67.  
  68.                 do
  69.                         this.y += leftRightOrUpDown();
  70.                 while(this.y > 100 || this.y < 0);
  71.  
  72.                 System.out.println(" nach ("+this.x+","+this.y+")");
  73.         }
  74. }
Zuletzt geändert am 01.10.2006 14:18 Uhr
  Impressum