aboutsummaryrefslogtreecommitdiff
path: root/Week14 Route 66/src/OO14route66/Controller.java
diff options
context:
space:
mode:
authorCamil Staps2015-05-29 08:16:55 +0200
committerCamil Staps2015-05-29 08:16:55 +0200
commita6183f57e9d432feae273c0b294cf90d3e97d835 (patch)
tree3e710a81f4da526142e809e5057ee60f782c651b /Week14 Route 66/src/OO14route66/Controller.java
parentAdded w14 to readme (diff)
comments; cleanup
Diffstat (limited to 'Week14 Route 66/src/OO14route66/Controller.java')
-rw-r--r--Week14 Route 66/src/OO14route66/Controller.java56
1 files changed, 19 insertions, 37 deletions
diff --git a/Week14 Route 66/src/OO14route66/Controller.java b/Week14 Route 66/src/OO14route66/Controller.java
index 3b684dc..83e6098 100644
--- a/Week14 Route 66/src/OO14route66/Controller.java
+++ b/Week14 Route 66/src/OO14route66/Controller.java
@@ -1,21 +1,20 @@
package OO14route66;
+import com.camilstaps.route66.Driver;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
- * OO1route66 initial class
- * @author Pieter Koopman
+ * Route66 Controller
+ * @author Pieter Koopman, Camil Staps
*
* The initial controller runs as a single thread
*/
-public class Controller
-{
- private int delay = 200; // average sleep time
+public class Controller {
+ private int delay = 120; // average sleep time
private final Model model; // the model
private final Random random; // a random generator
- private boolean run = true; // car can run in simulation
/**
* The constructor of the controller
@@ -27,53 +26,33 @@ public class Controller
}
/**
- * the run method from Thread
- * forever:
- * move all cars
- * sleep some time
+ * Tell the drivers of all cars in the model to start driving
*/
public void run() {
ExecutorService service = Executors.newCachedThreadPool();
for (Car car : model.getCars()) {
- service.execute(car.getDriver());
+ Driver d = car.getDriver();
+ d.setDelay(delay);
+ service.execute(d);
}
}
/**
- * wait some pseudo random time
- */
- private void pause() {
- try { // sleep can throw an exception
- Thread.sleep(delay / 2 + random.nextInt(delay));
- }
- catch (InterruptedException e) { // catch the exception thrown by sleep
- System.out.println("An exception in Controller: " + e);
- }
- }
-
- /**
- * make one step with all cars and repaint views.
- */
- public void stepAllCars() {
- if (run) {
- for (int c = 0; c < Model.NUMBEROFCARS; c += 1) {
- model.getCar(c).step();
- }
- }
- model.update(); // update only after all cars have stepped
- }
- /**
* stop all cars by setting boolean run to false
*/
public void stopCars() {
- run = false;
+ for (Car car : model.getCars()) {
+ car.getDriver().setRunning(false);
+ }
}
/**
* start all cars by setting boolean run to true
*/
public void resumeCars() {
- run = true;
+ for (Car car : model.getCars()) {
+ car.getDriver().setRunning(true);
+ }
}
public int getDelay() {
@@ -85,6 +64,9 @@ public class Controller
* @param d
*/
public void setDelay(int d) {
- delay = Math.max(50, Math.min (2000, d));
+ delay = Math.max(20, Math.min (2000, d));
+ for (Car car : model.getCars()) {
+ car.getDriver().setDelay(delay);
+ }
}
}