{"id":16890233,"url":"https://github.com/marak/eplaying-cards","last_synced_at":"2025-03-20T07:37:22.143Z","repository":{"id":65994065,"uuid":"370190734","full_name":"Marak/ePlaying-cards","owner":"Marak","description":"Software and hardware project for e-paper based playing card deck.","archived":false,"fork":false,"pushed_at":"2019-12-13T07:08:22.000Z","size":1063,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-29T11:12:38.212Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"amjustin13/ePlaying-cards","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Marak.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}},"created_at":"2021-05-24T01:02:54.000Z","updated_at":"2024-08-24T02:01:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"5553e831-94fb-4bad-884c-bb0600c19c1b","html_url":"https://github.com/Marak/ePlaying-cards","commit_stats":{"total_commits":22,"total_committers":3,"mean_commits":7.333333333333333,"dds":0.2727272727272727,"last_synced_commit":"0f5f05f9f2b25343c0bd12d81f85f32a8de0c36f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marak%2FePlaying-cards","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marak%2FePlaying-cards/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marak%2FePlaying-cards/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marak%2FePlaying-cards/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Marak","download_url":"https://codeload.github.com/Marak/ePlaying-cards/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244572172,"owners_count":20474382,"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-10-13T17:01:24.377Z","updated_at":"2025-03-20T07:37:22.125Z","avatar_url":"https://github.com/Marak.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Anycard ePlaying-cards\nSoftware and hardware project for e-paper based playing card deck.\n\n## Anycard Product Mission\nFun and new card game product that provides users the flexibility to play as many games as they wish with the use of just one digital card deck.\n\n## Target Users\nAnyone that might enjoy a card game from ages 4-99+\n\n## User Stories\n* As a player, I want to be able to hold at least 4 digital cards in my hand.\n* As a player, I want to be able to refresh a card without any latency.\n* As a player, I want the ecard controller to keep track of my game score.\n* As a player, I want the ecard controller to keep a history of game play.\n* As a player, I want the ability to save an ongoing game state.\n* As a player, I want the ecards to update to a different game in less than 5 seconds.\n* As a player, I want to be able to play games of up to four people.\n* As a player, I want to have an interface to setup games.\n\n# System Design\nThe implementation of this product will be mainly through the use of e-paper displays to display each card value. This technology is the ideal candidate for this implementation as it is very low power and it mimics the look of ink on paper. The system will need a central computer to manage and store the card games, which will be implemented with the use of a small microcontroller or a single board computer enabled with a wifi, bluetooth or RFID module in order to communicate with the ecards. Please see the system design diagram below and a description of the product flow and of each component:\n\n![SystemDesign](doc/AnycardSystemDesign.png)\n\n## Product Flow\nAt the start of a game, each player will have a number of cards that will initially be flushed or wiped out from any content. The player must then select a game to play using the user interface integrated into the Deck Dock, the player must place their cards within the card ports to shuffle their hand and the Deck Dock should provide the players with a unique set of cards according to the chosen game. As the players begin to play and a card needs to be drawn, players shall place the played card in the card port to refresh the card value to an unused card in the game.\n\n## Deck Dock Controller\nThe application will have a Deck Dock controller which will be tasked with game management. The operations for game management are the following:\n* Shuffle cards\n* Deal cards\n* Point calculations and distribution\n* Game rules\n* Game selection\n* Score management\n* Keep memory of card distribution and card graveyard\n* Display information\n\n### Card Port\nThe card port is the main interface between the ecards and the game Deck Dock controller. This interface will server as a power supply and I/O interface for the ecards in order to give each card a new value.\n\n### User Interface\nThe UI will be implemented through a touch screen integrated within the Deck Dock. The interface first servers as a means for the user to select their game, game preferences, player selection and other game settings.\n\n## Players\nIn the system design below notice Player 1 and Player 2 are shown with ecards representing the hand for each player. The ecards will be equipped with an RFID tag which will be used by the Anycard Deck Dock to identify the card that was played and what card value it contains. The players will need to interface with the card port in order to refresh the cards and continue game play.\n\n## Software Design\nThe software within the application will be tasked with managing the game while at the same time communicating with the ecard interface in order to properly account for game score and card values.The software implementation will consist of two main components as shown below: the GUI and the eCard driver.\n![SoftwareDesign](doc/SoftwareDesign.png)\n\n### GUI\nThe GUI component will be implemented initially as a touch screen interface integrated with the Deck Dock, allowing the user to select games and game settings. The interface will be implemented as a simple python application. The application will be directly communicating with both the game engine and the Deck Dock.\n\n### eCard Driver\nThe software for this component will handle the interaction between the ecards and the game engine.\n\n### Game Engine\nThe game engine component will be resposible for all tasks related to game play and game rules. It will be the base framework for the system and will implement the functionalities specified section:\n[Deck Dock Controller](#Deck-Dock-Controller)\n\n### Games\nEach game rule set will be a separate component in order have the ability to scale up each game and the game engine component simultaneously. Each game should be easy integrated into the application.\n\n# MVP\nThe basic and minimum need for this product is to have a method of refreshing cards without latency and update the digital deck of at least 4 electronic cards without latency. The functionality shall be seamless as it would be when using a normal paper card deck. For game play, the goal is to create a simple prototype game which will show case the functionality of each of the components listed above.\n\n# Prototype\n![PrototypeSetup](doc/proto_setup.jpg)\n\n### Raspberry Pi and RFID Wireup\n![RPi-RFID-Wireup](doc/rasppi_rfid.png)\n\n# E Cards Techonology\nThe electronic cards would be implemented using electronic paper, a technology that uses very low power consumption, is flexible and mimics the look of real paper. Electronic paper uses electronic ink which is comprised of millions of microcapsules that contain a positive or negative charge, when provided a charge, the microcapsules move through a microscopic liquid towards the face of the card.\n\n![Image showing simple explanation of how epaper displays function.](https://www.smartcity-displays.com/wp-content/uploads/2017/07/how-does-e-paper-work-1.gif)\n* Source: https://www.smartcity-displays.com/wp-content/uploads/2017/07/how-does-e-paper-work-1.gif\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarak%2Feplaying-cards","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarak%2Feplaying-cards","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarak%2Feplaying-cards/lists"}