1 The Challenge You will be simulating a cross-section of a garden - including soil and sky. The simulation will include ants and butterflies moving through the above and below-ground space. The simulation will include the ants (all one size Failifaland can dig tunnels), butterflies (various sizes and colours), terrain (soil surface and sub-surface tunnels), plants and food sources, and hazards (such as rain/water). This will be plotted as a side-view of the activities. The model can be assumed flat/2- D - there are bonus marks for 3D, but not required.We will provide some sample code to start this assignment, and additional code showing a range of approaches to assignments from previous semesters. For the assignment, you will develop code to model the ships using objects, and to add features to the simulation (e.g. more interaction between animals, graphics). Your task is to extend the code and then showcase your simulation, varying the input parameters, to show how they impact the overall simulation.Note: You do not have to use the supplied sample code, however, any other code that you have not written (e.g. sourced from others, online or generated etc.) will not receive marks. Lecture/practical and test materials from COMP1005/5005 are exempt, however, they must be referenced. The required extensions to simGarden.py are: 1. Animals: Represented as objects that "know" their position and type and can strategise on their next activity. There should be (semi) random movement for at least ants and butterflies, plus two animals of your choice Prompts: How will you represent the animals themselves, and differentiate between them in the simulation. What types of other animals will you include? Perhaps some twiddlebugs? 2. Terrain: There should be at least two types of terrain - under and above ground. Different animals will traverse their terrains in their own manner, although within a class they should have the same patterns. what strategy will they use to move towards the port on each timestep Prompts: How will the animal know what terrain it is in? How will this affect their choice of movement for each time step? 3. Water: If it rains, the creatures may go for cover. You can also model the movement of the water - we do not need a full computational fluid dynamics simulation! Prompts: Will rain fall randomly, or will water come through at a level? Can the animals apply a strategy for dealing with water? 4. Obstacles and Destinations: There will be rocks and plants and other obstacles to your creatures moving around. How will you represent the obstacles, then how will you locate and respond to them? You will also need to have target areas or object that the animals seek out. Prompts: Rocks will be underground and can stop the progress for tunnel-digging? Plants above ground can't be flown through, but can be landed on. 5. Lifecycle: Each creature will have a lifecycle. You should find out the stages of the lifecycles for ants and butterflies as a starting point. Prompts: What stage of life will the animals begin in? How will you track the animal's stage of life, and when it transitions to being in another phase? 6. Collisions/Interaction: How will your creatures seek out or avoid each other? They will need to detect each other and take action, with a decision being made on the outcome of any interactions. Prompts: How will you detect a collision is imminent? What strategies will you have for the animals to avoid each other? The file must contain the following: . Code - simGarden.py and supporting files, i.e. all files needed to run your program, including input files