diff --git a/src/activities/sudoku/ActivityInfo.qml b/src/activities/sudoku/ActivityInfo.qml --- a/src/activities/sudoku/ActivityInfo.qml +++ b/src/activities/sudoku/ActivityInfo.qml @@ -36,4 +36,5 @@ credit: "" section: "discovery logic" createdInVersion: 0 + levels: "1,2,3,4" } diff --git a/src/activities/sudoku/Sudoku.qml b/src/activities/sudoku/Sudoku.qml --- a/src/activities/sudoku/Sudoku.qml +++ b/src/activities/sudoku/Sudoku.qml @@ -44,6 +44,7 @@ signal stop Component.onCompleted: { + dialogActivityConfig.initialize() activity.start.connect(start) activity.stop.connect(stop) focus = true @@ -62,6 +63,7 @@ property alias columns: sudoColumn.columns property alias rows: sudoColumn.rows property alias sudokuModel: sudokuModel + property var levels: activity.datasetLoader.data } onStart: Activity.start(items) @@ -72,12 +74,34 @@ onClose: home() } + DialogChooseLevel { + id: dialogActivityConfig + currentActivity: activity.activityInfo + onClose: { + home() + } + + onSaveData: { + levelFolder = dialogActivityConfig.chosenLevels + currentActivity.currentLevels = dialogActivityConfig.chosenLevels + ApplicationSettings.setCurrentLevels(currentActivity.name, dialogActivityConfig.chosenLevels) + } + + onStartActivity: { + background.stop() + background.start() + } + } + Bar { id: bar - content: BarEnumContent { value: help | home | level | reload } + content: BarEnumContent { value: help | home | level | reload | activityConfig } onHelpClicked: { displayDialog(dialogHelp) } + onActivityConfigClicked: { + displayDialog(dialogActivityConfig) + } onPreviousLevelClicked: Activity.previousLevel() onNextLevelClicked: Activity.nextLevel() onReloadClicked: Activity.initLevel() diff --git a/src/activities/sudoku/resource/1/Data.qml b/src/activities/sudoku/resource/1/Data.qml new file mode 100644 --- /dev/null +++ b/src/activities/sudoku/resource/1/Data.qml @@ -0,0 +1,142 @@ +/* GCompris - Data.qml + * + * Copyright (C) 2020 Shubham Mishra + * + * Authors: + * Shubham Mishra + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ +import GCompris 1.0 + +Data { + objective: qsTr("Play with smaller grids using symbols.") + difficulty: 3 + + property var symbols: [ + {"imgName": "circle", "text": 'A', "extension": ".svg"}, + {"imgName": "rectangle", "text": 'B', "extension": ".svg"}, + {"imgName": "rhombus", "text": 'C', "extension": ".svg"}, + {"imgName": "star", "text": 'D', "extension": ".svg"}, + {"imgName": "triangle", "text": 'E', "extension": ".svg"} + ] + + data: [ + { + "symbols": symbols, + "data": [ + [ + ['.','C','B'], + ['.','B','A'], + ['.','A','C'] + ], + [ + ['C','A','B'], + ['.','.','.'], + ['B','C','A'] + ], + [ + ['C','A','B'], + ['A','B','C'], + ['.','.','.'] + ], + [ + ['A','.','C'], + ['C','.','B'], + ['B','.','A'] + ], + [ + ['A','.','C'], + ['B','C','.'], + ['.','A','B'] + ], + [ + ['A','B','C'], + ['B','.','A'], + ['.','A','.'] + ], + [ + ['.','B','A'], + ['B','.','C'], + ['A','C','.'] + ], + [ + ['A','B','C'], + ['.','C','A'], + ['.','A','.'] + ] + ] + }, + { + "symbols": symbols, + "data": [ + [ + ['A','.','.'], + ['D','.','.'], + ['C','A','.'] + ], + [ + ['C','.','D'], + ['.','.','B'], + ['.','D','C'] + ], + [ + ['.','B','D'], + ['D','.','.'], + ['B','.','C'] + ], + [ + ['A','.','.'], + ['.','D','A'], + ['D','.','C'] + ], + [ + ['C','.','D'], + ['.','C','.'], + ['B','.','C'] + ] + ] + }, + { + "symbols": symbols, + "data": [ + [ + ['.','A','.'], + ['A','C','.'], + ['.','B','.'] + ], + [ + ['B','A','.'], + ['A','C','.'], + ['.','.','.'] + ], + [ + ['.','A','C'], + ['.','.','B'], + ['C','.','.'] + ], + [ + ['.','.','C'], + ['D','.','A'], + ['C','.','.'] + ], + [ + ['.','.','C'], + ['D','.','A'], + ['.','A','.'] + ] + ] + } + ] +} diff --git a/src/activities/sudoku/resource/2/Data.qml b/src/activities/sudoku/resource/2/Data.qml new file mode 100644 --- /dev/null +++ b/src/activities/sudoku/resource/2/Data.qml @@ -0,0 +1,160 @@ +/* GCompris - Data.qml + * + * Copyright (C) 2020 Shubham Mishra + * + * Authors: + * Shubham Mishra + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ +import GCompris 1.0 + +Data { + objective: qsTr("Play with medium size grids using symbols.") + difficulty: 4 + + property var symbols: [ + {"imgName": "circle", "text": 'A', "extension": ".svg"}, + {"imgName": "rectangle", "text": 'B', "extension": ".svg"}, + {"imgName": "rhombus", "text": 'C', "extension": ".svg"}, + {"imgName": "star", "text": 'D', "extension": ".svg"}, + {"imgName": "triangle", "text": 'E', "extension": ".svg"} + ] + + data: [ + { + "symbols": symbols, + "data": [ + [ + ['.','B','C','D'], + ['D','C','.','A'], + ['.','D','A','B'], + ['B','A','.','C'] + ], + [ + ['A','.','.','D'], + ['D','C','B','.'], + ['C','D','A','.'], + ['.','.','D','C'] + ], + [ + ['.','B','.','.'], + ['.','C','B','A'], + ['C','D','A','.'], + ['.','.','D','.'] + ], + [ + ['.','B','A','.'], + ['D','.','B','C'], + ['A','C','.','B'], + ['.','D','C','.'] + ], + [ + ['.','.','.','.'], + ['D','A','B','C'], + ['A','C','D','B'], + ['.','.','.','.'] + ], + ] + }, + { + "symbols": symbols, + "data": [ + [ + ['.','.','.','.'], + ['D','A','B','.'], + ['C','.','A','B'], + ['.','.','.','D'] + ], + [ + ['A','B','C','D'], + ['.','.','.','.'], + ['.','.','.','.'], + ['B','C','D','A'] + ], + [ + ['.','.','A','D'], + ['D','.','.','C'], + ['A','.','.','B'], + ['B','D','.','.'] + ], + [ + ['.','.','A','.'], + ['D','A','B','.'], + ['.','C','D','B'], + ['.','D','.','.'] + ], + [ + ['C','B','.','D'], + ['.','.','.','C'], + ['A','.','.','.'], + ['B','.','C','A'] + ], + ] + }, + { + "symbols": symbols, + "data": [ + [ + ['C','.','.','D'], + ['.','.','B','.'], + ['A','.','.','.'], + ['.','.','D','.'] + ], + [ + ['.','B','.','A'], + ['.','.','B','.'], + ['C','.','D','.'], + ['.','.','.','C'] + ], + [ + ['A','.','B','.'], + ['.','C','.','A'], + ['.','.','.','D'], + ['D','.','C','.'] + ], + [ + ['.','A','.','.'], + ['C','.','A','B'], + ['.','.','C','.'], + ['D','.','.','A'] + ], + [ + ['C','.','.','D'], + ['B','.','A','.'], + ['.','B','.','A'], + ['.','.','.','.'] + ], + [ + ['.','A','C','.'], + ['.','.','.','D'], + ['C','.','.','A'], + ['.','B','.','.'] + ], + [ + ['.','C','.','D'], + ['B','.','.','.'], + ['.','.','.','.'], + ['C','A','.','B'] + ], + [ + ['B','.','.','C'], + ['.','A','.','.'], + ['.','.','D','.'], + ['.','B','.','.'] + ] + ] + } + ] +} diff --git a/src/activities/sudoku/resource/3/Data.qml b/src/activities/sudoku/resource/3/Data.qml new file mode 100644 --- /dev/null +++ b/src/activities/sudoku/resource/3/Data.qml @@ -0,0 +1,136 @@ +/* GCompris - Data.qml + * + * Copyright (C) 2020 Shubham Mishra + * + * Authors: + * Shubham Mishra + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ +import GCompris 1.0 + +Data { + objective: qsTr("Play with medium size grids using numbers and symbols.") + difficulty: 5 + + property var symbols: [ + {"imgName": "circle", "text": 'A', "extension": ".svg"}, + {"imgName": "rectangle", "text": 'B', "extension": ".svg"}, + {"imgName": "rhombus", "text": 'C', "extension": ".svg"}, + {"imgName": "star", "text": 'D', "extension": ".svg"}, + {"imgName": "triangle", "text": 'E', "extension": ".svg"}, + {"imgName": "1", "text": '1', "extension": ".svg"}, + {"imgName": "2", "text": '2', "extension": ".svg"}, + {"imgName": "3", "text": '3', "extension": ".svg"}, + {"imgName": "4", "text": '4', "extension": ".svg"}, + {"imgName": "5", "text": '5', "extension": ".svg"} + ] + + data: [ + { + "symbols": symbols, + "data": [ + [ + ['A','B','C','D','E'], + ['.','A','B','C','D'], + ['.','.','A','B','C'], + ['.','.','.','A','B'], + ['.','.','.','.','A'] + ], + [ + ['A','B','.','D','.'], + ['.','.','D','E','A'], + ['C','.','.','A','.'], + ['D','E','.','.','C'], + ['.','A','B','.','D'] + ], + [ + ['.','C','.','A','.'], + ['A','.','B','.','C'], + ['.','B','.','C','.'], + ['D','.','C','.','A'], + ['.','A','E','.','B'] + ], + [ + ['C','B','.','.','D'], + ['.','.','D','C','.'], + ['D','.','B','.','E'], + ['.','A','.','D','C'], + ['E','.','.','B','.'] + ], + [ + ['D','.','.','B','E'], + ['.','E','A','.','.'], + ['A','C','.','.','B'], + ['.','.','B','C','.'], + ['C','B','.','A','.'] + ], + [ + ['.','.','C','D','.'], + ['B','.','.','.','C'], + ['.','C','.','B','D'], + ['C','.','D','A','.'], + ['D','E','.','.','A'] + ] + ] + }, + { + "symbols": symbols, + "data": [ + [ + ['1','2','3','4','5'], + ['.','1','2','3','4'], + ['.','.','1','2','3'], + ['.','.','.','1','2'], + ['.','.','.','.','1'] + ], + [ + ['1','2','.','4','.'], + ['.','.','4','5','1'], + ['3','.','.','1','.'], + ['4','5','.','.','3'], + ['.','1','2','.','4'] + ], + [ + ['.','3','.','1','.'], + ['1','.','2','.','3'], + ['.','2','.','3','.'], + ['4','.','3','.','1'], + ['.','1','5','.','2'] + ], + [ + ['3','2','.','.','4'], + ['.','.','4','3','.'], + ['4','.','2','.','5'], + ['.','1','.','4','3'], + ['5','.','.','2','.'] + ], + [ + ['4','.','.','2','5'], + ['.','5','1','.','.'], + ['1','3','.','.','2'], + ['.','.','2','3','.'], + ['3','2','.','1','.'] + ], + [ + ['.','.','3','4','.'], + ['2','.','.','.','3'], + ['.','3','.','2','4'], + ['3','.','4','1','.'], + ['4','5','.','.','1'] + ] + ] + } + ] +} diff --git a/src/activities/sudoku/resource/4/Data.qml b/src/activities/sudoku/resource/4/Data.qml new file mode 100644 --- /dev/null +++ b/src/activities/sudoku/resource/4/Data.qml @@ -0,0 +1,286 @@ +/* GCompris - Data.qml + * + * Copyright (C) 2020 Shubham Mishra + * + * Authors: + * Shubham Mishra + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ +import GCompris 1.0 + +Data { + objective: qsTr("Play with larger grids using numbers.") + difficulty: 6 + + property var symbols: [ + {"imgName": "1", "text": '1', "extension": ".svg"}, + {"imgName": "2", "text": '2', "extension": ".svg"}, + {"imgName": "3", "text": '3', "extension": ".svg"}, + {"imgName": "4", "text": '4', "extension": ".svg"}, + {"imgName": "5", "text": '5', "extension": ".svg"}, + {"imgName": "6", "text": '6', "extension": ".svg"}, + {"imgName": "7", "text": '7', "extension": ".svg"}, + {"imgName": "8", "text": '8', "extension": ".svg"}, + {"imgName": "9", "text": '9', "extension": ".svg"} + ] + + data: [ + { + "symbols": symbols, + "data": [ + [ + ['8', '9', '3', '4', '5', '2', '6', '7', '1'], + ['7', '1', '6', '3', '9', '8', '5', '.', '2'], + ['2', '4', '5', '1', '7', '6', '9', '8', '3'], + ['5', '2', '1', '8', '4', '9', '3', '6', '7'], + ['9', '6', '.', '2', '3', '7', '1', '5', '8'], + ['3', '8', '7', '5', '6', '1', '4', '2', '9'], + ['4', '7', '.', '9', '1', '5', '8', '.', '6'], + ['6', '5', '9', '7', '8', '3', '2', '1', '4'], + ['1', '3', '8', '6', '.', '4', '.', '9', '5'] + ], + [ + ['7', '9', '4', '6', '3', '5', '8', '1', '2'], + ['8', '3', '2', '4', '9', '1', '5', '7', '6'], + ['6', '1', '5', '.', '8', '2', '4', '.', '3'], + ['5', '2', '8', '1', '7', '3', '6', '4', '9'], + ['4', '7', '3', '2', '6', '9', '1', '5', '8'], + ['9', '6', '1', '8', '5', '4', '3', '2', '7'], + ['3', '8', '9', '5', '1', '7', '2', '6', '4'], + ['2', '5', '6', '.', '4', '.', '7', '3', '1'], + ['1', '4', '7', '3', '2', '6', '9', '8', '5'] + ], + [ + ['5', '6', '2', '1', '7', '9', '4', '3', '8'], + ['.', '3', '4', '8', '5', '6', '7', '1', '2'], + ['1', '8', '7', '4', '3', '2', '5', '9', '6'], + ['6', '9', '.', '7', '1', '5', '3', '2', '4'], + ['4', '1', '3', '9', '2', '8', '6', '.', '5'], + ['7', '2', '5', '3', '6', '4', '9', '8', '1'], + ['8', '5', '9', '2', '4', '3', '1', '6', '7'], + ['2', '7', '6', '5', '9', '1', '8', '4', '3'], + ['3', '4', '1', '.', '8', '7', '2', '5', '9'] + ], + [ + ['2', '1', '6', '4', '7', '8', '9', '5', '3'], + ['4', '9', '7', '.', '5', '3', '2', '6', '8'], + ['5', '3', '8', '2', '6', '9', '4', '1', '7'], + ['8', '.', '4', '9', '3', '6', '1', '7', '5'], + ['6', '5', '.', '7', '4', '1', '8', '2', '9'], + ['1', '7', '9', '8', '2', '5', '3', '4', '6'], + ['3', '4', '1', '6', '9', '7', '5', '8', '2'], + ['7', '8', '5', '3', '1', '2', '6', '.', '4'], + ['9', '6', '2', '5', '8', '4', '7', '3', '1'] + ] + ] + }, + { + "symbols": symbols, + "data": [ + [ + ['3', '8', '4', '9', '5', '6', '2', '7', '1'], + ['9', '.', '6', '8', '7', '2', '5', '3', '4'], + ['2', '5', '7', '1', '4', '.', '6', '9', '8'], + ['8', '9', '3', '.', '.', '5', '1', '.', '7'], + ['7', '2', '1', '4', '3', '9', '8', '5', '6'], + ['6', '4', '5', '7', '1', '8', '9', '2', '.'], + ['1', '3', '9', '.', '8', '7', '.', '6', '2'], + ['4', '6', '2', '3', '9', '1', '7', '.', '5'], + ['5', '7', '8', '2', '6', '4', '.', '1', '.'] + ], + [ + ['1', '2', '8', '4', '9', '3', '.', '6', '5'], + ['6', '.', '4', '5', '7', '8', '2', '9', '1'], + ['5', '7', '9', '2', '1', '6', '8', '4', '3'], + ['2', '6', '1', '3', '8', '5', '4', '7', '9'], + ['8', '5', '3', '.', '4', '9', '1', '2', '6'], + ['9', '.', '7', '6', '.', '1', '3', '5', '8'], + ['.', '.', '6', '1', '5', '.', '9', '3', '2'], + ['3', '9', '2', '8', '6', '7', '5', '1', '.'], + ['4', '1', '5', '9', '3', '2', '6', '.', '.'] + ], + [ + ['.', '8', '.', '4', '9', '2', '5', '1', '6'], + ['5', '.', '.', '7', '1', '6', '8', '.', '3'], + ['.', '6', '1', '3', '5', '.', '2', '4', '7'], + ['1', '2', '6', '.', '3', '7', '4', '5', '9'], + ['.', '9', '5', '2', '6', '1', '3', '7', '8'], + ['8', '7', '3', '.', '4', '5', '6', '2', '1'], + ['.', '3', '9', '1', '2', '4', '7', '8', '5'], + ['7', '1', '4', '5', '8', '3', '9', '6', '2'], + ['2', '5', '8', '6', '7', '9', '1', '3', '4'] + ], + [ + ['3', '7', '.', '4', '1', '.', '8', '5', '9'], + ['9', '5', '.', '8', '7', '3', '6', '.', '2'], + ['6', '1', '8', '2', '9', '5', '3', '4', '7'], + ['4', '3', '9', '1', '8', '.', '2', '6', '5'], + ['1', '2', '7', '5', '6', '4', '9', '8', '3'], + ['.', '8', '6', '3', '2', '9', '4', '7', '1'], + ['8', '9', '.', '7', '.', '2', '5', '3', '.'], + ['7', '6', '5', '9', '3', '8', '1', '2', '4'], + ['2', '4', '3', '6', '5', '.', '7', '9', '.'] + ] + ] + }, + { + "symbols": symbols, + "data": [ + [ + ['6', '1', '7', '5', '2', '9', '3', '.', '8'], + ['.', '4', '.', '.', '8', '6', '9', '2', '7'], + ['8', '9', '.', '.', '7', '4', '5', '6', '.'], + ['1', '8', '.', '.', '5', '7', '4', '.', '2'], + ['.', '2', '6', '9', '3', '1', '7', '.', '5'], + ['7', '.', '5', '2', '4', '8', '.', '1', '9'], + ['9', '7', '8', '4', '.', '2', '1', '5', '3'], + ['3', '.', '1', '8', '.', '.', '.', '7', '4'], + ['.', '5', '4', '7', '1', '3', '8', '.', '6'] + ], + [ + ['8', '5', '2', '4', '3', '1', '9', '6', '7'], + ['1', '9', '6', '2', '.', '5', '4', '.', '8'], + ['.', '.', '.', '6', '8', '9', '5', '2', '1'], + ['2', '1', '5', '.', '6', '8', '.', '4', '9'], + ['7', '.', '.', '1', '2', '4', '3', '.', '.'], + ['6', '.', '3', '9', '5', '7', '1', '8', '.'], + ['.', '2', '1', '7', '4', '6', '8', '9', '3'], + ['.', '6', '.', '5', '1', '3', '2', '7', '4'], + ['3', '.', '4', '.', '.', '.', '6', '.', '5'] + ], + [ + ['.', '3', '2', '8', '5', '1', '6', '.', '.'], + ['6', '8', '9', '3', '4', '2', '.', '7', '1'], + ['4', '1', '5', '.', '9', '7', '8', '2', '3'], + ['2', '4', '.', '.', '.', '9', '7', '3', '.'], + ['5', '.', '7', '2', '3', '.', '1', '6', '8'], + ['1', '6', '3', '7', '8', '5', '4', '9', '2'], + ['9', '7', '.', '4', '.', '8', '3', '5', '.'], + ['3', '2', '.', '.', '1', '6', '9', '.', '7'], + ['8', '.', '6', '.', '7', '3', '2', '.', '.'] + ], + [ + ['9', '5', '8', '6', '4', '.', '1', '7', '2'], + ['2', '6', '4', '.', '5', '1', '.', '8', '3'], + ['1', '3', '7', '.', '8', '2', '4', '.', '6'], + ['3', '4', '9', '8', '2', '.', '6', '1', '7'], + ['6', '1', '2', '4', '9', '7', '8', '3', '.'], + ['.', '.', '.', '1', '3', '6', '2', '9', '4'], + ['5', '.', '1', '.', '.', '9', '7', '.', '8'], + ['7', '8', '6', '.', '.', '.', '3', '.', '9'], + ['4', '9', '3', '2', '.', '8', '5', '.', '.'] + ] + ] + }, + { + "symbols": symbols, + "data": [ + [ + ['.', '1', '7', '3', '.', '8', '.', '.', '2'], + ['2', '9', '8', '.', '1', '6', '3', '7', '.'], + ['3', '5', '.', '9', '7', '2', '.', '.', '4'], + ['6', '3', '9', '5', '4', '.', '7', '.', '8'], + ['.', '.', '4', '.', '.', '3', '5', '1', '9'], + ['1', '8', '.', '2', '9', '.', '4', '.', '.'], + ['5', '.', '3', '.', '.', '9', '2', '.', '7'], + ['.', '7', '.', '6', '3', '5', '9', '.', '.'], + ['.', '.', '1', '7', '2', '4', '.', '5', '.'] + ], + [ + ['.', '5', '8', '6', '7', '.', '3', '9', '2'], + ['2', '.', '.', '4', '5', '.', '.', '7', '6'], + ['.', '.', '6', '.', '.', '.', '8', '5', '4'], + ['.', '8', '.', '7', '2', '6', '5', '4', '.'], + ['5', '.', '2', '9', '.', '4', '.', '3', '.'], + ['1', '7', '4', '5', '.', '3', '2', '6', '.'], + ['3', '.', '.', '8', '6', '.', '4', '1', '.'], + ['8', '9', '5', '.', '4', '.', '6', '.', '.'], + ['6', '4', '.', '.', '.', '5', '9', '8', '7'] + ], + [ + ['4', '.', '5', '7', '3', '1', '9', '6', '2'], + ['3', '.', '6', '4', '.', '.', '.', '8', '.'], + ['9', '1', '7', '.', '.', '2', '4', '5', '3'], + ['.', '9', '8', '5', '2', '7', '.', '1', '.'], + ['.', '7', '.', '.', '.', '4', '.', '.', '8'], + ['.', '.', '1', '3', '6', '8', '.', '7', '.'], + ['.', '3', '2', '.', '.', '9', '7', '4', '.'], + ['7', '.', '.', '.', '.', '.', '2', '3', '1'], + ['1', '6', '.', '2', '7', '3', '8', '9', '5'] + ], + [ + ['6', '5', '1', '8', '4', '7', '3', '.', '9'], + ['.', '4', '9', '.', '1', '5', '6', '.', '.'], + ['7', '.', '3', '.', '2', '9', '4', '.', '.'], + ['.', '2', '.', '7', '9', '6', '8', '4', '1'], + ['.', '9', '.', '4', '3', '.', '5', '.', '2'], + ['1', '6', '4', '.', '.', '2', '.', '.', '3'], + ['4', '1', '.', '9', '.', '.', '7', '5', '.'], + ['5', '3', '6', '.', '.', '.', '.', '9', '.'], + ['.', '7', '8', '1', '5', '.', '.', '3', '6'] + ] + ] + }, + { + "symbols": symbols, + "data": [ + [ + ['.', '2', '.', '1', '.', '5', '.', '.', '9'], + ['.', '.', '1', '4', '7', '6', '2', '8', '.'], + ['3', '7', '4', '.', '8', '2', '.', '.', '6'], + ['.', '6', '3', '.', '4', '1', '.', '9', '2'], + ['4', '5', '9', '.', '.', '.', '8', '.', '7'], + ['.', '.', '2', '7', '5', '.', '6', '3', '.'], + ['.', '4', '7', '.', '.', '8', '3', '.', '1'], + ['.', '3', '.', '6', '.', '4', '.', '2', '5'], + ['6', '.', '.', '3', '.', '.', '.', '.', '8'] + ], + [ + ['4', '.', '5', '.', '2', '.', '7', '.', '1'], + ['.', '.', '.', '3', '4', '.', '5', '6', '8'], + ['6', '.', '.', '8', '5', '7', '2', '.', '.'], + ['.', '.', '4', '.', '.', '5', '.', '7', '.'], + ['.', '3', '.', '2', '.', '.', '8', '.', '.'], + ['5', '.', '.', '.', '.', '9', '.', '.', '2'], + ['.', '7', '1', '.', '.', '.', '4', '2', '.'], + ['2', '.', '6', '.', '9', '.', '3', '.', '.'], + ['3', '.', '9', '1', '.', '2', '6', '.', '.'] + ], + [ + ['5', '7', '8', '.', '.', '3', '.', '9', '.'], + ['.', '6', '.', '4', '.', '9', '7', '.', '8'], + ['2', '4', '9', '7', '8', '1', '5', '3', '.'], + ['.', '1', '.', '.', '9', '7', '.', '.', '.'], + ['.', '.', '.', '5', '.', '.', '4', '.', '3'], + ['6', '8', '5', '2', '3', '.', '.', '.', '.'], + ['.', '5', '1', '9', '.', '.', '.', '.', '2'], + ['4', '.', '6', '3', '.', '2', '.', '5', '1'], + ['.', '.', '2', '.', '4', '5', '.', '7', '.'] + ], + [ + ['9', '.', '.', '.', '7', '2', '.', '3', '.'], + ['4', '1', '.', '8', '5', '.', '9', '.', '.'], + ['2', '7', '3', '9', '.', '.', '.', '.', '.'], + ['.', '3', '.', '.', '.', '.', '7', '.', '.'], + ['1', '9', '7', '.', '3', '.', '.', '.', '5'], + ['6', '5', '2', '1', '.', '.', '4', '8', '3'], + ['.', '.', '9', '.', '.', '4', '.', '1', '8'], + ['.', '.', '.', '2', '.', '5', '3', '4', '.'], + ['5', '.', '8', '.', '.', '.', '.', '6', '7'] + ] + ] + } + ] +} diff --git a/src/activities/sudoku/sudoku.js b/src/activities/sudoku/sudoku.js --- a/src/activities/sudoku/sudoku.js +++ b/src/activities/sudoku/sudoku.js @@ -22,569 +22,20 @@ .import QtQuick 2.6 as Quick .import "qrc:/gcompris/src/core/core.js" as Core - -// Hard coded level definitions -var levels = [ - [ // Level 1 - [ - ['.','C','B'], - ['.','B','A'], - ['.','A','C'] - ], - [ - ['C','A','B'], - ['.','.','.'], - ['B','C','A'] - ], - [ - ['C','A','B'], - ['A','B','C'], - ['.','.','.'] - ], - [ - ['A','.','C'], - ['C','.','B'], - ['B','.','A'] - ], - [ - ['A','.','C'], - ['B','C','.'], - ['.','A','B'] - ], - [ - ['A','B','C'], - ['B','.','A'], - ['.','A','.'] - ], - [ - ['.','B','A'], - ['B','.','C'], - ['A','C','.'] - ], [ - ['A','B','C'], - ['.','C','A'], - ['.','A','.'] - ], - ], - [ // Level 2 - [ - ['A','.','.'], - ['D','.','.'], - ['C','A','.'], - ], - [ - ['C','.','D'], - ['.','.','B'], - ['.','D','C'], - ], - [ - ['.','B','D'], - ['D','.','.'], - ['B','.','C'], - ], - [ - ['A','.','.'], - ['.','D','A'], - ['D','.','C'], - ], - [ - ['C','.','D'], - ['.','C','.'], - ['B','.','C'], - ], - ], - [ // Level 3 - [ - ['.','A','.'], - ['A','C','.'], - ['.','B','.'], - ], - [ - ['B','A','.'], - ['A','C','.'], - ['.','.','.'], - ], - [ - ['.','A','C'], - ['.','.','B'], - ['C','.','.'], - ], - [ - ['.','.','C'], - ['D','.','A'], - ['C','.','.'], - ], - [ - ['.','.','C'], - ['D','.','A'], - ['.','A','.'], - ], - ], - [ // Level 4 - [ - ['.','B','C','D'], - ['D','C','.','A'], - ['.','D','A','B'], - ['B','A','.','C'], - ], - [ - ['A','.','.','D'], - ['D','C','B','.'], - ['C','D','A','.'], - ['.','.','D','C'], - ], - [ - ['.','B','.','.'], - ['.','C','B','A'], - ['C','D','A','.'], - ['.','.','D','.'], - ], - - [ - ['.','B','A','.'], - ['D','.','B','C'], - ['A','C','.','B'], - ['.','D','C','.'] - ], - [ - ['.','.','.','.'], - ['D','A','B','C'], - ['A','C','D','B'], - ['.','.','.','.'] - ], - ], - [ // Level 5 - [ - ['.','.','.','.'], - ['D','A','B','.'], - ['C','.','A','B'], - ['.','.','.','D'] - ], - [ - ['A','B','C','D'], - ['.','.','.','.'], - ['.','.','.','.'], - ['B','C','D','A'] - ], - [ - ['.','.','A','D'], - ['D','.','.','C'], - ['A','.','.','B'], - ['B','D','.','.'] - ], - [ - ['.','.','A','.'], - ['D','A','B','.'], - ['.','C','D','B'], - ['.','D','.','.'] - ], - [ - ['C','B','.','D'], - ['.','.','.','C'], - ['A','.','.','.'], - ['B','.','C','A'] - ], - ], - [ // Level 6 - [ - ['C','.','.','D'], - ['.','.','B','.'], - ['A','.','.','.'], - ['.','.','D','.'] - ], - [ - ['.','B','.','A'], - ['.','.','B','.'], - ['C','.','D','.'], - ['.','.','.','C'] - ], - [ - ['A','.','B','.'], - ['.','C','.','A'], - ['.','.','.','D'], - ['D','.','C','.'] - ], - [ - ['.','A','.','.'], - ['C','.','A','B'], - ['.','.','C','.'], - ['D','.','.','A'] - ], - [ - ['C','.','.','D'], - ['B','.','A','.'], - ['.','B','.','A'], - ['.','.','.','.'] - ], - [ - ['.','A','C','.'], - ['.','.','.','D'], - ['C','.','.','A'], - ['.','B','.','.'] - ], - [ - ['.','C','.','D'], - ['B','.','.','.'], - ['.','.','.','.'], - ['C','A','.','B'] - ], - [ - ['B','.','.','C'], - ['.','A','.','.'], - ['.','.','D','.'], - ['.','B','.','.'] - ], - ], - [ // Level 7 - [ - ['A','B','C','D','E'], - ['.','A','B','C','D'], - ['.','.','A','B','C'], - ['.','.','.','A','B'], - ['.','.','.','.','A'] - ], - [ - ['A','B','.','D','.'], - ['.','.','D','E','A'], - ['C','.','.','A','.'], - ['D','E','.','.','C'], - ['.','A','B','.','D'] - ], - [ - ['.','C','.','A','.'], - ['A','.','B','.','C'], - ['.','B','.','C','.'], - ['D','.','C','.','A'], - ['.','A','E','.','B'] - ], - [ - ['C','B','.','.','D'], - ['.','.','D','C','.'], - ['D','.','B','.','E'], - ['.','A','.','D','C'], - ['E','.','.','B','.'] - ], - [ - ['D','.','.','B','E'], - ['.','E','A','.','.'], - ['A','C','.','.','B'], - ['.','.','B','C','.'], - ['C','B','.','A','.'] - ], - [ - ['.','.','C','D','.'], - ['B','.','.','.','C'], - ['.','C','.','B','D'], - ['C','.','D','A','.'], - ['D','E','.','.','A'] - ], - ], - [ // Level 8 - [ - ['1','2','3','4','5'], - ['.','1','2','3','4'], - ['.','.','1','2','3'], - ['.','.','.','1','2'], - ['.','.','.','.','1'] - ], - [ - ['1','2','.','4','.'], - ['.','.','4','5','1'], - ['3','.','.','1','.'], - ['4','5','.','.','3'], - ['.','1','2','.','4'] - ], - [ - ['.','3','.','1','.'], - ['1','.','2','.','3'], - ['.','2','.','3','.'], - ['4','.','3','.','1'], - ['.','1','5','.','2'] - ], - [ - ['3','2','.','.','4'], - ['.','.','4','3','.'], - ['4','.','2','.','5'], - ['.','1','.','4','3'], - ['5','.','.','2','.'] - ], - [ - ['4','.','.','2','5'], - ['.','5','1','.','.'], - ['1','3','.','.','2'], - ['.','.','2','3','.'], - ['3','2','.','1','.'] - ], - [ - ['.','.','3','4','.'], - ['2','.','.','.','3'], - ['.','3','.','2','4'], - ['3','.','4','1','.'], - ['4','5','.','.','1'] - ], - ], - [ // Level 9 - [ - ['8', '9', '3', '4', '5', '2', '6', '7', '1'], - ['7', '1', '6', '3', '9', '8', '5', '.', '2'], - ['2', '4', '5', '1', '7', '6', '9', '8', '3'], - ['5', '2', '1', '8', '4', '9', '3', '6', '7'], - ['9', '6', '.', '2', '3', '7', '1', '5', '8'], - ['3', '8', '7', '5', '6', '1', '4', '2', '9'], - ['4', '7', '.', '9', '1', '5', '8', '.', '6'], - ['6', '5', '9', '7', '8', '3', '2', '1', '4'], - ['1', '3', '8', '6', '.', '4', '.', '9', '5'] - ], - [ - ['7', '9', '4', '6', '3', '5', '8', '1', '2'], - ['8', '3', '2', '4', '9', '1', '5', '7', '6'], - ['6', '1', '5', '.', '8', '2', '4', '.', '3'], - ['5', '2', '8', '1', '7', '3', '6', '4', '9'], - ['4', '7', '3', '2', '6', '9', '1', '5', '8'], - ['9', '6', '1', '8', '5', '4', '3', '2', '7'], - ['3', '8', '9', '5', '1', '7', '2', '6', '4'], - ['2', '5', '6', '.', '4', '.', '7', '3', '1'], - ['1', '4', '7', '3', '2', '6', '9', '8', '5'], - ], - [ - ['5', '6', '2', '1', '7', '9', '4', '3', '8'], - ['.', '3', '4', '8', '5', '6', '7', '1', '2'], - ['1', '8', '7', '4', '3', '2', '5', '9', '6'], - ['6', '9', '.', '7', '1', '5', '3', '2', '4'], - ['4', '1', '3', '9', '2', '8', '6', '.', '5'], - ['7', '2', '5', '3', '6', '4', '9', '8', '1'], - ['8', '5', '9', '2', '4', '3', '1', '6', '7'], - ['2', '7', '6', '5', '9', '1', '8', '4', '3'], - ['3', '4', '1', '.', '8', '7', '2', '5', '9'], - ], - [ - ['2', '1', '6', '4', '7', '8', '9', '5', '3'], - ['4', '9', '7', '.', '5', '3', '2', '6', '8'], - ['5', '3', '8', '2', '6', '9', '4', '1', '7'], - ['8', '.', '4', '9', '3', '6', '1', '7', '5'], - ['6', '5', '.', '7', '4', '1', '8', '2', '9'], - ['1', '7', '9', '8', '2', '5', '3', '4', '6'], - ['3', '4', '1', '6', '9', '7', '5', '8', '2'], - ['7', '8', '5', '3', '1', '2', '6', '.', '4'], - ['9', '6', '2', '5', '8', '4', '7', '3', '1'], - ] - ], - [ // Level 10 - [ - ['3', '8', '4', '9', '5', '6', '2', '7', '1'], - ['9', '.', '6', '8', '7', '2', '5', '3', '4'], - ['2', '5', '7', '1', '4', '.', '6', '9', '8'], - ['8', '9', '3', '.', '.', '5', '1', '.', '7'], - ['7', '2', '1', '4', '3', '9', '8', '5', '6'], - ['6', '4', '5', '7', '1', '8', '9', '2', '.'], - ['1', '3', '9', '.', '8', '7', '.', '6', '2'], - ['4', '6', '2', '3', '9', '1', '7', '.', '5'], - ['5', '7', '8', '2', '6', '4', '.', '1', '.'], - ], - [ - ['1', '2', '8', '4', '9', '3', '.', '6', '5'], - ['6', '.', '4', '5', '7', '8', '2', '9', '1'], - ['5', '7', '9', '2', '1', '6', '8', '4', '3'], - ['2', '6', '1', '3', '8', '5', '4', '7', '9'], - ['8', '5', '3', '.', '4', '9', '1', '2', '6'], - ['9', '.', '7', '6', '.', '1', '3', '5', '8'], - ['.', '.', '6', '1', '5', '.', '9', '3', '2'], - ['3', '9', '2', '8', '6', '7', '5', '1', '.'], - ['4', '1', '5', '9', '3', '2', '6', '.', '.'], - ], - [ - ['.', '8', '.', '4', '9', '2', '5', '1', '6'], - ['5', '.', '.', '7', '1', '6', '8', '.', '3'], - ['.', '6', '1', '3', '5', '.', '2', '4', '7'], - ['1', '2', '6', '.', '3', '7', '4', '5', '9'], - ['.', '9', '5', '2', '6', '1', '3', '7', '8'], - ['8', '7', '3', '.', '4', '5', '6', '2', '1'], - ['.', '3', '9', '1', '2', '4', '7', '8', '5'], - ['7', '1', '4', '5', '8', '3', '9', '6', '2'], - ['2', '5', '8', '6', '7', '9', '1', '3', '4'], - ], - [ - ['3', '7', '.', '4', '1', '.', '8', '5', '9'], - ['9', '5', '.', '8', '7', '3', '6', '.', '2'], - ['6', '1', '8', '2', '9', '5', '3', '4', '7'], - ['4', '3', '9', '1', '8', '.', '2', '6', '5'], - ['1', '2', '7', '5', '6', '4', '9', '8', '3'], - ['.', '8', '6', '3', '2', '9', '4', '7', '1'], - ['8', '9', '.', '7', '.', '2', '5', '3', '.'], - ['7', '6', '5', '9', '3', '8', '1', '2', '4'], - ['2', '4', '3', '6', '5', '.', '7', '9', '.'], - ] - ], - [ // Level 11 - [ - ['6', '1', '7', '5', '2', '9', '3', '.', '8'], - ['.', '4', '.', '.', '8', '6', '9', '2', '7'], - ['8', '9', '.', '.', '7', '4', '5', '6', '.'], - ['1', '8', '.', '.', '5', '7', '4', '.', '2'], - ['.', '2', '6', '9', '3', '1', '7', '.', '5'], - ['7', '.', '5', '2', '4', '8', '.', '1', '9'], - ['9', '7', '8', '4', '.', '2', '1', '5', '3'], - ['3', '.', '1', '8', '.', '.', '.', '7', '4'], - ['.', '5', '4', '7', '1', '3', '8', '.', '6'], - ], - [ - ['8', '5', '2', '4', '3', '1', '9', '6', '7'], - ['1', '9', '6', '2', '.', '5', '4', '.', '8'], - ['.', '.', '.', '6', '8', '9', '5', '2', '1'], - ['2', '1', '5', '.', '6', '8', '.', '4', '9'], - ['7', '.', '.', '1', '2', '4', '3', '.', '.'], - ['6', '.', '3', '9', '5', '7', '1', '8', '.'], - ['.', '2', '1', '7', '4', '6', '8', '9', '3'], - ['.', '6', '.', '5', '1', '3', '2', '7', '4'], - ['3', '.', '4', '.', '.', '.', '6', '.', '5'], - ], - [ - ['.', '3', '2', '8', '5', '1', '6', '.', '.'], - ['6', '8', '9', '3', '4', '2', '.', '7', '1'], - ['4', '1', '5', '.', '9', '7', '8', '2', '3'], - ['2', '4', '.', '.', '.', '9', '7', '3', '.'], - ['5', '.', '7', '2', '3', '.', '1', '6', '8'], - ['1', '6', '3', '7', '8', '5', '4', '9', '2'], - ['9', '7', '.', '4', '.', '8', '3', '5', '.'], - ['3', '2', '.', '.', '1', '6', '9', '.', '7'], - ['8', '.', '6', '.', '7', '3', '2', '.', '.'], - ], - [ - ['9', '5', '8', '6', '4', '.', '1', '7', '2'], - ['2', '6', '4', '.', '5', '1', '.', '8', '3'], - ['1', '3', '7', '.', '8', '2', '4', '.', '6'], - ['3', '4', '9', '8', '2', '.', '6', '1', '7'], - ['6', '1', '2', '4', '9', '7', '8', '3', '.'], - ['.', '.', '.', '1', '3', '6', '2', '9', '4'], - ['5', '.', '1', '.', '.', '9', '7', '.', '8'], - ['7', '8', '6', '.', '.', '.', '3', '.', '9'], - ['4', '9', '3', '2', '.', '8', '5', '.', '.'], - ] - ], - [ // Level 12 - [ - ['.', '1', '7', '3', '.', '8', '.', '.', '2'], - ['2', '9', '8', '.', '1', '6', '3', '7', '.'], - ['3', '5', '.', '9', '7', '2', '.', '.', '4'], - ['6', '3', '9', '5', '4', '.', '7', '.', '8'], - ['.', '.', '4', '.', '.', '3', '5', '1', '9'], - ['1', '8', '.', '2', '9', '.', '4', '.', '.'], - ['5', '.', '3', '.', '.', '9', '2', '.', '7'], - ['.', '7', '.', '6', '3', '5', '9', '.', '.'], - ['.', '.', '1', '7', '2', '4', '.', '5', '.'], - ], - [ - ['.', '5', '8', '6', '7', '.', '3', '9', '2'], - ['2', '.', '.', '4', '5', '.', '.', '7', '6'], - ['.', '.', '6', '.', '.', '.', '8', '5', '4'], - ['.', '8', '.', '7', '2', '6', '5', '4', '.'], - ['5', '.', '2', '9', '.', '4', '.', '3', '.'], - ['1', '7', '4', '5', '.', '3', '2', '6', '.'], - ['3', '.', '.', '8', '6', '.', '4', '1', '.'], - ['8', '9', '5', '.', '4', '.', '6', '.', '.'], - ['6', '4', '.', '.', '.', '5', '9', '8', '7'], - ], - [ - ['4', '.', '5', '7', '3', '1', '9', '6', '2'], - ['3', '.', '6', '4', '.', '.', '.', '8', '.'], - ['9', '1', '7', '.', '.', '2', '4', '5', '3'], - ['.', '9', '8', '5', '2', '7', '.', '1', '.'], - ['.', '7', '.', '.', '.', '4', '.', '.', '8'], - ['.', '.', '1', '3', '6', '8', '.', '7', '.'], - ['.', '3', '2', '.', '.', '9', '7', '4', '.'], - ['7', '.', '.', '.', '.', '.', '2', '3', '1'], - ['1', '6', '.', '2', '7', '3', '8', '9', '5'], - ], - [ - ['6', '5', '1', '8', '4', '7', '3', '.', '9'], - ['.', '4', '9', '.', '1', '5', '6', '.', '.'], - ['7', '.', '3', '.', '2', '9', '4', '.', '.'], - ['.', '2', '.', '7', '9', '6', '8', '4', '1'], - ['.', '9', '.', '4', '3', '.', '5', '.', '2'], - ['1', '6', '4', '.', '.', '2', '.', '.', '3'], - ['4', '1', '.', '9', '.', '.', '7', '5', '.'], - ['5', '3', '6', '.', '.', '.', '.', '9', '.'], - ['.', '7', '8', '1', '5', '.', '.', '3', '6'], - ] - ], - [ // Level 13 - [ - ['.', '2', '.', '1', '.', '5', '.', '.', '9'], - ['.', '.', '1', '4', '7', '6', '2', '8', '.'], - ['3', '7', '4', '.', '8', '2', '.', '.', '6'], - ['.', '6', '3', '.', '4', '1', '.', '9', '2'], - ['4', '5', '9', '.', '.', '.', '8', '.', '7'], - ['.', '.', '2', '7', '5', '.', '6', '3', '.'], - ['.', '4', '7', '.', '.', '8', '3', '.', '1'], - ['.', '3', '.', '6', '.', '4', '.', '2', '5'], - ['6', '.', '.', '3', '.', '.', '.', '.', '8'], - ], - [ - ['4', '.', '5', '.', '2', '.', '7', '.', '1'], - ['.', '.', '.', '3', '4', '.', '5', '6', '8'], - ['6', '.', '.', '8', '5', '7', '2', '.', '.'], - ['.', '.', '4', '.', '.', '5', '.', '7', '.'], - ['.', '3', '.', '2', '.', '.', '8', '.', '.'], - ['5', '.', '.', '.', '.', '9', '.', '.', '2'], - ['.', '7', '1', '.', '.', '.', '4', '2', '.'], - ['2', '.', '6', '.', '9', '.', '3', '.', '.'], - ['3', '.', '9', '1', '.', '2', '6', '.', '.'], - ], - [ - ['5', '7', '8', '.', '.', '3', '.', '9', '.'], - ['.', '6', '.', '4', '.', '9', '7', '.', '8'], - ['2', '4', '9', '7', '8', '1', '5', '3', '.'], - ['.', '1', '.', '.', '9', '7', '.', '.', '.'], - ['.', '.', '.', '5', '.', '.', '4', '.', '3'], - ['6', '8', '5', '2', '3', '.', '.', '.', '.'], - ['.', '5', '1', '9', '.', '.', '.', '.', '2'], - ['4', '.', '6', '3', '.', '2', '.', '5', '1'], - ['.', '.', '2', '.', '4', '5', '.', '7', '.'], - ], - [ - ['9', '.', '.', '.', '7', '2', '.', '3', '.'], - ['4', '1', '.', '8', '5', '.', '9', '.', '.'], - ['2', '7', '3', '9', '.', '.', '.', '.', '.'], - ['.', '3', '.', '.', '.', '.', '7', '.', '.'], - ['1', '9', '7', '.', '3', '.', '.', '.', '5'], - ['6', '5', '2', '1', '.', '.', '4', '8', '3'], - ['.', '.', '9', '.', '.', '4', '.', '1', '8'], - ['.', '.', '.', '2', '.', '5', '3', '4', '.'], - ['5', '.', '8', '.', '.', '.', '.', '6', '7'], - ] - ] - ] - var currentLevel = 0 -var numberOfLevel = levels.length +var numberOfLevel var items -var symbolizeLevelMax = 7 // Last level in which we set symbols - +var symbols var url = "qrc:/gcompris/src/activities/sudoku/resource/" -var symbols = [ - {"imgName": "circle", "text": 'A', "extension": ".svg"}, - {"imgName": "rectangle", "text": 'B', "extension": ".svg"}, - {"imgName": "rhombus", "text": 'C', "extension": ".svg"}, - {"imgName": "star", "text": 'D', "extension": ".svg"}, - {"imgName": "triangle", "text": 'E', "extension": ".svg"} - ] - function start(items_) { items = items_ currentLevel = 0 items.score.currentSubLevel = 1 - + numberOfLevel = items.levels.length // Shuffle all levels - for(var nb = 0 ; nb < levels.length ; ++ nb) { - Core.shuffle(levels[nb]); - } - - // Shuffle the symbols - Core.shuffle(symbols); - for(var s = 0 ; s < symbols.length ; ++ s) { - // Change the letter - symbols[s].text = String.fromCharCode('A'.charCodeAt() +s); + for(var nb = 0 ; nb < items.levels.length ; ++ nb) { + Core.shuffle(items.levels[nb]["data"]); } initLevel() @@ -595,23 +46,23 @@ function initLevel() { items.bar.level = currentLevel + 1; - items.score.numberOfSubLevels = levels[currentLevel].length + items.score.numberOfSubLevels = items.levels[currentLevel]["data"].length + symbols = items.levels[currentLevel]["symbols"] for(var i = items.availablePiecesModel.model.count-1 ; i >= 0 ; -- i) { items.availablePiecesModel.model.remove(i); } - items.sudokuModel.clear(); // Copy current sudoku in local variable - var initialSudoku = levels[currentLevel][items.score.currentSubLevel-1]; + var initialSudoku = items.levels[currentLevel]["data"][items.score.currentSubLevel-1]; items.columns = initialSudoku.length items.rows = items.columns // Compute number of regions var nbLines = Math.floor(Math.sqrt(items.columns)); - items.background.nbRegions = nbLines*nbLines == items.columns ? nbLines : 1; + items.background.nbRegions = (nbLines*nbLines == items.columns) ? nbLines : 1; // Create grid for(var i = 0 ; i < initialSudoku.length ; ++ i) { @@ -625,24 +76,15 @@ } } - if(currentLevel < symbolizeLevelMax) { // Play with symbols - // Randomize symbols - for(var i = 0 ; i < symbols.length ; ++ i) { - for(var line = 0 ; line < items.sudokuModel.count ; ++ line) { - if(items.sudokuModel.get(line).textValue == symbols[i].text) { - items.availablePiecesModel.model.append(symbols[i]); - break; // break to pass to the next symbol - } + for(var i = 0 ; i < symbols.length ; ++ i) { + for(var line = 0 ; line < items.sudokuModel.count ; ++ line) { + if(items.sudokuModel.get(line).textValue == symbols[i].text) { + items.availablePiecesModel.model.append(symbols[i]); + break; // break to pass to the next symbol } } } - else { // Play with numbers - for(var i = 1 ; i < items.columns+1 ; ++ i) { - items.availablePiecesModel.model.append({"imgName": i.toString(), - "text": i.toString(), - "extension": ".svg"}); - } - } + } function nextLevel() { @@ -674,14 +116,14 @@ items.score.currentSubLevel = 1 currentLevel ++ } - if(currentLevel > numberOfLevel) { - currentLevel = numberOfLevel + if(currentLevel >= numberOfLevel) { + currentLevel = 0 } initLevel(); } function clickOn(caseX, caseY) { - var initialSudoku = levels[currentLevel][items.score.currentSubLevel-1]; + var initialSudoku = items.levels[currentLevel]["data"][items.score.currentSubLevel-1]; var currentCase = caseX + caseY * initialSudoku.length; @@ -801,17 +243,10 @@ function dataToImageSource(data) { var imageName = ""; - if(currentLevel < symbolizeLevelMax) { // Play with symbols - for(var i = 0 ; i < symbols.length ; ++ i) { - if(symbols[i].text == data) { - imageName = url + symbols[i].imgName+symbols[i].extension; - break; - } - } - } - else { // numbers - if(data != ".") { - imageName = url+data+".svg"; + for(var i = 0 ; i < symbols.length ; ++ i) { + if(symbols[i].text == data) { + imageName = url + symbols[i].imgName+symbols[i].extension; + break; } }