Select Git revision
WorkspaceSettings.xcsettings
-
Benoît Harrault authoredBenoît Harrault authored
game_utils.dart 3.14 KiB
import 'dart:async';
import 'dart:math';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle;
import 'package:image/image.dart' as imglib;
import 'package:puzzlegame/entities/moving_tile.dart';
import 'package:puzzlegame/entities/tile.dart';
import 'package:puzzlegame/provider/data.dart';
class GameUtils {
static String getImageAssetName(String imageCode) {
return 'assets/images/' + imageCode + '.png';
}
static startGame(Data myProvider, String imageCode) {
myProvider.updateIsShufflingBoard(true);
myProvider.updateSelectedImage(imageCode);
new Timer(new Duration(seconds: 1), () {
GameUtils.splitImageInTiles(myProvider);
});
}
static startRandomGame(Data myProvider) {
List sizes = [3, 4, 5];
sizes.shuffle();
myProvider.updateTilesCount(sizes[0]);
List images = myProvider.availableImages;
images.shuffle();
startGame(myProvider, images[0]);
}
static Future<void> resetGame(Data myProvider) async {
myProvider.resetSelectedImage();
myProvider.updateIsTipImageDisplayed(false);
}
static bool checkTilesetIsCleared(List<MovingTile> tiles) {
for (Tile tile in tiles) {
if (!tile.isCorrect()) {
return false;
}
}
return true;
}
static List<MovingTile> shuffleMovingTiles(List<MovingTile> tiles) {
var random = new Random();
int tilesCount = tiles.length;
for (int i = 0; i < (10 * tilesCount); i++) {
int indexTile1 = random.nextInt(tilesCount);
int indexTile2 = random.nextInt(tilesCount);
MovingTile swap = tiles[indexTile1];
tiles[indexTile1] = tiles[indexTile2];
tiles[indexTile2] = swap;
int swapCol = tiles[indexTile1].currentCol;
tiles[indexTile1].currentCol = tiles[indexTile2].currentCol;
tiles[indexTile2].currentCol = swapCol;
int swapRow = tiles[indexTile1].currentRow;
tiles[indexTile1].currentRow = tiles[indexTile2].currentRow;
tiles[indexTile2].currentRow = swapRow;
}