Select Git revision
board_utils.dart
-
Benoît Harrault authoredBenoît Harrault authored
board_utils.dart 6.76 KiB
import '../entities/cell.dart';
import '../provider/data.dart';
class BoardUtils {
static printGrid(List cells) {
final String IS_MINED = 'X';
final String IS_SAFE = '.';
final String MINE_FOUND = '#';
final String WRONG_MARKED_CELL = '0';
final String EXPLORED_SAFE_CELL = '.';
final String UNKNOWN_STATE = ' ';
print('');
String line = '--';
for (var i = 0; i < cells[0].length; i++) {
line += '-';
}
print(line + ' ' + line);
for (var rowIndex = 0; rowIndex < cells.length; rowIndex++) {
String currentLine = '';
String solvedLine = '';
for (var colIndex = 0; colIndex < cells[rowIndex].length; colIndex++) {
solvedLine += cells[rowIndex][colIndex].isMined ? IS_MINED : IS_SAFE;
String cellString = UNKNOWN_STATE;
if (cells[rowIndex][colIndex].isExplored) {
cellString = EXPLORED_SAFE_CELL;
}
if (cells[rowIndex][colIndex].isMarked) {
if (cells[rowIndex][colIndex].isMined) {
cellString = MINE_FOUND;
} else {
cellString = WRONG_MARKED_CELL;
}
}
currentLine += cellString;
}
print('|' + currentLine + '| |' + solvedLine + '|');
}
print(line + ' ' + line);
print('');
}
static List createEmptyBoard(int sizeHorizontal, int sizeVertical) {
int index = 0;
List cells = [];
for (var rowIndex = 0; rowIndex < sizeVertical; rowIndex++) {
List row = [];
for (var colIndex = 0; colIndex < sizeHorizontal; colIndex++) {
row.add(Cell(false));
}
cells.add(row);
}
return cells;
}
static int getMinesCount(int sizeHorizontal, int sizeVertical, String level) {
int minesCountRatio = 0;
switch(level) {
case 'easy': {
minesCountRatio = 5;
}
break;
case 'medium': {
minesCountRatio = 10;
}
break;