- This is a console application-type project
- It is a console based graphical user interface
- The entry class for this application is Program(Program.cs)
- This project is a library-type project that contains the business logic of the game.
- State Design pattern is used
- Please have a look at the state transistion diagram (inside Design folder) to understand the state transistions of the game before looking at the state machine code
- The entry class for this library is RandomCardGenerator (RandomCardGenerator.cs), which load StateMachine.
- This project is a library-type project that contains logging and recovery management logic.
- This library is used for logging, saving the state of the game and recovering it
- This has a static implementation of classes
- User can draw a card from a shuffled deck of 52 cards
- User can reshuffle the deck
- User can reset the game where it will reshuffle the deck along with the drawn card
- User can save the state of the game and later recover it
- Online multi-user functionality - multiple users can join a single session of this game
- Session based gaming - user can save the session. This can be done now by manually storing the recovery file after saving the game
- Undo - user can undo the last action by restoring the last state of the game
- UI state machine - implementation of state machine for UI for more informative and interactive experience
- Multi threading implementation for better performance