Skip to content
Snippets Groups Projects
Select Git revision
  • c8e9f6799c4f5ae78abcaab1471a1c7f0c7e9b5a
  • 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

parameter_painter.dart

Blame
  • random_pick_word.dart 2.35 KiB
    import 'dart:async';
    import 'dart:convert';
    import "dart:math";
    
    import 'package:flutter/services.dart';
    
    class RandomPickWord {
      static Set<String> wordList = <String>{};
      static Set<String> dictionary = <String>{};
    
      static String _lang = '';
      static int _length = 5;
      static String _level = '';
    
      RandomPickWord();
    
      String _word = '';
      String get word => _word;
    
      init(String lang, int length, String level) async {
        if (lang != _lang || length != _length || level != _level || wordList.isEmpty || dictionary.isEmpty) {
          _lang = lang;
          _length = length;
          _level = level;
    
          dictionary.clear();
          wordList.clear();
    
          String wordBaseFilename = 'words-' + length.toString() + '-' + lang;
    
          // Get full dictionary (eligible words)
          print('Reload dictionary / ' + lang + ' / ' + length.toString());
          try {
            String wordsFile = wordBaseFilename + '-' + 'dictionary';
            var data = await rootBundle.loadString('assets/files/' + wordsFile + '.txt');
            LineSplitter.split(data).forEach((line) {
              if (line.length == length) {
                dictionary.add(line.toUpperCase());
              }
            });
          } catch (e) {
            throw "Failed loading dictionary database";
          }
    
          // Get guessable words list (will pick random word from)
          print('Reload words list  / ' + lang + ' / ' + length.toString() + ' / ' + level);
          try {
            String wordsFile = wordBaseFilename + '-' + level;
            var data = await rootBundle.loadString('assets/files/' + wordsFile + '.txt');
            LineSplitter.split(data).forEach((line) {
              if (line.length == length) {
                wordList.add(line.toUpperCase());
              }
            });
          } catch (e) {
            throw "Failed loading words database";
          }
        }
    
        print('Words in dictionary: ' + dictionary.length.toString());
        print('Words in words list: ' + wordList.length.toString());
    
        _word = '';
        await wordFromLocalFile();
      }
    
      Future<void> wordFromLocalFile() async {
        // Check we have enough words
        if (wordList.length < 1) {
          print('Not enough words in list.');
          _word = '';
        } else {
          final _random = new Random();
          _word = wordList.elementAt(_random.nextInt(wordList.length));
        }
    
        print('Picked word: ' + _word);
      }
    
      static bool checkWordExists(String word) {
        return dictionary.contains(word);
      }
    }