diff --git a/subjects/mobile-dev/chess/README.md b/subjects/mobile-dev/chess/README.md index cfeb1f319..bd3cc8535 100644 --- a/subjects/mobile-dev/chess/README.md +++ b/subjects/mobile-dev/chess/README.md @@ -1,6 +1,4 @@ -# Chess - -### Exercise +## Chess Chess is a game of strategy and wit, played by noble kings and cunning commoners alike for centuries. Its origins are shrouded in mystery, with some saying it originated in ancient India as a war simulation, while others claim it was invented by the wise sages of Persia. @@ -12,12 +10,40 @@ So whether you're a seasoned grandmaster or a newcomer to the game, join the ran Today, chess continues to be a beloved pastime, played by millions of people worldwide. And with the advent of modern technology, it has become easier than ever to play and learn the game. Mobile apps bring the game of chess to the palm of your hand, allowing you to enjoy this timeless classic anytime, anywhere. Whether you're a seasoned chess player or just starting out, chess offers a fun and engaging way to experience the history and strategy of this beloved game. -Your task is to develop a mobile app that allows users to play chess with each other. This is a fullstack app so you will need to implement both backend and frontend. You may use any desired backend technology as long as you're following the [backend routes.](https://github.com/alem-01/chess). Good luck! +### Instructions + +Your task is to develop a mobile app that allows users to play chess with each other. This is a fullstack app so you will need to implement both backend and frontend. You may use any desired backend technology as long as you're following the [backend routes.](https://github.com/alem-01/chess). + +Make sure that your app has the following requirements: + +- Must have UI screens, including at least the following: + - A Main menu + - A Game board + - A waiting room +- Must implement the logic to validate moves and enforce the rules of chess, disallowing illegal moves. +- Must Ensure that white pieces always play first in each game. +- Must have a multiplayer mode which enables players to challenge and play against other users in real-time matches. +- Must have the ability for players to invite each other to a game or join a public game. +- Must have a waiting room where players can wait for opponents and initiate game sessions. +- Must have a notification system to alert players when it is their turn to make a move. + +### Hints + +- Configure your backend solution for managing the multiplayer functionality and game data storage. +- Create the initial UI screens, including the main menu, waiting room and game board. +- Implement the logic for validating and enforcing the rules of chess, disallowing illegal moves, and determining the turn order. +- Research different chess rules and app designs to get ideas for your own app. +- Think about how you will handle game state and moves within the app, and how you will ensure that the game is played fairly and accurately. + +### Bonus + +- **Game Over**, when the game reaches a terminal state (checkmate, stalemate, or draw), we can send a message to both players indicating that the game is over. -Here are some additional considerations to keep in mind as you work on this exercise: +- **Player X Won**, after determining the winner of the game, send a message to both players indicating which player has won. -1. Research different chess rules and app designs to get ideas for your own app. -2. Think about how you will handle game state and moves within the app, and how you will ensure that the game is played fairly and accurately. -3. Implement backend according to the swagger: +- **Restart**, to allow players to restart the game -By taking these factors into account, you can create a successful and engaging chess app that meets the objectives of the exercise. +- **Board Reseet**, to enable players to reset the board without restarting the entire game +- **Story Mode**: Design a single-player story mode where players can engage in chess matches against AI opponents, progressing through a series of challenges or levels. +- **Bots**: Include AI-powered bots that players can play against in offline mode or when waiting for online opponents. +- **Versus Computer Mode**: Develop a mode where players can play against a computer AI with adjustable difficulty levels. diff --git a/subjects/mobile-dev/chess/audit/README.md b/subjects/mobile-dev/chess/audit/README.md index ca2876e71..4752abc1c 100644 --- a/subjects/mobile-dev/chess/audit/README.md +++ b/subjects/mobile-dev/chess/audit/README.md @@ -1,19 +1,51 @@ #### Functional -#### In order to run and hot reload app either on emulator or device, follow the [instructions](https://docs.flutter.dev/get-started/test-drive?tab=androidstudio#run-the-app). +#### In order to run and hot reload the app either on emulator or device, follow the [instructions](https://docs.flutter.dev/get-started/test-drive?tab=androidstudio#run-the-app). -###### Was the app committed within the required time period? +###### Does the app run without crashing? -###### Does the app run without crashes? +##### Confirm if the app contains all the UI screens requested. -###### Check the backend. When player is the waiting room and someone joins, does the game create UUID for the game session? +- A Main menu +- A Game board +- A waiting room -###### When 2 players are join game session, can a player with white pieces start the game? +###### Does the app have all the UI screens requested? -###### Try doing illegal moves, i.e. moving pawn 3 squares up, castling after moving the king, moving rook diagonally, etc. Does the app prevent such illegal moves? +###### Does the app have a multiplayer mode for real-time matches which enables players to challenge and play against other? + +###### Can players invite each other to a game or join a public game? + +###### Does the app have a waiting room for players to wait for opponents and initiate game sessions? + +###### When two players join a game session, does the player with the white pieces play first? + +###### Does the app have a notification system to alert players when it's their turn to make a move? + +##### Try performing illegal moves (e.g., moving a pawn 3 squares up, castling after moving the king, moving a rook diagonally). + +###### Does the app prevent illegal moves? ###### After a move is played, does the other player receive the move? -###### Play the game until one player is mated, does the game stop? +##### Play the game until one player is mated. + +###### Does the game ends and the player who mated the other win? + +###### Does the backend generate a unique identifier (UUID) for each game session when a player joins the waiting room, ensuring proper identification and management of individual game sessions? + +#### Bonus + +###### +When the game reaches a terminal state (checkmate, stalemate, or draw), does the app send a message to both players indicating that the game is over? + +###### +After determining the winner of the game, does the app send a message to both players indicating which player has won? + +###### +Does the app allow players to restart the game? + +###### +Can players reset the board without restarting the entire game? + +###### +Is there a single-player story mode where players can engage in chess matches against AI opponents, progressing through a series of challenges or levels? + +###### +Are there AI-powered bots that players can play against in offline mode or when waiting for online opponents? -###### Do chess moves come with appropriate Long algebraic notation? +###### +Does the app have a mode where players can play against a computer AI with adjustable difficulty levels?