samedi 18 janvier 2014

[Dart #003] Un peu de hasard

Résumé de l'épisode précédent: Mon puzzle ressemble à un truc tout moche en Command Line, mais au moins il est programmé comme un objet.


Passons au 2e besoin: La fonction de mélange aléatoire.

En gros, il s'agit de mélanger les cases du puzzle, i.e. de sortir une suite de 0 à 15 dans le désordre.

Le BASIC proposait déjà à l'époque une fonction random et il en est de même pour Dart.

Ma fonction de mélange va invoquer la Factory Random qui produira un nombre aléatoire entre 0 et 15 (fonction nextInt). J'utilise une List random_list pour les stocker et une autre List check_list pour gérer les doublons. Tant que ma List random_list n'est pas remplie, je boucle.

puzzle_in_1 est le puzzle à mélanger, puzzle_in_2 est un puzzle ordonné témoin
Il s'agit ensuite de repositionner les String [01], ... [EV] dans l'ordre (ou plutôt le désordre) indiqué par la List random_list.

Je prends les cases du puzzle témoin et les positionne suivant random_list
Finalement, c'était moins compliqué que je ne le pensais d'écrire cette partie. Dans mes souvenirs, cela m'avait pris un mois de recherche et coûté l'appel à un ami pour réussir à mélanger le puzzle.

C'est moche et en désordre maintenant...
La semaine prochaine, on se donnera les moyens de le remettre dans l'ordre.