{"id":20342340,"url":"https://github.com/spacether/cat_herder","last_synced_at":"2026-05-09T08:09:44.049Z","repository":{"id":88351506,"uuid":"86292707","full_name":"spacether/cat_herder","owner":"spacether","description":"Cat Herder, a javascript cat herding game","archived":false,"fork":false,"pushed_at":"2017-04-28T01:13:18.000Z","size":1623,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-14T19:11:45.253Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://spacether.github.io/cat_herder/","language":"JavaScript","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/spacether.png","metadata":{"files":{"readme":"README.md","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-03-27T04:53:51.000Z","updated_at":"2017-04-02T17:18:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"6f8b9a65-f385-4264-bded-0d2a47a804ff","html_url":"https://github.com/spacether/cat_herder","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacether%2Fcat_herder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacether%2Fcat_herder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacether%2Fcat_herder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spacether%2Fcat_herder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spacether","download_url":"https://codeload.github.com/spacether/cat_herder/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241869543,"owners_count":20034083,"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":"2024-11-14T21:33:09.282Z","updated_at":"2026-05-09T08:09:38.974Z","avatar_url":"https://github.com/spacether.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Cat Herder\n\n[Cat Herder live][live_site]\n\n[live_site]: https://spacether.github.io/cat_herder/\n\nCat herder is a game where one attempts to do the impossible: herd cats.\n\nAs the player, you must herd you escaped cats into a cat corral, shown in brown.\nWhen you call the cats they run away from you.\nSo you move around the level, calling to the cats, and they run away from you, running towards the corral.\n\nCat Herder is a personal project by Justin Black.\n\n![\"Cat Herder play screen\"][play_screen]\n\n## Game Features\n\n- Cats bounce off walls\n- Cats stop moving when they get to their corral in the top left\n- Game increases in hardness when re-playing (number of cats double)\n- Game can be paused and audio settings can be changed\n\n## Project Design\n\nCat Herder was designed and built in Javascript with help from the p5 library\nThe following are Cat Herder's technical features:\n\n- Designed in vanilla javascript with OOP classes\n- Graphics displayed with the p5 library via HTML5 canvas\n- Rudimentary hit detection through the p5 collision library\n- Custom vector class created for normal vector calculation and rebounding\n\n### Key Challenges\n\n- Hit detection offered by p5 was very rudimentary\n  - Collision only reported for line-line intersection\n  - Shapes do not report which line is hitting another line\n  - No reporting of normal vectors\n  - SOLUTION: write my own vector class to bridge the gaps\n- Coordinate system of canvas is modified cartesian\n  - SOLUTION: work in the modified coordinate system, clockwise = positive\n- Plotting png images in p5 is not working\n  - SOLUTION: keep using the primitive shapes, sadly\n\n[play_screen]: ./docs/images/cat_herder_playscreen.png \"Cat Herder play screen\"\n\n![Justin Analytics](https://ga-beacon.appspot.com/UA-97855011-1/cat_herder_github?pixel)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspacether%2Fcat_herder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspacether%2Fcat_herder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspacether%2Fcat_herder/lists"}