Browse Source

improve projects & init chess and kahoot

pull/1850/head
Saken Mukanov 2 years ago committed by Dav Hojt
parent
commit
5f59a8e466
  1. 34
      subjects/mobile-dev/chess/README.md
  2. 21
      subjects/mobile-dev/chess/audit/README.md
  3. 26
      subjects/mobile-dev/kahoot/README.md
  4. 17
      subjects/mobile-dev/kahoot/audit/README.md
  5. 31
      subjects/mobile-dev/sky-map/README.md
  6. 41
      subjects/mobile-dev/stock-market/README.md
  7. 2
      subjects/mobile-dev/stock-market/audit/README.md
  8. 36
      subjects/mobile-dev/twenty-forty-eight/README.md
  9. 28
      subjects/mobile-dev/twenty-forty-eight/audit/README.md

34
subjects/mobile-dev/chess/README.md

@ -0,0 +1,34 @@
# Sky map
### Exercise
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.
One thing is certain: chess has captured the hearts and minds of players throughout the ages. From the grand halls of feudal castles to the bustling streets of modern cities, this timeless game has brought people together in friendly competition.
But it wasn't until the digital age that chess truly reached its potential. With the advent of online platforms and mobile apps, players from all corners of the globe can now test their skills against one another in real-time.
So whether you're a seasoned grandmaster or a newcomer to the game, join the ranks of chess enthusiasts and experience the thrill of victory and the agony of defeat. Let the battle of the minds begin!
Your task is to develop a mobile app that allows users to play chess with each other.
Here are the main features that the app should include:
- A board for playing chess
- The ability for players to invite each other to a game or join a public game
- A notification system to alert players when it is their turn to make a move
To implement these features, you may need to use various Flutter widgets and packages. You should also consider the user experience and design of the app, as a visually appealing and intuitive interface will be important for its success.
The main objectives of this exercise are to create a functional chess app that allows players to compete against each other and to use Flutter to develop a mobile app. Good luck!
Here are some additional considerations to keep in mind as you work on this exercise:
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:
By taking these factors into account, you can create a successful and engaging chess app that meets the objectives of the exercise.

21
subjects/mobile-dev/chess/audit/README.md

@ -0,0 +1,21 @@
#### 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)
###### Was the app committed within the required time period?
###### Does the app run without crashes?
###### Does the app utilize Flutter to allow users to play chess with each other?
###### Can players invite each other to a game or join a public game?
###### Try playing, and doing illegal moves for pieces, i.e. move rook diagonally. It should be impossible, is that the case?
###### Try castling after king or rook moves. It should be impossible, is that the case?
###### Is there a notification system in place to alert players when it is their turn to make a move?
###### Is the app compatible with different devices and operating systems?
###### Is the app functional and able to meet the objectives of the exercise?

26
subjects/mobile-dev/kahoot/README.md

@ -0,0 +1,26 @@
# Sky map
### Exercise
Welcome to the world of quiz-filled adventures! In this exercise, you will have the opportunity to build a dynamic mobile app using Flutter and a ready backend with Swagger. With your app, players will be able to compete against each other in a variety of themed quizzes, track their progress, and climb to the top of the leaderboard.
Get ready to test your knowledge and challenge your friends in this exciting new app. With the power of Flutter and a robust backend, the possibilities are endless. Are you up for the challenge? Let's get started!
In this exercise, you will build a mobile quiz game similar to [Kahoot](https://kahoot.it), implementing a backend that has been described by given Swagger. You will be provided with the API documentation for the backend, which includes all of the endpoints and request/response payloads that you will need to use in order to create the mobile app.
Your task will be to build a mobile app that allows users to:
- Browse a list of available quizzes
- Select and play a quiz
- Answer quiz questions
- View their score and ranking after completing the quiz
To complete this exercise, you will need to:
- Familiarize yourself with the provided Swagger
- Use the backend to retrieve the list of available quizzes and the questions for each quiz
- Display the quizzes and questions in the mobile app
- Allow users to select and play a quiz
- Track and display the user's score and ranking after they complete the quiz
This exercise will help you develop skills in building mobile apps that consume APIs, as well as testing and debugging your code. It will also help you become familiar with Swagger and the process of working with a ready backend.

17
subjects/mobile-dev/kahoot/audit/README.md

@ -0,0 +1,17 @@
#### 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)
###### Was the app committed within the required time period?
###### Does the app run without crashes?
###### Have you displayed the quizzes and questions in the mobile app in a visually appealing and easy-to-use manner?
###### Try playing the game, can you connect to it?
###### After tapping on correct answer do you get points?
###### After everyone answered a question, does the app show correct answer and show current leaderboard?
###### Have you displayed the users' score and ranking after they complete the quiz?

31
subjects/mobile-dev/sky-map/README.md

@ -2,30 +2,27 @@
### Exercise
Develop an app intended to work with GPS, accelerometer, magnetometer and real-time update. Updating an image at least 10 times in a second is considered to be real-time update.
You will be using the hardware's sensor information to determine your location, and position of the device.
Your task is to develop an app that utilizes GPS, accelerometer, and magnetometer data to determine the location and position of the device. The app should update an image at least 10 times per second for real-time updates.
With the data from the sensors, you will send the data to the public [API](https://google.com), rerieve information about celestial objects, and display them on the black canvas.
Using the sensor data, you will send a request to a public API to retrieve information about celestial objects and display them on a black canvas within the app. When a user taps on an object, a short description of the object should be displayed.
By tapping on the object, you must display a short descripton of the object.
Make sure to manage states via any of the following patterns:
To manage states within the app, you should use either the BLoC or Provider pattern. The objects to be displayed in the app include all planets of the solar system, the sun and moon, and three constellations of your choice.
- BLoC
- Provider
The main objectives of this exercise are to work with hardware sensors, collect celestial objects using object-oriented programming (OOP) techniques, render objects in real-time, and work with APIs. The Provider pattern is available for reference in the documentation.
Objects to be diplayed:
To complete this exercise, you will need to do the following:
- All planets of our solar system
- Sun and Moon
- 3 constellations of your choice
1. Set up a development environment for the app.
2. Utilize the GPS, accelerometer, and magnetometer sensors to determine the location and position of the device.
3. Implement real-time updates by updating an image at least 10 times per second.
4. Send a request to a public API to retrieve information about celestial objects.
5. Display the celestial objects on a black canvas within the app.
6. Allow users to tap on an object to view a short description of it.
7. Use either the BLoC or Provider pattern to manage states within the app.
8. Test the app thoroughly to ensure that it is functioning correctly and all objectives have been met.
### Objectives
- Working with hardware sensors
- Collecting all the celestial object in OOP style
- Rendering objects in real-time
- Work with APIs
- Provider - [documentation](https://pub.dev/packages/provider)
Remember to follow best practices for coding and app development, and be sure to document your code and any decisions made during the development process. Don't forget to consider user experience and design when creating the app, as a visually appealing and intuitive interface will be important for its success. Good luck!
Possible examples of the app:

41
subjects/mobile-dev/stock-market/README.md

@ -4,13 +4,15 @@
Develop an app that will simulate a `real-time` stock market. You may use [Yahoo](https://algotrading101.com/learn/yahoo-finance-api-guide/#:~:text=Why%20should%20I%20use%20the%20Yahoo%20Finance%20API%3F,-Free&text=One%20good%20reason%20is%20because%20it%20can%20be%20completely%20free.) API for data retrieval.
For any new user, provide them with `1,000,000$` fake dollars, so that they can do operations within your app. These operations include:
Upon signing up, users will be given `1,000,000` fake dollars to use within the app for buying and holding stocks. The app should have the following features:
- Log in/out
- Buy/hold stocks
- See historical charts of stock prices
- Retrieve data about a particular stock for the last year or since the company went public
- Updating data about a stock (Updating data atleast 5 times in a second is considered real-time)
- Login/logout functionality
- Ability to buy and hold stocks
- Historical charts of stock prices
- Retrieval of data for a particular stock for the last year or since the company went public
- Real-time updating of stock data (updating at least 5 times per second)
Make sure to manage states via any of the following patterns:
@ -28,10 +30,29 @@ Make sure to manage states via any of the following patterns:
### Objective
- Fetching data in real-time
- Visualizing custom widgets in real-time
- Making authentication and authorization services
- Use of patterns
- A login/signup page
- A page displaying all purchased stocks
- A page displaying historical data for the chosen stock
You should fetch all data in real-time and choose 20 stocks to monitor. The objectives of this exercise are to practice fetching data in real-time, visualizing custom widgets in real-time, and implementing authentication and authorization services.
To complete this exercise, you will need to do the following:
- Research the Yahoo API and determine how to use it to retrieve stock data.
- Implement the login/logout functionality and user account management.
- Allow users to buy and hold stocks within the app, using the fake dollars provided to them.
- Implement the ability to view historical charts of stock prices.
- Retrieve data for a particular stock for the last year or since the company went public.
- Update stock data in real-time, at least 5 times per second.
- Choose 20 stocks to monitor and display their data within the app.
- Use one of the specified patterns (BLoC, Provider, MVC) to manage state within the app.
- Implement the specified routes for the login/signup page, purchased stocks page, and historical data page.
- Test the app thoroughly to ensure that it is functioning correctly and all objectives have been met.
- Remember to follow best practices for coding and app development, and be sure to document your code and any decisions made during the development process. Good luck!
<center>

2
subjects/mobile-dev/stock-market/audit/README.md

@ -10,6 +10,8 @@
###### Do similar operations with 4 other stocks of your choice. Does the app behave accordingly?
###### Does the app update data about a stock at least 5 times per second?
###### Try to sell everything that you bought, do stock disappear from your wallet and fake dollars increase in the amount accordingly?
###### Can you see historical data for any stock? You should be able to see the data either since company became public or for the past year.

36
subjects/mobile-dev/twenty-forty-eight/README.md

@ -2,17 +2,39 @@
### Introduction:
Let us imagine that today is the april of 2014 and we know that the game "2048" is not implemented yet, but will be within a month. As we are aware the game will be a success and it is not such a difficult project to implement. Your task is to implement the game before the author of the game does so.
It is April 2014, and the popular game "2048" has not yet been released. Your task is to implement the game before the official release. To do this, you will need to create a 4x4 table and fill it with tiles valued at either 2 or 4. The game should start with 3-4 tiles placed randomly on the board.
The game shoud start with a 4x4 table. Every new tile must be valued as either 2 or 4. Start game with 3-4 tiles, which are located randomly on the board. By swiping, tiles are moved towards any of 4 directions as far as possible and if there are two tiles that collide with the same value, they merge into one tile with twice the value, and as a result, the score is updated.
After each move, new tile appears randomly in an empty slot.
You must retain the best score. Score is attained when tiles are merged, i.e. if tiles with a value of 4 are merged, add 4 to current score.
Players should be able to swipe the tiles in any of the four directions, and the tiles will move as far as possible in that direction. If two tiles with the same value collide, they should merge into one tile with twice the value, and the score should be updated accordingly. After each move, a new tile should appear randomly in an empty slot on the board.
You can use colors of your choice, but colors of the original game are preferred.
Use any [animation](https://docs.flutter.dev/development/ui/widgets/animation) to smoothly move the tiles. You can choose the colors for the tiles, but it is preferred to use the colors from the original "2048" game.
Use any [animation](https://docs.flutter.dev/development/ui/widgets/animation) tile movement.
The game should stop when no legal moves are possible and allow the user to restart. When the game is over, the best score should be updated if necessary.
Remember to include functionality to track and display the current and best scores. Good luck!
To complete this exercise, you will need to do the following:
1. Set up a development environment for the game.
2. Create the 4x4 table and fill it with tiles valued at either 2 or 4.
3. Implement the ability for players to swipe the tiles in any of the four directions and have them move as far as possible in that direction.
4. If two tiles with the same value collide, merge them into one tile with twice the value and update the score.
5. Add a new tile to the board randomly after each move.
6. Use animation to smoothly move the tiles.
7. Stop the game when no legal moves are possible and allow the user to restart.
8. Update the best score if necessary when the game is over.
9. Include functionality to track and display the current and best scores.
10. Test the game thoroughly to ensure that it is functioning correctly and all objectives have been met.
11. Remember to follow best practices for coding and game development, and be sure to document your code and any decisions made during the development process. Good luck!
Some additional considerations for this exercise might include:
1. Adding a user interface (UI) to the game, such as buttons for moving the tiles and displaying the current and best scores.
2. Implementing difficulty levels or other gameplay options, such as the ability to choose the value of the tiles (e.g. 2, 4, 8, etc.) or the size of the board (e.g. 4x4, 5x5, 6x6, etc.).
3. Adding sound effects or music to enhance the gameplay experience.
4. Adding support for different devices and screen sizes, such as tablets or smartphones.
5. By taking these additional factors into account, you can create a more polished and enjoyable version of the "2048" game.
Game should stop when no legal movement is possible, and let user restart game. When game is over, update the best score if it is required.
<center>

28
subjects/mobile-dev/twenty-forty-eight/audit/README.md

@ -6,12 +6,30 @@
###### Does the app run without crashes?
###### Play the game for a while. Do tiles move when you swipe the screen?
###### Do tiles with the same value merge into a single tile with double the value?
###### Does the game start with a 4x4 table and 3-4 tiles valued at either 2 or 4?
###### When swiped, do tiles move all the way to the swiped direction? They must stop only if edge of the grid or other tile is encountered.
###### Can players swipe the tiles in any of the four directions, and do they move as far as possible in that direction?
###### Is the tile movement animated?
###### Do tiles with the same value merge into one tile with twice the value when they collide?
###### Is the score updated when tiles are merged?
###### Does a new tile appear randomly on the board after each move?
###### Are animations used to smoothly move the tiles?
###### Does the game stop when no legal moves are possible and allow the user to restart?
###### Is the best score updated if necessary when the game is over?
###### Is the current score displayed during gameplay?
###### Is the best score displayed when the game is over?
###### +Implementing difficulty levels or other gameplay options, such as the ability to choose the value of the tiles (e.g. 2, 4, 8, etc.) or the size of the board (e.g. 4x4, 5x5, 6x6, etc.).
###### +Adding sound effects or music to enhance the gameplay experience.
###### +Adding support for different devices and screen sizes, such as tablets or smartphones.
###### Try beating best score of the game. After game is over, is the best score updated?

Loading…
Cancel
Save