blob: 29fd971d77e88eebea7a3fe847be8c4c10bc7cc6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
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();
}
|