using MorgSimulator; using MorgSimulator.Reader; using MorgSimulator.Factory; var dish = new Dish(); var factory = new MorgFactory(); var fileReader = new FileReader("morgs.txt"); var csvReader = new CSVReader(fileReader); var morgReader = new MorgReader(csvReader, factory); int id = 1; while (!morgReader.EndOfStream) { var morg = morgReader.ReadMorg(id++); if (morg != null) dish.AddMorg(morg); } morgReader.Close(); const int RUN_TIME = 15; for (int timeStep = 0; timeStep < RUN_TIME; timeStep++) foreach (var morg in dish.GetAllMorgs()) if (morg.IsAlive) { if (morg.Prey == null || !morg.Prey.IsAlive) { var nearestPrey = dish.FindNearestPrey(morg); if (nearestPrey != null) { nearestPrey.Attach(morg); morg.Prey = nearestPrey; morg.Direction = morg.CalculateDirectionToTarget(nearestPrey.Location); } } morg.Move(); morg.Notify(); if (morg.Prey != null && morg.Prey.IsAlive && morg.DistanceTo(morg.Prey.Location) <= 1.0) morg.Feed(); }