{"id":21195543,"url":"https://github.com/eantcal/nutetris","last_synced_at":"2026-04-17T00:02:24.444Z","repository":{"id":99383397,"uuid":"98042027","full_name":"eantcal/nutetris","owner":"eantcal","description":"Tetris game clone written in modern c++ and ported in Java, C# and BASIC (for nuBASIC interpreter).","archived":false,"fork":false,"pushed_at":"2020-04-19T15:46:38.000Z","size":1323,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-14T21:41:44.538Z","etag":null,"topics":["basic","csharp","educational","educational-game","game","java","java-8","modern-cpp","tetris","windows","x11"],"latest_commit_sha":null,"homepage":"http://www.eantcal.eu","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eantcal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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-07-22T15:59:34.000Z","updated_at":"2022-12-21T23:18:01.000Z","dependencies_parsed_at":null,"dependency_job_id":"a93dd03c-3799-40a8-9c64-4baecbf3f28b","html_url":"https://github.com/eantcal/nutetris","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eantcal/nutetris","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eantcal%2Fnutetris","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eantcal%2Fnutetris/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eantcal%2Fnutetris/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eantcal%2Fnutetris/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eantcal","download_url":"https://codeload.github.com/eantcal/nutetris/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eantcal%2Fnutetris/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31909235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"ssl_error","status_checked_at":"2026-04-16T18:21:47.142Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["basic","csharp","educational","educational-game","game","java","java-8","modern-cpp","tetris","windows","x11"],"created_at":"2024-11-20T19:28:45.571Z","updated_at":"2026-04-17T00:02:24.243Z","avatar_url":"https://github.com/eantcal.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nutetris\nTetris game clone written in modern c++ and ported in Java, C# and BASIC (for nuBASIC interpreter).\n\n![nuTetris - C# version](images/Tetris.png)\n\n## Why nuTetris?\nnuTetris is a good sample of not trivial application which can be used as example in a programming training course.\nIt has been designed mainly for educational purposes for developers that can deal with a non-trivial example of object-oriented design, which relies on effective modern techniques for producing modular and reusable and multi-platform code.\n\n## The game components\n- Game manager \n  - Builds other game components \n  - Gets any input event from Input Manager \n  - Executes the game state machine \n  - Calls the Renderer in order to draw the game scene \n  - Canvas and Game Board are instance of Grid class, which manages the interactions of piece and board. \n    It is also used to represent the piece canvas which shows a preview of next falling piece.\n  - Game data object holds information passed to the Renderer which use them to draw the scene\n  \n![nuTetris components](images/tetrismodules.jpg)\n\n- Renderer\n  - Interface for the game scene renderer.\n  - At compile time is selected one of the following renderer implementations: \n  - Text Renderer (is a Renderer) \n  - Renders the game scene using ASCII art graphics \n  - GDI Renderer (is a Renderer) relies on GUI (tetris::gui_t) which provides an Adapter for Linux (X11) and Windows implementations\n  \n- Piece Factory\n  - Creates each Tetris Piece instance needed by Game Manager \n  \n- Tetris Piece\n  - Holds piece shape information\n  \n- Input Manager \n  - Manages the input devices (Keyboard, Timers).\n  Used by Game Manager to collect any user and timer events \n  \n- Input Device (c++ implementation only)\n  - Interface implemented by the actual input devices \n  \n- Keyboard Input Device is an Input Device (c++ implementation only) \n  - Read and process the keyboard events\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feantcal%2Fnutetris","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feantcal%2Fnutetris","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feantcal%2Fnutetris/lists"}