Skip to content
Snippets Groups Projects
Select Git revision
  • bcd6a446ab2af15c78f57d284273f0dc82c45b05
  • master default protected
  • 56-upgrade-framework-and-dependencies
  • 39-improve-app-metadata
  • 28-add-high-scores
  • 32-add-block-size-limit-parameter
  • 29-use-real-board-painter-to-draw-parameters-items
  • Release_0.9.0_47 protected
  • Release_0.8.2_46 protected
  • Release_0.8.1_45 protected
  • Release_0.8.0_44 protected
  • Release_0.7.0_43 protected
  • Release_0.6.0_42 protected
  • Release_0.5.0_41 protected
  • Release_0.4.2_40 protected
  • Release_0.4.1_39 protected
  • Release_0.4.0_38 protected
  • Release_0.3.1_37 protected
  • Release_0.3.0_36 protected
  • Release_0.2.1_35 protected
  • Release_0.2.0_34 protected
  • Release_0.1.1_33 protected
  • Release_0.1.0_32 protected
  • Release_0.0.31_31 protected
  • Release_0.0.30_30 protected
  • Release_0.0.29_29 protected
  • Release_0.0.28_28 protected
27 results

global_app_bar.dart

Blame
  • 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;
        }