{"id":26568291,"url":"https://github.com/technige/simfish","last_synced_at":"2025-03-22T19:36:11.070Z","repository":{"id":8789559,"uuid":"10480511","full_name":"technige/simfish","owner":"technige","description":"Fish tank simulator","archived":false,"fork":false,"pushed_at":"2018-07-19T04:15:30.000Z","size":101,"stargazers_count":7,"open_issues_count":1,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-04-01T12:25:02.625Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/technige.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-06-04T14:26:26.000Z","updated_at":"2021-12-26T20:06:14.000Z","dependencies_parsed_at":"2022-08-27T10:50:33.464Z","dependency_job_id":null,"html_url":"https://github.com/technige/simfish","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technige%2Fsimfish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technige%2Fsimfish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technige%2Fsimfish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technige%2Fsimfish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/technige","download_url":"https://codeload.github.com/technige/simfish/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245013768,"owners_count":20547175,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-22T19:36:10.474Z","updated_at":"2025-03-22T19:36:11.060Z","avatar_url":"https://github.com/technige.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Fish Tank Simulator\n===================\n\nFish Tank Simulator is a simple turn-based game with a curses interface. It has\nbeen built and tested on Ubuntu 12.04 using Python 2.7.3 and PyCharm 2.5.1. To\nrun, simply execute the simfish.py script within the src directory.\n\n\nThe Game\n--------\n\nThe game interface consists of a virtual fish tank into which any number of\nfish and snails may be placed. Additionally, parcels of food may be dropped\ninto the tank to keep the creatures fed. Each living creature has a fixed life\nspan which drops one point per turn but which may be increased by eating. Be\ncareful of the piranhas as they will not only eat the fish food but will\nhappily consume other fish!\n\nAlso, make sure to keep an eye on the tank temperature - if it gets too low or\nthen your fish may not survive. If you do end up with too many dead fish then\nsimply remove the dead fish or empty the tank completely and start again.\n\nThe game will progress automatically, taking one turn each second, and allows\nkeys to be pressed at any time. The basic controls are as follows:\n\n    S - add sun fish\n    D - add diver fish\n    P - add piranha fish\n    C - add clockwork fish\n    Z - add snail\n    F - drop food\n\n    [ - decrease temperature\n    ] - increase temperature\n\n    R - remove all dead creatures\n    E - empty the tank\n    Q - quit the game\n\nThe bestiary below will help you to recognise the occupants of your tank:\n\n    \\/ o\\   sun fish\n    /\\__(   these enjoy the light and will tend to swim near the surface\n\n    \\/ -\\   diver fish\n    /\\__(   these prefer the dark so will swim nearer the bottom\n\n    \\/ o\\   piranha fish\n    /\\_::   these predators might eat any unsuspecting sun fish and diver fish\n\n    \\/[+\\   clockwork fish\n    /\\__/   these are only toys so don't need to eat or breathe\n\n       oo   snail\n    (@)_]   these have a short life span and will sink when dead\n\n\nThe Code\n--------\n\nThe source code for the tank is contained simply within the class called\n`Tank`. Instances of this class expose a simple API to allow contained items\naccess to features of the tank without being tightly coupled to its\nimplementation. Methods exposed by `Tank` are as follows:\n\n    put(item, [x, [y]])\n    add an item into the tank (optionally at a specified position)\n\n    remove(item)\n    remove a specific item from the tank\n\n    remove_dead()\n    remove all dead creatures form the tank\n\n    empty()\n    remove everything from the tank\n\n    items_with(item)\n    fetch a list of all items overlapping the item specified\n\n    move(item, dx, dy)\n    attempt to move a specific item by the amounts provided\n\n    warm()\n    increase the tank temperature\n\n    cool()\n    decrease the tank temperature\n\n    temperature()\n    read the current tank temperature\n\n    turn()\n    take a game turn (this iterates through turns for all contained items)\n\n    draw()\n    draw the tank to the curses screen supplied on tank construction\n\nContained within the `Tank` class is a base class called `Item`. This provides\na foundation from which all item classes should inherit. The game items\ncurrently available have been built against the following inheritance\nhierarchy:\n\n    + Tank.Item (any item which may be contained within a tank)\n    |\n    +---+ OrganicItem (these can be used as a food source)\n    |   |\n    |   +---+ Animal (these can also eat, breathe and die)\n    |   |   |\n    |   |   +---+ SunFish[*]\n    |   |   |\n    |   |   +---+ DiverFish[*]\n    |   |   |\n    |   |   +---+ PiranhaFish[*]\n    |   |   |\n    |   |   +---+ Snail[*]\n    |   |\n    |   +---+ FishFood (organic but not a living creature)\n    |\n    +---+ ClockworkFish[*] (can move like a normal fish but is inorganic)\n\nThe classes marked with [*] also inherit the `Mobile` trait which provides\nswimming capabilities. This does not form part of the hierarchy itself since\nit applies only to selected members of the tree.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnige%2Fsimfish","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechnige%2Fsimfish","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnige%2Fsimfish/lists"}