GSoC/2020/StatusReports/DeepakKumar

From KDE Community Wiki

GCompris: Multiple Datasets

GCompris

Project Overview

GCompris offers many activities related to reading, maths, science and since it is free software, everyone can adapt it to one’s own needs, improve it and, most importantly, share it with children everywhere around the world. Currently, most of the activities had generalized datasets so for some of the age groups like 3-5 yrs the activities were quite difficult to play, while for older age groups the activities were easy.

For this, we have the concept of multiple datasets. Multiple datasets help to make the activities adaptive for children of all age groups. Multiple datasets mean having different datasets file for each age group.

My project goals include adding of multiple datasets to the following activities:

  1. Enumeration memory game
  2. Addition memory game
  3. Subtraction memory game
  4. Multiplication memory game
  5. Division memory game
  6. Addition and subtraction memory game
  7. Multiplication and division memory game
  8. All operations memory game
  9. Addition memory game against Tux
  10. Subtraction memory game against Tux
  11. Multiplication memory game against Tux
  12. Division memory game against Tux
  13. Addition and subtraction memory game against Tux
  14. Multiplication and division memory game against Tux
  15. All operations memory game against Tux

Mentors

Milestones Achieved

Adding multiple datasets to Enumeration Memory Game Activity

In this activity, the child needs to turn the cards to count the number of elements of an image and match with the corresponding number cards. I started my work on implementing multiple datasets to memory activities with this activity. To do this I needed to change the logic of the code to support both the default datasets and the multiple datasets. This activity is one of the sub-activity of memory activities. The datasets for this activity are defined on the basis of an increasing number of images for each difficulty level.

Working Demo of Enumeration Memory Game

Link to the task description: https://phabricator.kde.org/T13121

Link to the commits: 7be23091

Adding multiple datasets to Addition Memory Game Activity

In this activity, the child needs to turn the cards to match addition and its result, until all the cards are gone. The goal of this activity is to practice addition. This activity has two modes as one of them as single-player mode while another as a two-player mode. The two-player mode is called as one "with Tux". I have implemented multiple datasets for both modes of this activity.

Link to task description: https://phabricator.kde.org/T13122

Link to the commits: 56342bc7

Addition Memory game Activity Dataset Screen Dialog

Adding multiple datasets to Subtraction Memory Game Activity

In this activity, the child needs to turn the cards to match a subtraction and its result, until all the cards are gone. The goal of this activity is to practice subtraction. This activity has two modes as one of them as single-player mode while another as a two-player mode. The two-player mode is called as one "with Tux". I have implemented multiple datasets for both modes of this activity.

Link to the task description: https://phabricator.kde.org/T13123

Link to the commits: 8a90b65e

Subtraction Memory game Activity Dataset Screen Dialog

Adding multiple datasets to Multiplication Memory Game Activity

In this activity, the child needs to turn the cards to match a multiplication and its result, until all the cards are gone. The goal of this activity is to practice multiplication. This activity has two modes as one of them as single-player mode while another as a two-player mode. The two-player mode is called as one "with Tux". I have implemented multiple datasets for both modes of this activity.

Link to task description: https://phabricator.kde.org/T13124

Link to the commits: e2e2240c

Multiplication Memory game Activity Dataset Screen Dialog

Adding multiple datasets to Division Memory Game Activity

In this sub-activity of memory, the child needs to turn the cards to match a division and its result, until all the cards are gone. The goal of this activity is to practice division. This activity has two modes as one of them as single-player mode while another as a two-player mode. The two-player mode is called as one "with Tux". I have implemented multiple datasets for both modes of this activity.

Link to task description: https://phabricator.kde.org/T13125

Link to the commits: a23cda77

Division Memory game Activity Dataset Screen Dialog

Adding multiple datasets to Addition and Subtraction Memory Game Activity

In this sub-activity of memory, the child needs to turn the cards to match addition and subtraction and its result until all cards are gone. The levels of previous memory activities were based on only a single arithmetic operation as only-addition or only-division, but this memory activity has two different operations for a particular level. As in the case of this activity for any level, there would be few cards on addition operation and few of them upon subtraction. This activity has two modes as one of them as single-player mode while another as a two-player mode. The two-player mode is called as one "with Tux". I have implemented multiple datasets for both modes of this activity.

Link to task description: https://phabricator.kde.org/T13126

Link to the commits: 41c4f7f9

Addition and Subtraction Memory game Activity Dataset Screen Dialog

Adding multiple datasets to Multiplication and Division Memory Game Activity

In this sub-activity of memory, the child needs to turn the cards to match multiplication and division and its result until all cards are gone. This memory activity also has two different operations for a particular level. As in the case of this activity for any level, there would be few cards on multiplication operation and a few of them upon division. This activity has two modes as one of them as single-player mode while another as a two-player mode. The two-player mode is called as one "with Tux". I have implemented multiple datasets for both modes of this activity.

Link to task description: https://phabricator.kde.org/T13127

Link to the commits: 47607bd4

Adding multiple datasets to All Operations Memory Game Activity

In this sub-activity of memory, the child needs to turn the cards to match any arithmetic and its result until all cards are gone. This previous memory activities have a single operation or two different operations for a particular level. This memory activity has all arithmetic operations as addition, subtraction, multiplication, and division for a particular level. the operation for a particular level. As in the case of this activity for any level, there would be few cards on addition, few on subtraction, and few on multiplication or division. This activity has two modes as one of them as single-player mode while another as a two-player mode. The two-player mode is called as one "with Tux". I have implemented multiple datasets for both modes of this activity.

Link to task description: https://phabricator.kde.org/T13128

Link to the commits: a0aa5a3f

Overall Summary of multiple datasets for Memory Activities

Multiple datasets have been added to all memory activities as mentioned in my task. Luckily, the implementation process was smooth for me as I didn't stuck anywhere for too long. The other details about the regression and the testing process can be found here: https://deepak2431.github.io/GSOC9W/


Multiple Datasets to Mirror the Given Image

In this activity, the child needs to draw the mirror of the given grid image using different colors. The multiple datasets were already present in this activity. My work was to improve the multiple datasets to make it more adaptive as per different age groups. After improving one of the multiple datasets I found a bug while testing it that color couldn't be filled in the last grids. It was fixed in one of the commits and after that, I have worked to implement the further multiple datasets.

Mirror the given image working demo

Link to phabricator task: https://phabricator.kde.org/T13105

Link to the commits: 53a6d203

Multiple Datasets to Guess Count Activity

In this activity, the child needs to drag the given operands to calculate the arithmetic result as per the given guess count. This activity was having two different mode one as the "Builtin" and the other one as the "Admin" mode. There were no multiple datasets in this activity. After having a discussion with the mentors as to how to add multiple datasets to this activity we agreed to separate the mode in this way:

  1. When selecting the Admin mode, the selection of the dataset must have no effect on the activity, as the activity must follow the levels/content specified in the Admin mode options.
  2. When selecting the BuiltIn mode, the activity must use the content of the datasets for the multiple datasets.

Firstly, I separated both modes in such a way that loading one of the modes should not affect the other. I added the multiple datasets to it as for this I implemented an algorithm to find that should use the same function used to build the admin mode datasets. I did this as I thought it won't be good to rewrite the same function twice with slight changes. After the review of the datasets by the mentors there was some improvement suggested for multiple dataset 4. As for it, there was only 1 level so I added more two-levels to it. Also, it was mentioned in the multiple datasets parent task description that when selecting one of the modes it should disable the other mode. For this, I need to make changes to the core DialogChooseLevel.qml file. I used a boolean to disable one mode in case another mode is active.

After testing the builtin mode it was all good but there were some issues with the admin mode. I have fixed all of the issues as mentioned by mentors.

I hope it will get merged to the master branch soon :)


Guesscount working demo

Link to the task on phabricator: https://phabricator.kde.org/T13104

Link to the merge request: gsoc_2020_deepak_guess_count

Link to the Blogs

Link to the proposal

Proposal: https://docs.google.com/document/d/1sGlQubqKtjY51OliWoYucH4kdHUE84u189SqrvqAyhk/edit?usp=sharing

About me