A predator for foxes - eagles

From TRCCompSci - AQA Computer Science
Revision as of 10:49, 24 May 2017 by Admin (talk | contribs) (Adapt the Location Class to include an Eagle)
Jump to: navigation, search

Create the outline class for an Eagle Class

  1. The class will inherit from the Animal class
  2. This will have two Constants:
    1. DefaultLifeSpan which will be of 6
    2. Probability of Death of value 0.05
  3. There will be a constructor class that makes use of the base class.

The Code

  class Eagle : Animal
  {
      private const int DefaultLifespan = 6;
      private const double DefaultProbabilityDeath = 0.05;

      public Eagle()
          : base(DefaultLifespan, DefaultProbabilityDeath, 45)
      { 
      
      }
  }

45 is just a value to pass for Variability.

Create a new method within the Eagle class called AdvanceGeneration – this will take ShowDetail as a parameter

  1. The procedure will check if the Eagle has been killed by other factors
  2. if it has then it will state that the Eagle has been killed.
  3. If it does not get killed by other factors – the Age will be calculated and again it will check to see if the Eagle has died.
  4. If the Eagle has dies it will state “Eagle died of Old Age”

The Code

      public void AdvanceGeneration(bool ShowDetail)
      {
          if (CheckIfKilledByOtherFactor())
          {
              IsAlive = false;
              if (ShowDetail)
              {
                  Console.WriteLine("  Eagle killed by other factor.");
              }
          }
          else
          {
              CalculateNewAge();
          }

          if (!IsAlive)
          {
            if (ShowDetail)
            {
              Console.WriteLine("  Eagle has died of old age.");
            }
          }
      }

I was able to copy most of this code out of the fox version of advance generation.

Adapt the Location Class to include an Eagle

This is my new Location class after adding the Eagle:

  class Location
  {
    public Fox Fox;
    public Warren Warren;
    public Eagle Eagle;

    public Location()
    {
      Fox = null;
      Warren = null;
      Eagle = null;
    }
  }

In the Simulation class

  1. Create a new Private attribute called EagleCount and set as zero
  2. Create a new Sub Routine called CreateNewEagle() – this will work in the same way as CreateNewFox() but based on Eagle rather than Fox.
  3. In the Simulation after the final iteration structure:

If the timeperiod is a multiple of 3 then call the newly created CreateNewEagle method.

  1. In the Simulation class – adapt the draw landscape so that if there is an Eagle in a location then an E is placed on the board.
  2. Test the program to check that an Eagle appears after 2 time periods

Create a new procedure called EaglesKillFoxes that accepts the parameters of the EaglesX and EaglesY co-ordinate.

Create a new variable called FoxKilled and set to False

The procedure will search through every position on the Landscape and as long as FoxKilled = False the Eagle will attempt to Kill a fox.

The Eagle has a 30% chance of killing a fox – if it is unsuccessful it will then attempt to kill the next fox (and so on).

If the Eagle has not killed a Fox and the chance of killing the fox is within 20% then the FoxKilled variable is set to True. A message is displayed to the user: Eagle killed Fox at positon (X, Y)

FoxCount is decremented by 1

The Landscape Fox is set to Nothing.


Study the AdvanceTimePeriod in the Simulation Class

You will notice that there is a nested For Loop to go through each Warren and there is a nested For Loop to look for each Fox.

  • Create a new Nested For Loop that looks for each Eagle
  • If an Eagle is present then:
If ShowDetail then display:
    Eagle at (X,Y)
Advance a generation for the Eagle
  • If The Eagle at that position in the landscape is Dead then set the location Eagle aspect to Nothing and decrement EagleCount
  • If the Eagle is not killed then call the procedure: EaglesKillFoxes with the X & Y co-ordinates
  • The If Show Detail is True inspect the Eagle

Test this out showing detail and using pre-set values in order to check that the Eagle kills a fox

In the Simulation class create a new Method: MoveEagle