Roboter bewegen sich nacheinander in zufällige Richtungen.
Das Programm funktioniert ab Java Version 1.5.
RoboterObserver
import java.util.*;
public class RoboterObserver {
public static void main
(String[] args
) {
StepTimer t = new StepTimer();
t.
addObserver(new Robot("Adam"));
t.
addObserver(new Robot("Eva"));
t.
addObserver(new Robot("Cindy"));
t.
addObserver(new Robot("Bert"));
t.start();
}
}
/**
* Sleeptimer
*/
public void start() {
while(true) {
//Eine kleine Sleep Funktion, damit die CPU nicht fortlaufend mit 100% werkelt
try {
setChanged();
notifyObservers();
// Zu viel Koffein
}
}
}
}
/**
* Roboter
*/
int x=50, y=50, step=0;
/**
* Konstruktor
*/
this.name = name;
}
/**
* gibt +1, -1 oder nil zurueck
*/
private int leftRightOrUpDown() {
double d =
Math.
random();
if (d<0.4) return -1;
if (d<0.8) return 1;
return 0;
}
/**
* Updatet die Position
* @param o Observer
* @param arg unbenutzt
*/
System.
out.
print(this.
name+
" bewegt sich im "+
(++
this.
step)+
". Schritt von ("+this.x+","+this.y+")");
do
this.x += leftRightOrUpDown();
while(this.x > 100 || this.x < 0);
do
this.y += leftRightOrUpDown();
while(this.y > 100 || this.y < 0);
System.
out.
println(" nach ("+
this.
x+
","+
this.
y+
")");
}
}