Skip to content
Snippets Groups Projects
Assignment7ConstantRate2Movers.java 3.14 KiB

package mv3302.run;
import java.awt.geom.Point2D;
import java.util.ArrayList;
import java.util.List;
import mv3302.SimpleConstantRateMediator;
import mv3302.SimpleMover;
import mv3302.SimplePathMoverManager;
import mv3302.SimpleReferee;
import mv3302.sensor.AbstractSimpleSensor;
import mv3302.sensor.SimpleConstantRateSensor;
import simkit.Schedule;
import simkit.random.RandomVariate;
import simkit.random.RandomVariateFactory;
import simkit.smd.Mover;
import simkit.smd.Sensor;
import simkit.util.SimplePropertyDumper;

/**
 *
 * @author dansl
 */
public class Assignment7ConstantRate2Movers {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        RandomVariate exponentialGenerator = RandomVariateFactory.getInstance("Exponential", .7);
        SimpleMover mover1 = new SimpleMover(new Point2D.Double(-20.0, 0.0), 30.0);
        AbstractSimpleSensor sensor1 = new SimpleConstantRateSensor(mover1, 20.0, 5.0);
        Point2D[] moverPath1 = new Point2D[]{
            new Point2D.Double(100.0, 0.0)
        };
        SimplePathMoverManager moverManager1 = new SimplePathMoverManager(moverPath1, true);
        
        mover1.addSimEventListener(moverManager1);
        moverManager1.addSimEventListener(mover1);
        
        SimpleMover mover2 = new SimpleMover(new Point2D.Double(50.0, 0.0), 40.0);
        AbstractSimpleSensor sensor2 = new SimpleConstantRateSensor(mover2, 30.0, 5.0);
        Point2D[] moverPath2 = new Point2D[] {
            new Point2D.Double(-100.0, 0.0)
        };
        SimplePathMoverManager moverManager2 = new SimplePathMoverManager(moverPath2, true);
        mover2.addSimEventListener(moverManager2);
        moverManager2.addSimEventListener(mover2);

        SimplePropertyDumper simplePropertyDumper = new SimplePropertyDumper(true);
        mover1.addPropertyChangeListener(simplePropertyDumper);
        moverManager1.addPropertyChangeListener(simplePropertyDumper);
        sensor1.addPropertyChangeListener(simplePropertyDumper);
        
        mover2.addPropertyChangeListener(simplePropertyDumper);
        moverManager2.addPropertyChangeListener(simplePropertyDumper);
        sensor2.addPropertyChangeListener(simplePropertyDumper);
        
        List<Mover> targets = new ArrayList<>();
        targets.add(mover1);
        targets.add(mover2);
        
        List<Sensor> sensors = new ArrayList<>();
        sensors.add(sensor1);
        sensors.add(sensor2);
        
        SimpleReferee referee = new SimpleReferee(sensors, targets);
        
        SimpleConstantRateMediator mediator1 = new SimpleConstantRateMediator(exponentialGenerator);
        referee.addSimEventListener(mediator1);
        
        System.out.println(mover1.paramString());
        System.out.println(moverManager1);
        System.out.println(sensor1.paramString());
        
        System.out.println(mover2.paramString());
        System.out.println(moverManager2);
        System.out.println(sensor2.paramString());
        
        System.out.println(referee);
        
        Schedule.setVerbose(true);
        
        Schedule.reset();
        Schedule.startSimulation();
        
    }
    
}