// AP(r) Computer Science Marine Biology Simulation:
// The Simulation class is copyright(c) 2002 College Entrance
// Examination Board (www.collegeboard.com).
//
// This class is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation.
//
// This class is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
/**
* AP® Computer Science Marine Biology Simulation:
* A Simulation
object controls a simulation of fish
* movement in an Environment
.
*
*
* The Simulation
class is
* copyright© 2002 College Entrance Examination Board
* (www.collegeboard.com).
*
* @author Alyce Brady
* @version 1 July 2002
* @see Environment
* @see EnvDisplay
* @see Fish
**/
public class Simulation
{
// Instance Variables: Encapsulated data for each simulation object
private Environment theEnv;
private EnvDisplay theDisplay;
private int timestep;
/** Constructs a Simulation
object for a particular
* environment.
* @param env the environment on which the simulation will run
* @param display an object that knows how to display the environment
**/
public Simulation(Environment env, EnvDisplay display)
{
theEnv = env;
theDisplay = display;
timestep = 0;
// Display the initial state of the simulation.
theDisplay.showEnv();
Debug.println("-------- Initial Configuration --------");
Debug.println(theEnv.toString());
Debug.println("---------------------------------------");
}
/** Runs through a single step of this simulation. **/
public void step()
{
// Debug.turnOn();
timestep++;
// Get all the fish in the environment and ask each
// one to perform the actions it does in a timestep.
Locatable[] theFishes = theEnv.allObjects();
for ( int index = 0; index < theFishes.length; index++ )
{
((Fish)theFishes[index]).act();
}
// Display the state of the simulation after this timestep.
theDisplay.showEnv();
Debug.println(theEnv.toString());
Debug.println("-------- End of Timestep " + timestep + " --------");
// Debug.restoreState();
}
}