From 632a71a0c556695c828bcbe388bca75c5ba64d89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Mon, 26 Jul 2021 15:54:48 +0200 Subject: [PATCH] Display mines count indicator --- android/gradle.properties | 4 ++-- .../metadata/android/en-US/changelogs/7.txt | 1 + .../metadata/android/fr-FR/changelogs/7.txt | 1 + lib/layout/board.dart | 23 ++++++++++++++++++- lib/provider/data.dart | 6 +++++ lib/utils/board_utils.dart | 19 +++++++++++++-- lib/utils/game_utils.dart | 1 + 7 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/7.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/7.txt diff --git a/android/gradle.properties b/android/gradle.properties index 135006f..85b94f8 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 0000000..4266854 --- /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 0000000..e3751c7 --- /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 f333605..0c12899 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 ffe9042..75cf513 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 88da048..e7e7bb3 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 d4e308f..904838a 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); } -- GitLab