{"id":20172828,"url":"https://github.com/everysoftware/minesweeper","last_synced_at":"2026-05-15T07:02:54.519Z","repository":{"id":226755851,"uuid":"766112767","full_name":"everysoftware/minesweeper","owner":"everysoftware","description":"Minesweeper API with FastAPI","archived":false,"fork":false,"pushed_at":"2024-03-09T12:58:03.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-19T12:52:10.356Z","etag":null,"topics":["fastapi","minesweeper"],"latest_commit_sha":null,"homepage":"","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/everysoftware.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}},"created_at":"2024-03-02T11:25:58.000Z","updated_at":"2024-09-27T22:40:58.000Z","dependencies_parsed_at":"2024-03-09T14:10:23.717Z","dependency_job_id":null,"html_url":"https://github.com/everysoftware/minesweeper","commit_stats":null,"previous_names":["everysoftware/minesweeper"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everysoftware%2Fminesweeper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everysoftware%2Fminesweeper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everysoftware%2Fminesweeper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/everysoftware%2Fminesweeper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/everysoftware","download_url":"https://codeload.github.com/everysoftware/minesweeper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241610977,"owners_count":19990505,"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":["fastapi","minesweeper"],"created_at":"2024-11-14T01:32:33.862Z","updated_at":"2026-05-15T07:02:51.914Z","avatar_url":"https://github.com/everysoftware.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Minesweeper\n\nРеализация бэкенда для известной игры с бомбами :)\n\n## Техническое задание\n\nhttps://minesweeper-test.studiotg.ru/swagger/\n\nКаждая игра начинается с указания размера поля width и height, а также количества мин mines_count на нём. Исходная\nзадача не подразумевает ограничений, но для тестовой реализации остановимся на разумном ограничении входных параметров:\nширина и высота не более 30, количество мин не более width * height - 1 (всегда должна быть хотя бы одна свободная\nячейка).\n\nДалее игроку предлагается в созданной игре (идентификация игры по полученному в ответ game_id) делать ходы, указывая\nкоординаты ячейки, которую игрок хочет открыть, а именно - row (номер ряда, начиная с нуля) и col (номер колонки,\nначиная с нуля).\n\nВ ответ на оба метода приходят данные о самой игре: уникальный идентификатор игры game_id, размер поля и количество мин,\nуказанные при создании игры, а также данные о поле field в виде двумерного массива символов (height строк, в каждой по\nwidth элементов), где пустые строки \" \" (пробелы) означают неоткрытые ячейки поля, поля с цифрами от \"0\" до \"8\" означают\nоткрытые ячейки, где цифры указывают, сколько мин расположено в непосредственной близости от текущей ячейки. Также\nвозвращается параметр completed, указывающий, завершена ли текущая игра.\n\nИгра заканчивается в случае, если пользователь указал на ячейку, где установлена мина (ячейки с минами при этом отмечены\nсимволом \"X\" - латинская заглавная \"икс\"), либо пользователь открыл все ячейки, не занятые минами (в этом случае мины\nотмечены \"M\" - латинская заглавная \"эм\"). Также при завершении игры должна появиться информация по всем остальным\nячейкам - количество мин рядом с каждой из ячеек.\n\nЕсли в процессе игры пользователь открывает ячейку, рядом с которой нет ни одной мины (то есть ячейка со значением \"0\"),\nдолжны \"открыться\" все смежные ячейки, рядом с которыми также нет ни одной мины, а также все смежные с ними \"числовые\"\nячейки, рядом с которыми мины есть, с указанием их количества.\n\nНе допускается после завершения игры делать новые ходы, а также повторно проверять уже проверенную ячейку. Эти, а также\nиные ошибочные ситуации должны возвращать ошибку с кодом 400 Bad Request с текстовым описание ошибки в error.\n\n## Установка\n\nУстановите зависимости и запустите сервер.\n\n```bash\npip install -r requirements.txt\nmake run\n```\n\nЗапустите тесты.\n\n```bash\npytest -s -v\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feverysoftware%2Fminesweeper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feverysoftware%2Fminesweeper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feverysoftware%2Fminesweeper/lists"}