{"id":27645961,"url":"https://github.com/novucs/microbit-slither","last_synced_at":"2026-03-11T06:30:57.153Z","repository":{"id":79893255,"uuid":"126509709","full_name":"novucs/microbit-slither","owner":"novucs","description":"Multiplayer snake game. Controlled via bluetooth on micro:bits, and hosted on an Android device.","archived":false,"fork":false,"pushed_at":"2019-01-27T12:22:35.000Z","size":5017,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-14T05:41:53.610Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/novucs.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}},"created_at":"2018-03-23T16:13:38.000Z","updated_at":"2023-01-14T19:18:19.000Z","dependencies_parsed_at":"2023-04-23T04:31:14.260Z","dependency_job_id":null,"html_url":"https://github.com/novucs/microbit-slither","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/novucs/microbit-slither","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novucs%2Fmicrobit-slither","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novucs%2Fmicrobit-slither/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novucs%2Fmicrobit-slither/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novucs%2Fmicrobit-slither/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/novucs","download_url":"https://codeload.github.com/novucs/microbit-slither/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/novucs%2Fmicrobit-slither/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30373436,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T06:09:32.197Z","status":"ssl_error","status_checked_at":"2026-03-11T06:09:17.086Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-04-24T01:14:29.482Z","updated_at":"2026-03-11T06:30:57.126Z","avatar_url":"https://github.com/novucs.png","language":"Kotlin","funding_links":[],"categories":["📱 Mobile Apps"],"sub_categories":["🎓 Machine Learning Resources \u0026 Projects"],"readme":"# microbit-slither\n\nMultiplayer snake game. Controlled via bluetooth on micro:bits, and\nhosted on an Android device.\n\nThe Android app is written in Kotlin, a programming language that is able to\ncompile down to the JVM. The micro:bit firmware is written in C++ using\nmicro:bit DAL.\n\n## Building\n\nClone the repository:\n`git clone git@gitlab.uwe.ac.uk:we2-randall/microbit-slither.git`\n\n### Android\n\nDownload and install Android Studio:\nhttps://developer.android.com/studio/index.html\n\nEnsure the device you wish to install to is connected to your computer\nvia USB. The device must have developer mode enabled, which can be\nachieved through following the Android guide:\nhttps://developer.android.com/studio/debug/dev-options.html\n\nOnce developer mode is enabled, go to `Settings-\u003eDeveloper options` and\nenable `USB Debugging`.\n\nWithin Android Studio, select:\n`Open an existing Android Studio project`\n\nSelect the `android` folder within the cloned repository directory. Then\nclick the green run button on the second top menu bar of Android Studio.\n\n*Note: If you do not wish to install the project via Android studio, the\nAPK file should be provided in the project located at\n`android/slither.apk`. This may be installed on the device by simply\ndownloading it.*\n\n### Micro:Bit\n\nModify `Makefile` in the `microbit/slither` directory of the project to\nensure the `MICROBIT_PATH` is set to where ever your micro:bit is\nmounted.\n\nIn ArchLinux, this will be:\n\n`/run/media/\u003cusername\u003e/MICROBIT`\n\nIf attempting to run on the UWE machines, the micro:bit should be\nmounted at:\n\n`/media/student/MICROBIT`.\n\nOnce properly configured, you may build the project and copy the binary\nonto both devices with the `make` command while in the\n`microbit/slither` directory.\n\n*Note: Both devices must be plugged in to do this. To install on a\n       single plugged in device, use `make 0`*\n\n## Usage\n\n### Prerequisites\n\nTwo one android device and two micro:bit devices are required to play\nthis game. Ensure the micro:bit firmware, located in `microbit`, and the\nAndroid app, located in `android`, are installed on their relative\ndevices.\n\n### Running\n\nThe micro:bit devices should display the `SLITHER` scroll message to\nindicate the firmware is installed. After the message has scrolled, the\nmicro:bit will indicate which direction the device is being tilted via\nthe LED display.\n\nThe Android app may be opened once installed on the device, the app\nshould be named `Slither`. Before opening the app, ensure location and\nbluetooth are enabled to ensure bluetooth works correctly. As soon as\nthe app has been opened, it attempts to scan for players using micro:bit\ndevices. Before any micro:bits are found, the app should display both\nplayers as disconnected via greyed out snakes, with a message\n`Waiting for players to connect...`.\n\n![](img/connect.png)\n\nOnce one player has been found, their avatar should light up. All\nmovements of the micro:bit device are rendered to their avatar.\nThe game starts once both players are connected. The bottom purple\nscreen in the app is where the snake game is played. Two snakes should\nappear, with the same colour as their given avatar. Movements of the\nmicro:bit device steer the direction in which the snake moves, and they\nmay move faster by holding the B button down.\n\nThe objective of slither is to be the first to achieve 100 points.\nPoints may be achieved by eating food (worth 5 points) and killing\nthe opponent snake (worth 25 points). 10 points are deducted on death,\nso try to stay alive!\n\nFood is depicted by small yellow dots in the game, eat them by moving\nthe snake over them. Unlike the original game of snake, you may not die\nby hitting your own tail or reaching the sides of the screen. The only\nway to die is by hitting the tail of your opponent. Players may try to\ncut each other off to gain an upper hand.\n\nMovements over the map edge are translated to the opposite side of the\nmap, creating a world wrapping effect similar to the game 'Pac-Man'.\n\nPlayers grow, giving them an upper hand in attacking. Eating grows\nplayers by one segment, while killing an opponent grows players by five\nsegments. Death reverts players back to the starting size of three\nsegments. The maximum size players may grow to is twenty segments, which\nis never long enough to fill a complete line in any direction on the\nmap.\n\n![](img/play.png)\n\nOnce a player has reached the score of 100, the game is complete. The\nplayer to achieve the winning score is displayed on the screen. Also the\nthe total number of points both players achieved will be displayed just\nbelow the winner. Both micro:bit devices will be notified whether they\nhave won or lost the match, then a message will scroll on their LED\nscreens.\n\nAfter five seconds of displaying the game outcome, a new game will begin.\nBoth players points, locations and sizes will be reset and the game will\nbe ready to play from fresh.\n\n![](img/complete.png)\n\n## State Diagram\n\n![](img/state-diagram.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnovucs%2Fmicrobit-slither","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnovucs%2Fmicrobit-slither","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnovucs%2Fmicrobit-slither/lists"}