/* Copyright 2006 by Daniel Kuebrich Licensed under the Academic Free License version 3.0 See the file "LICENSE" for more information */ package sim.app.keepaway; import java.awt.*; import sim.engine.*; import sim.field.continuous.*; import sim.util.*; public /*strictfp*/ class Keepaway extends SimState { private static final long serialVersionUID = 1; /** @todo handle realocation of grids when these two are changed */ public double xMin = 0; public double xMax = 100; public double yMin = 0; public double yMax = 100; public Continuous2D fieldEnvironment; /** Creates a Keepaway simulation with the given random number seed. */ public Keepaway(long seed) { this(seed, 100, 100); } public Keepaway(long seed, int width, int height) { super(seed); xMax = width; yMax = height; createGrids(); } void createGrids() { fieldEnvironment = new Continuous2D(25, (xMax - xMin), (yMax - yMin)); } /** Resets and starts a simulation */ public void start() { super.start(); // clear out the schedule createGrids(); Bot b; double x,y; // bot 1-1 x = random.nextDouble()*xMax; y = random.nextDouble()*yMax; b = new Bot(x, y, Color.red); b.cap = 0.65; fieldEnvironment.setObjectLocation(b, new Double2D(x,y)); schedule.scheduleRepeating(b); // bot 2-1 x = random.nextDouble()*xMax; y = random.nextDouble()*yMax; b = new Bot(x, y, Color.blue); b.cap = 0.5; fieldEnvironment.setObjectLocation(b, new Double2D(x,y)); schedule.scheduleRepeating(b); // bot 2-2 x = random.nextDouble()*xMax; y = random.nextDouble()*yMax; b = new Bot(x, y, Color.blue); b.cap = 0.5; fieldEnvironment.setObjectLocation(b, new Double2D(x,y)); schedule.scheduleRepeating(b); // bot 2-3 x = random.nextDouble()*xMax; y = random.nextDouble()*yMax; b = new Bot(x, y, Color.blue); b.cap = 0.5; fieldEnvironment.setObjectLocation(b, new Double2D(x,y)); schedule.scheduleRepeating(b); // ball Ball ba; x = random.nextDouble()*xMax; y = random.nextDouble()*yMax; ba = new Ball(x, y); fieldEnvironment.setObjectLocation(ba, new Double2D(x,y)); schedule.scheduleRepeating(ba); } public static void main(String[] args) { doLoop(Keepaway.class, args); System.exit(0); } }