You are inheriting a code base. You cannot start from scratch and build your own, because you will almost never get that opportunity on the job. You must read the current code with your teammates and try to understand what it is doing. Then you must refactor it - even if it means deleting some of the code that currently exists - to build the rest of the features.
The goal of this group project, likely more than any other one, is to learn. Focusing on productivity is something you will need to worry about on the job. Have fun with this code, make lots of mistakes, refactor them, and learn about what you can do with Python.
This will be a large challenge. How will you respond to it? Attack it with excitement, or withdraw from it in defeat? Time to see how far you have come with working on your Growth Mindset.
- Everyone clone the repository
cd
to the project directory- Run the command
pip install -r requirements.txt
- Run the command
python index.py
to start your application (do not use AREPL for this project)
- You will not learn anything in this group project if you don't communicate well with each other.
- You will not get anything done if you don't communicate well with each other.
- Collaboration is key in this project. Working solo will get you nowhere.
- Showing up late, extended lunches, going home early and leaving your team stranded will get you pulled off the team.
- Create pull request and issue ticket templates for your team.
You and your friends have decided to connect with the earth again and abandon your reliance on technology and urban vices. You have decided to move to Hawaii and join the land management team for the Keahua Arboretum.
You have met with other foresters and land managers and have decided on the animals and plants below to focus on growing and maintaining for the arboretum.
Listed below are the different biomes, or habitats, that exist in the arboretum and how many new plants and animals that can be introduced into it.
Mountain | Grassland | River | Forest | Swamp | Coastline | |
---|---|---|---|---|---|---|
Capacity | 4 plants 6 animals |
15 plants 22 animals |
6 plants 12 animals |
32 plants 20 animals |
12 plants 8 animals |
3 plants 15 animals |
Characteristics | High elevation | Little rainfall, No shade |
Fresh water | Rainy, Shady |
Stagnant fresh water | Saltwater |
This is a list of animals that you and your teammates are in charge of raising, feeding (when needed), releasing, and tracking. Animals should not be released into the wild before their recommended release age. Animals should not be fed anything other than their recommended prey.
Pueo | River Dolphins | 'Ulae | Gold Dust Day Gecko | Nene Goose | Kīkākapu | Ope'ape'a | Hawaiian Happy-Face Spider | |
---|---|---|---|---|---|---|---|---|
Location | Grassland or Forest | River or Coastline | Coastline | Forest | Grassland | Swamp or River | Forest or Mountain | Swamp |
Prey/Food | Rodents | Fish | Fish | Insects | Vegetation | Fish | Insects and Vegetation | Insects |
Minimum Release Age (in months) |
8 | 13 | 1 | 2 | 7 | 1 | 5 | 0.5 |
Rainbow Eucalyptus Tree | Silversword | Mountain Apple Tree | Blue Jade Vine | |
---|---|---|---|---|
Location | Forest | Grassland | Mountain | Grassland or Swamp |
Sunlight | Shade | Full | Partial | Partial |
Seeds Produced | 8 | 22 | 17 | 0 |
Insecticide Resistance | Low | High | High | Medium |
Fancy web applications are so 2018. Command line applications provide a much more hands-on, personal, bespoke, artisinal experience when managing an arboretum like Keahua. Therefore, even though you are casting off your digital personas to lead a life connected with the land, you still want to use your hard-earned skills as developers to make management of the land as efficient as possible.
Here are the main features that the application must be able to perform.
When the user first executes KILLER, they should be welcomed to the system and be presented with the following menu.
+-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-+
| K e a h u a A r b o r e t u m |
+-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-+
1. Annex Biome
2. Release New Animal
3. Feed Animal
4. Cultivate New Plant
5. Show Arboretum Report
6. Exit
Choose a KILLER option.
> _
If the user chooses option 1, then the following menu should be displayed
1. Mountain
2. Swamp
3. Grassland
4. Forest
5. River
Choose what you want to annex.
> _
When the user makes a choice, a new instance of that type of biome should be added to list on the arboretum object that contains those biomes.
If the user chooses 2 from the main menu, then she should see the following menu, with the animals listed.
1. Gold Dust Day Gecko
2. River Dolphin
3. Nene Goose
4. Kīkākapu
5. Pueo
6. 'Ulae
7. Ope'ape'a
8. Happy-Face Spider
Choose animal.
> _
When the user enters in what to buy, then display all of the locations in which the animals can be stored. The current number of animals should be displayed for each location.
1. Mountain (2 animals)
2. Forest (4 animals)
2. Forest (0 animals)
Where would you like to place the animal?
> _
If the user chose to place them in a location that would be over capacity if they were placed there, display a message and show the menu again.
**** That biome is not large enough ****
**** Please choose another one ****
1. Mountain (2 animals)
2. Forest (4 animals)
3. Forest (0 animals)
Where would you like to release the Ope'ape'a?
> _
If the user chooses 3 from the main menu, then she should see the following menu, with the plants listed.
1. Gold Dust Day Gecko
2. River Dolphin
3. Nene Goose
4. Kīkākapu
5. Pueo
6. 'Ulae
7. Ope'ape'a
8. Happy-Face Spider
Choose animal to feed.
> _
When the user chooses an animal, another menu should appear showing the specific food that you have in stock to feed it.
1. Trout
2. Mackarel
3. Salmon
4. Sardine
What is on the menu for the River Dolphin today?
> _
Once the user chooses a food item, she should be presented with a message.
The river dolphin ate salmon for a meal.
Press any key to return to the main menu...
If the user chooses 4 from the main menu, then she should see the following menu, with the plants listed.
1. Mountain Apple Tree
2. Silversword
3. Rainbow Eucalyptus Tree
4. Blue Jade Vine
Choose plant to cultivate.
> _
When the user makes a choice, then display all of the locations in which the plants can be planted. The current number of plant rows should be displayed for each location.
1. Grassland (5 plants)
2. Swamp (2 plants)
3. Swamp (9 plants)
4. Swamp (0 plants)
Where would you like to plant the Sun Jade Vine?
> _
If the user chose to place them in a location that would be over capacity if they were placed there, display a message and show the menu again.
**** That biome is not large enough ****
**** Please choose another one ****
1. Grassland (5 plants)
2. Swamp (2 plants)
3. Swamp (9 plants)
4. Swamp (0 plants)
Where would you like to plant the Sun Jade Vine?
> _
Choosing this option will list all existing biomes, and then list all animals and plants in that biome. Only display the first 8 characters of the id in the report.
River [157b2efe]
River Dolphin (133619c4)
Mountain [bdf33960]
Ope'ape'a (bf9ad976)
Ope'ape'a (f9dd0afa)
Mountain Apple Tree (h91d77a0)
Press any key to continue...
-
Display groups of things in each biome when you display the lists above.
1. Grassland (1 Silversword, 4 Blue Jade Vine, 4 Nene Goose)
-
Only show biomes that are able to store the number of animals/plants. For example, the user chooses to release a river dolphin and one of the river biomes is already at capacity.
1. Mountain (5 plants) 2. River (12 animals) <-- not a valid choice 3. Grassland (0 plants)
Instead of showing all possible options, only show valid options.
1. Mountain (5 plants) 2. Grassland (0 plants)
A helpful hint to get you started. You need a Arboretum
class. This class will contain lists for each kind of biomes that you want to assign animals or plants to.
class Arboretum:
def __init__(self):
self.__rivers = []
@property
def rivers(self):
return self.__rivers
def annex_river(self, river):
self.__rivers.append(river)