diff --git a/android/gradle.properties b/android/gradle.properties index 135006f9c1386c8757595c43e890e911f732f5a3..85b94f88ee157e1d1b3cec184c8948902443d36f 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,5 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -app.versionName=0.0.6 -app.versionCode=6 +app.versionName=0.0.7 +app.versionCode=7 diff --git a/fastlane/metadata/android/en-US/changelogs/7.txt b/fastlane/metadata/android/en-US/changelogs/7.txt new file mode 100644 index 0000000000000000000000000000000000000000..42668547eaccda46cdbd1fc431b8d81852c3135c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/7.txt @@ -0,0 +1 @@ +Display mines count indicator diff --git a/fastlane/metadata/android/fr-FR/changelogs/7.txt b/fastlane/metadata/android/fr-FR/changelogs/7.txt new file mode 100644 index 0000000000000000000000000000000000000000..e3751c7bb792fbe1b93cd7f9272b5d666eebebce --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/7.txt @@ -0,0 +1 @@ +Affichage d'un compteur de mines diff --git a/lib/layout/board.dart b/lib/layout/board.dart index f3336057ba084a331e33ea69d5c1d43ea189262a..0c12899be5110528211ff0494eb12d69334bc40f 100644 --- a/lib/layout/board.dart +++ b/lib/layout/board.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import '../provider/data.dart'; +import '../utils/board_utils.dart'; class Board { @@ -18,7 +19,12 @@ class Board { width: 2, ), ), - child: buildGameTileset(myProvider), + child: Column( + children: [ + buildGameTileset(myProvider), + buildMinesCounterWidget(myProvider), + ], + ), ); } @@ -79,4 +85,19 @@ class Board { ); } + static Container buildMinesCounterWidget(Data myProvider) { + String markedMinesCount = BoardUtils.countFlaggedCells(myProvider.cells).toString(); + String placedMinesCount = myProvider.minesCount.toString(); + + return Container( + child: Text( + markedMinesCount + ' / ' + placedMinesCount, + style: TextStyle( + fontSize: 20, + color: Colors.white + ), + ), + ); + } + } diff --git a/lib/provider/data.dart b/lib/provider/data.dart index ffe9042873b0f1b3223fdfd6ff5e5be01128e58b..75cf51392870f4d9269d32b4150ff3c17cf209e9 100644 --- a/lib/provider/data.dart +++ b/lib/provider/data.dart @@ -17,6 +17,7 @@ class Data extends ChangeNotifier { // Game data bool _gameRunning = false; bool _isBoardMined = false; + int _minesCount = 0; bool _gameWin = false; bool _gameFail = false; bool _reportMode = false; @@ -109,6 +110,11 @@ class Data extends ChangeNotifier { notifyListeners(); } + int get minesCount => _minesCount; + void updateMinesCount(int minesCount) { + _minesCount = minesCount; + } + bool get gameWin => _gameWin; void updateGameWin(bool gameWin) { _gameWin = gameWin; diff --git a/lib/utils/board_utils.dart b/lib/utils/board_utils.dart index 88da0481d32a8cb8546d6036ab819b892034b6fd..e7e7bb3f7b3d88809b3ae3974246924fa5459e2e 100644 --- a/lib/utils/board_utils.dart +++ b/lib/utils/board_utils.dart @@ -108,8 +108,7 @@ class BoardUtils { allowedCells.shuffle(); // Put random mines on board - int minesCount = getMinesCount(sizeHorizontal, sizeVertical, level); - for (var mineIndex = 0; mineIndex < minesCount; mineIndex++) { + for (var mineIndex = 0; mineIndex < myProvider.minesCount; mineIndex++) { cells[allowedCells[mineIndex][0]][allowedCells[mineIndex][1]].isMined = true; } @@ -234,4 +233,20 @@ class BoardUtils { return true; } + + static int countFlaggedCells(List cells) { + int count = 0; + + int sizeHorizontal = cells.length; + int sizeVertical = cells[0].length; + for (var row = 0; row < sizeVertical; row++) { + for (var col = 0; col < sizeHorizontal; col++) { + if (cells[row][col].isMarked == true) { + count++; + } + } + } + + return count; + } } diff --git a/lib/utils/game_utils.dart b/lib/utils/game_utils.dart index d4e308f86df66afae9dfd0fdf939e0c9fc5d4279..904838aeaf35257545d4a5825bc90d16533b4362 100644 --- a/lib/utils/game_utils.dart +++ b/lib/utils/game_utils.dart @@ -10,6 +10,7 @@ class GameUtils { static void startGame(Data myProvider) { print('Starting game: ' + myProvider.size + ' - ' + myProvider.level); myProvider.updateSize(myProvider.size); + myProvider.updateMinesCount(BoardUtils.getMinesCount(myProvider.sizeHorizontal, myProvider.sizeVertical, myProvider.level)); myProvider.updateGameRunning(true); BoardUtils.createInitialEmptyBoard(myProvider); }