Assignment Detail:- ITECH 1400 Foundations of Programming - Fishing Simulation
Introduction: In this assignment you are required to develop a program that simulates fishing: There are 6 fish species in the river which you may catch:
- Australian Bass -Macquaria Novemaculeata- - commonly less than 4 Kg; excellent eating, when less than 2-5 Kg-- Short Finned Eel -Anguilla Australis-- commonly less than 3 Kg; a good eating fish-- Eel Tailed Catfish -Tandanus Tandanus- - Up to 6-8 Kg; excellent eating, when less than 4 Kg-- Gippsland Perch -Macquaria Colonorum-- commonly less than 10 Kg; excellent eating when up to 6 Kg-- Two more species you should add to this list yourself- Search the internet for the necessary details-
Your program should be based on the following assumptions:- Every second you catch a fish -perfect fishing--- The chances -probabilities- to catch each of these six species are equal-- Weights of fishes of the same species are distributed evenly and range from 0 to the Maximal Weight- The value of Maximal Weight for each of the species is given above- For example, Maximal Weight of Australian Bass is 4 Kg-- Fishing starts with an empty basket which you should implement as a list- If you catch a fish with a weight greater than 500 g or less than the recommended excellent eating maximum, you add it to the basket- Otherwise, release it- For example, only instances of Australian Bass with the weights between 0-5 Kg and 2-5 Kg should be added to the basket-- Stop fishing immediately as soon as the total weight of all the fishes in the basket exceeds 25 Kg-
To generate a random fish and weight, you are supposed to use the "randrange" function from the "random" package-Fishes of different species must be implemented as objects of the corresponding classes-For convenience, all weights appearing in the program body should be integers given in grams e-g- instead of 3 Kg you should use 3000g- However, when printing outputs on the screen you may use kilograms-
Question 2- Develop a module named fish_species -file "fish_species-py"-- This module should contain definitions of the following six classes: AustralianBass, ShortFinnedEel, EelTailedCatfish, GippslandPerch + 2 more classes for the species you add yourself-
class AustralianBass should contain the following members:
- Variables -Constants-:- MAX_WEIGHT = 4000- MAX_EATING_WEIGHT = 2500- NAME = 'Australian Bass'- LATIN_NAME = 'Macquaria Novemaculeata'- The constructor should define and initialise a single attribute named "weight"- The attribute weight must get an integer value between 0 and MAX_WEIGHT-- A method named "is_good_eating": returns True if the fish's weight is between 500 g and excellent eating weight -2500 g for Australian Bass--- An overridden -redefined- method " str " that returns a nice, readable string representation of a fish object- Here's an example:
Other fish classes should have similar, mutatis mutandis, implementations-
Question 3- Develop a module named "fishing" -file "fishing-py"-- This module should import the module "fish_species", so you can use the class definitions from it- In addition, in this module you should define the following functions:
Function start_fishing---
The function simulates fishing process in the following way:- Every second a random fish is "caught"- I-e-, every second the program randomly chooses one of the 6 fish species, then randomly generates a weight within valid range -between 0 and the species' MAX_WEIGHT-, and then creates the corresponding fish object-- If the created fish object is_good_eating, the object is added to the basket -implemented as a list-- Otherwise, the fish is released, i-e-, is not added to the basket-- Once total weight of fishes in the basket exceeds 25 Kg -25000 g-, the basket is returned -fishing ends--
- Fishing results should be printed on the screen, one line per second-- Here's a sample output:
Note- To pause your function's execution for 1 second use time-sleep-1- function from the time package-
Function print_basket-basket--The function prints its argument's -basket's- content on the screen as shown below:
Function plot_basket-basket--
The function plots a bar-chart that shows total weights of each of the species in the basket:
Note- In the examples above only four species of fishes are used- However, in your program you should have 6 species!
Functions save_basket-basket, file_name- and load_basket-file_name--
In this task you must:- search Python documentation to find out how to use the pickle package in order to save Python objects to files and load the saved objects back to programs-- save_basket-basket, file_name- - using pickle-dump saves the basket to a binary file with the specified name-- load_basket-file_name- - using pickle-load loads a saved object -basket- from the specified file-
Attachment:- Fishing_Simulation-rar
Most Recent Questions