Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • android/org.benoitharrault.sudoku
1 result
Select Git revision
Show changes
Commits on Source (2)
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=0.0.3 app.versionName=0.0.4
app.versionCode=3 app.versionCode=4
{
"templates": {
"2x2": {
"easy": [
"0000320400210100",
"0003034000040000",
"0402000000004020",
"0002001443002000",
"4312020000000020"
],
"medium": [
"3012200003000000",
"0003104030002100",
"0410100400000030",
"0100000030120000"
],
"hard": [
"0001000003000034",
"1000032000040002",
"0420000000100040",
"0300010010030240"
]
},
"3x3": {
"easy": [
"402370008801000000009086400108020000200060009000090207006450100000000603700032905",
"000100035060203000020059041002008304000000000509600700450320010000401070780005000",
"000130000070960050596000001000700105380000079704009000800000243040083010000091000",
"000300000001006030384200100700083056600000003830610002008005649060400200000002000"
],
"medium": [
"800050003004902700000340600305100800200030001001008409006093000003807200100060004",
"020000370500036029000200605004701006000000000600904100802009000950340007043000050",
"005060300091000005206400078000957010000000000080143000510004709900000620002030500",
"040006090080000320090570040005307900800090004009804200050089030073000010010700060"
],
"hard": [
"010900700050000060006207900600700080320804096080006007005602300060000010008003040",
"000009850900600402007050001000000093861000724730000000100020600406003009092800000",
"064900100000020006107006090000050364030000010576040000090500201700090000005007680",
"008007010512000370470051000000705900000010000004306000000560098045000763030900100"
]
}
}
}
import 'dart:math';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../entities/cell.dart'; import '../entities/cell.dart';
import '../provider/data.dart'; import '../provider/data.dart';
import '../utils/random_pick_grid.dart';
class Home extends StatelessWidget { class Home extends StatelessWidget {
static const String id = 'home'; static const String id = 'home';
...@@ -17,21 +20,54 @@ class Home extends StatelessWidget { ...@@ -17,21 +20,54 @@ class Home extends StatelessWidget {
Future<void> startGame(Data myProvider) async { Future<void> startGame(Data myProvider) async {
myProvider.updateStateRunning = true; myProvider.updateStateRunning = true;
myProvider.updateCells = createEmptyBoard(myProvider.size); myProvider.updateCells = createEmptyBoard(myProvider.size);
pickGrid(myProvider);
}
Future<void> pickGrid(Data myProvider) async {
int size = myProvider.size;
String grid;
RandomPickGrid randomPickGrid;
randomPickGrid = RandomPickGrid();
await randomPickGrid.init(myProvider.level, size);
if (randomPickGrid.grid != null) {
grid = randomPickGrid.grid;
}
if (grid.length == pow(size, 4)) {
List cells = createBoardFromTemplate(grid);
myProvider.updateCells = cells;
}
}
List createBoardFromTemplate(String grid) {
List cells = [];
int size = int.parse(pow(grid.length, 1/4).toStringAsFixed(0));
int index = 0;
for (var rowIndex = 0; rowIndex < pow(size, 2); rowIndex++) {
List row = [];
for (var colIndex = 0; colIndex < pow(size, 2); colIndex++) {
int value = int.parse(grid[index++]);
row.add(Cell(value, colIndex, rowIndex));
}
cells.add(row);
}
// TODO: shuffle/flip/rotate grid
return cells;
} }
List createEmptyBoard(int size) { List createEmptyBoard(int size) {
int index = 0; int index = 0;
List cells = []; List cells = [];
for (var rowIndex = 0; rowIndex < (size * size); rowIndex++) { for (var rowIndex = 0; rowIndex < pow(size, 2); rowIndex++) {
List row = []; List row = [];
for (var colIndex = 0; colIndex < (size * size); colIndex++) { for (var colIndex = 0; colIndex < pow(size, 2); colIndex++) {
row.add( row.add(Cell(0, colIndex, rowIndex));
Cell(
(index++ % ((size * size) + 1)), // for debug purpose only :')
colIndex,
rowIndex
)
);
} }
cells.add(row); cells.add(row);
} }
...@@ -160,9 +196,9 @@ class Home extends StatelessWidget { ...@@ -160,9 +196,9 @@ class Home extends StatelessWidget {
child: Table( child: Table(
defaultColumnWidth: IntrinsicColumnWidth(), defaultColumnWidth: IntrinsicColumnWidth(),
children: [ children: [
for (var row = 0; row < (size * size); row++) for (var row = 0; row < pow(size, 2); row++)
TableRow(children: [ TableRow(children: [
for (var col = 0; col < (size * size); col++) for (var col = 0; col < pow(size, 2); col++)
Column(children: [ Column(children: [
cells[row][col].widget(myProvider) cells[row][col].widget(myProvider)
]), ]),
...@@ -189,7 +225,7 @@ class Home extends StatelessWidget { ...@@ -189,7 +225,7 @@ class Home extends StatelessWidget {
children: [ children: [
TableRow( TableRow(
children: [ children: [
for (var value = 0; value < ((size * size) + 1); value++) for (var value = 0; value < (pow(size, 2) + 1); value++)
Column( Column(
children: [ children: [
Cell( Cell(
......
import 'dart:async';
import 'dart:convert';
import 'package:flutter/services.dart';
class RandomPickGrid {
RandomPickGrid();
String _grid;
init(String difficulty, int size) async {
_grid = '';
await gridFromLocalFile(difficulty, size);
}
Future<void> gridFromLocalFile(String difficulty, int size) async {
String sizeAsString = size.toString() + 'x' + size.toString();
// Get global grids list
List grids;
try {
String jsonString = await rootBundle.loadString('assets/files/templates.json');
final jsonResponse = await json.decode(jsonString);
grids = jsonResponse['templates'][sizeAsString][difficulty];
} catch (e) {
print("$e");
}
// Check we have enough grids
if (grids.length < 1) {
print('Not enough grids [' + sizeAsString + ', ' + difficulty + '] in templates.');
}
// Randomize grids list
grids.shuffle();
// Pick first grids from shuffled list
_grid = grids.take(1).toList()[0];
}
String get grid => _grid;
}
...@@ -18,5 +18,6 @@ dev_dependencies: ...@@ -18,5 +18,6 @@ dev_dependencies:
flutter: flutter:
uses-material-design: true uses-material-design: true
assets: assets:
- assets/files/
- assets/icons/ - assets/icons/
- assets/skins/ - assets/skins/