public void HerbivoreFeedReducesAmountTest() { double initialAmount = 100.0; Herbivore testHerb = new Herbivore(new Random()); double remainder = testHerb.Feed(initialAmount); Assert.NotEqual(initialAmount, remainder); Assert.Equal(initialAmount, remainder + testHerb.Params.F); }
public void HerbivoreFeedIncreasesWeightTest() { Herbivore testHerb = new Herbivore(new Random()); double initialWeight = testHerb.Weight; testHerb.Feed(100.0); double endWeight = testHerb.Weight; Assert.True(initialWeight < endWeight); }
public void HerbivoreFeedZeroAvailableTest() { Herbivore testHerb = new Herbivore(new Random()); double initialWeight = testHerb.Weight; double initalAmount = 0.0; double remainder = testHerb.Feed(initalAmount); double endWeight = testHerb.Weight; Assert.Equal(0, remainder); Assert.Equal(initialWeight, endWeight); }
public void HerbivoreFeedWhenLessThanFTest() { Herbivore testHerb = new Herbivore(new Random()); double F = testHerb.Params.F; double available = F - 5.0; double remainder = testHerb.Feed(available); Assert.Equal(0, remainder); }
public void HerbivoreFeedingIncreasesFitnessTest() { /*food => Phat*/ var testHerbivore = new Herbivore(new Random(), testCoor); var food = 100; testHerbivore.Params.F = 25; var initialFitness = testHerbivore.Fitness; var remainder = testHerbivore.Feed(food); var endFitness = testHerbivore.Fitness; }
public void FeedingUpdatesFitnessTest() { var rng = new Random(); var testHerb = new Herbivore(rng) { Weight = 5, Age = 50 }; var initialF = testHerb.Fitness; var food = 100.0; testHerb.Feed(food); var endF = testHerb.Fitness; Assert.True(initialF < endF); }
public void RunRound() { round_count++; Debug.Log(herbies.Count); float current_total_nutrition = 0; float current_minimium_nutrition = 100000; int i_max = world.GetLength(0); int j_max = world.GetLength(1); for (int i = 0; i < i_max; i++) { for (int j = 0; j < j_max; j++) { world[i, j].Reset(); if (round_count % seed_round == seed_round - 1) { SpreadPlants(new Vector2(i, j)); } world[i, j].GrowPlants(); current_total_nutrition += world[i, j].nutrition; if (world[i, j].nutrition > 0 && world[i, j].nutrition < current_minimium_nutrition) { current_minimium_nutrition = world[i, j].nutrition; } } } for (int i = 0; i < herbies.Count; i++) { if (herbies[i].isAlive) { Vector2 best_spot = herbies[i].Search(SliceOfWorld(herbies[i].GetPerceptionRange())); Vector2 new_sprite_location = new Vector2((best_spot.x - world.GetLength(0) / 2) * StaticData.size_increment, (best_spot.y - world.GetLength(1) / 2) * StaticData.size_increment); herbies[i].MoveTo(best_spot, new_sprite_location); } else { GameObject.Destroy(herbies[i].sprite); herbies.RemoveAt(i); i--; } } List <TerrainTile> occupiedTiles = new List <TerrainTile>(); for (int i = 0; i < herbies.Count; i++) { Herbivore herb = herbies[i]; if (!occupiedTiles.Contains(world[(int)herb.location.x, (int)herb.location.y])) { occupiedTiles.Add(world[(int)herb.location.x, (int)herb.location.y]); } herb.Feed(world[(int)herb.location.x, (int)herb.location.y].EatPlants(herb.GetAppetite())); world[(int)herb.location.x, (int)herb.location.y].grazers.Add(herbies[i]); } for (int i = 0; i < carnies.Count; i++) { if (carnies[i].isAlive) { Vector2 best_spot = carnies[i].Search(SliceOfWorld(carnies[i].GetPerceptionRange())); Vector2 new_sprite_location = new Vector2((best_spot.x - world.GetLength(0) / 2) * StaticData.size_increment, (best_spot.y - world.GetLength(1) / 2) * StaticData.size_increment); carnies[i].MoveTo(best_spot, new_sprite_location); } else { GameObject.Destroy(carnies[i].sprite); carnies.RemoveAt(i); i--; } } for (int i = 0; i < carnies.Count; i++) { Carnivore carn = carnies[i]; if (!occupiedTiles.Contains(world[(int)carn.location.x, (int)carn.location.y])) { occupiedTiles.Add(world[(int)carn.location.x, (int)carn.location.y]); } float meal_size = 0; if (carn.SucessfulHunt()) { meal_size = world[(int)carn.location.x, (int)carn.location.y].EatAnimal(); } carn.Eat(meal_size); } for (int i = 0; i < herbies.Count; i++) { int babies = herbies[i].Reproduce(); for (int b = 0; b < babies; b++) { herbies.Add(herbies[i].CreateBaby(transform, sprite_offset)); } } for (int i = 0; i < carnies.Count; i++) { int babies = carnies[i].Reproduce(); for (int b = 0; b < babies; b++) { carnies.Add(carnies[i].CreateBaby(transform, sprite_offset)); } } max_carnivores.FeedValue(carnies.Count); current_carnivores.FeedValue(carnies.Count); max_plants.FeedValue(current_total_nutrition); current_plants.FeedValue(current_total_nutrition); max_herbivores.FeedValue(herbies.Count); current_herbivores.FeedValue(herbies.Count); }