public void life(int periodOfLife) { LifeTools Delegate1 = Consume; int i, j; int found = 0; bool dead; Carnivore prototypeOfWolf; Herbivore prototypeOfRabbit; Plant prototypeOfFlower; Println(); for (i = 0; i < periodOfLife; i++) { try { Thread.Sleep(500); } catch (ArgumentOutOfRangeException exc) { System.Console.WriteLine("Error while thread was sleeping"); System.Console.WriteLine(exc); } //Println(); //Wolfs live for (j = 0; j < wolf.Count(); j++) { dead = false; prototypeOfWolf = wolf[j]; if (prototypeOfWolf.moveToday != 0) { if (prototypeOfWolf.Grow() == 1) { Death(prototypeOfWolf); dead = true; } else { found = FindClosestFormOfLife(prototypeOfWolf); if (found == 0) { MoveToClosest(Delegate1, prototypeOfWolf); } } if (!dead) { if (CheckIllness(prototypeOfWolf)) { if (prototypeOfWolf.Grow() == 1) { Death(prototypeOfWolf); dead = true; } } } if (found == 0 || dead) { Println(); try { Thread.Sleep(500); } catch (ArgumentOutOfRangeException exc) { System.Console.WriteLine("Error while thread was sleeping"); System.Console.WriteLine(exc); } } } if (!dead) { prototypeOfWolf.moveToday = prototypeOfWolf.speed; } } //println(); //Rabbits live for (j = 0; j < rabbit.Count(); j++) { dead = false; prototypeOfRabbit = rabbit[j]; if (prototypeOfRabbit.moveToday != 0) { if (prototypeOfRabbit.Grow() == 1) { Death(prototypeOfRabbit); dead = true; } else { found = FindClosestFormOfLife(prototypeOfRabbit); if (found == 0) { MoveToClosest(Delegate1, prototypeOfRabbit); } } if (!dead) { if (CheckIllness(prototypeOfRabbit)) { if (prototypeOfRabbit.Grow() == 1) { Death(prototypeOfRabbit); dead = true; } } } if (found == 0 || dead) { Println(); try { Thread.Sleep(500); } catch (ArgumentOutOfRangeException exc) { System.Console.WriteLine("Error while thread was sleeping"); System.Console.WriteLine(exc); } } } if (!dead) { prototypeOfRabbit.moveToday = prototypeOfRabbit.speed; } } //println(); //Flowers live for (j = 0; j < flower.Count; j++) { dead = false; prototypeOfFlower = flower[j]; if (prototypeOfFlower.reproductedToday == 0) { if (prototypeOfFlower.Grow() == 1) { Death(prototypeOfFlower); dead = true; } else if (!CheckIllness(prototypeOfFlower)) { prototypeOfFlower.reproductedToday = Reproduction(prototypeOfFlower); } } if (prototypeOfFlower.reproductedToday > 0 || dead) { Println(); try { Thread.Sleep(500); } catch (ArgumentOutOfRangeException exc) { System.Console.WriteLine(exc); } } if (!dead) { prototypeOfFlower.reproductedToday = 0; } } day++; //Println(); } }
void MoveToClosest(LifeTools consuming, Animal seeker) { int i, j = 0; int movable = 0; if (seeker.x != xClosest && seeker.moveToday != 0) { j = seeker.moveToday; for (i = 0; i < j; i++) { if (seeker.x < xClosest) { if (world[seeker.x + 1, seeker.y] == 'r' && seeker.symbol == 'w') { seeker.moveToday = 1; consuming(seeker); movable = 1; } else if (world[seeker.x + 1, seeker.y] == 177 && seeker.symbol == 'r') { seeker.moveToday = 1; consuming(seeker); movable = 1; } else if (world[seeker.x + 1, seeker.y] == 177 && seeker.symbol == 'w') { seeker.moveToday = 1; world[seeker.x, seeker.y] = '.'; Destroy(seeker.x + 1, seeker.y); movable = 1; } else if (world[seeker.x + 1, seeker.y] == '.') { world[seeker.x, seeker.y] = '.'; movable = 1; } if (movable == 1) { seeker.moveToday--; world[seeker.x + 1, seeker.y] = seeker.symbol; seeker.x++; movable = 0; } } } j = seeker.moveToday; for (i = 0; i < j; i++) { if (seeker.x > xClosest) { if (world[seeker.x - 1, seeker.y] == 'r' && seeker.symbol == 'w') { seeker.moveToday = 1; consuming(seeker); movable = 1; } else if (world[seeker.x - 1, seeker.y] == 177 && seeker.symbol == 'r') { seeker.moveToday = 1; consuming(seeker); movable = 1; } else if (world[seeker.x - 1, seeker.y] == 177 && seeker.symbol == 'w') { seeker.moveToday = 1; world[seeker.x, seeker.y] = '.'; Destroy(seeker.x - 1, seeker.y); movable = 1; } else if (world[seeker.x - 1, seeker.y] == '.') { world[seeker.x, seeker.y] = '.'; movable = 1; } if (movable == 1) { seeker.moveToday--; world[seeker.x - 1, seeker.y] = seeker.symbol; seeker.x--; movable = 0; } } } } if (seeker.y != yClosest && seeker.moveToday != 0) { j = seeker.moveToday; for (i = 0; i < j; i++) { if (seeker.y < yClosest) { if (world[seeker.x, seeker.y + 1] == 'r' && seeker.symbol == 'w') { seeker.moveToday = 1; consuming(seeker); movable = 1; } else if (world[seeker.x, seeker.y + 1] == 177 && seeker.symbol == 'r') { seeker.moveToday = 1; consuming(seeker); movable = 1; } else if (world[seeker.x, seeker.y + 1] == 177 && seeker.symbol == 'w') { seeker.moveToday = 1; world[seeker.x, seeker.y] = '.'; Destroy(seeker.x, seeker.y + 1); movable = 1; } else if (world[seeker.x, seeker.y + 1] == '.') { world[seeker.x, seeker.y] = '.'; movable = 1; } if (movable == 1) { seeker.moveToday--; world[seeker.x, seeker.y + 1] = seeker.symbol; seeker.y++; movable = 0; } } } j = seeker.moveToday; for (i = 0; i < j; i++) { if (seeker.y > yClosest) { if (world[seeker.x, seeker.y - 1] == 'r' && seeker.symbol == 'w') { seeker.moveToday = 1; consuming(seeker); movable = 1; } else if (world[seeker.x, seeker.y - 1] == 177 && seeker.symbol == 'r') { seeker.moveToday = 1; consuming(seeker); movable = 1; } else if (world[seeker.x, seeker.y - 1] == 177 && seeker.symbol == 'w') { seeker.moveToday = 1; world[seeker.x, seeker.y] = '.'; Destroy(seeker.x, seeker.y - 1); movable = 1; } else if (world[seeker.x, seeker.y - 1] == '.') { world[seeker.x, seeker.y] = '.'; movable = 1; } if (movable == 1) { seeker.moveToday--; world[seeker.x, seeker.y - 1] = seeker.symbol; seeker.y--; movable = 0; } } } } }