Ca n'a bien entendu pas pris longtemps, le plus long ayant été de se rendre compte que RANDOM rendait une valeur flottante (j'ai l'habitude du random() C qui rend des entiers). Le code est trivial, mais je voulais souligner deux choses:
* comme on le savait déjà grâce aux programmes de Gilles59, DJ_O, critor et d'autres, la vitesse (même plus élevée sur émulateur que sur machine réelle, il y a quand même de la marge !) est impressionnante sur Prime. On pourrait peut-être gagner encore en utilisant un LFSR plutôt que RANDOM();
* le debugger BASIC intégré à l'OS de la Prime est très utile. On n'a pas ça sur les machines TI, alors que c'est un outil standard de la programmation professionnelle

- Code: Select all
EXPORT shuffle()
BEGIN
LOCAL x1, y1, x2, y2;
DIMGROB_P(G1,16,12);
REPEAT
x1:=IP(RANDOM(20))*16;
y1:=IP(RANDOM(20))*12;
x2:=IP(RANDOM(20))*16;
y2:=IP(RANDOM(20))*12;
BLIT_P(G1,0,0,G0,x1,y1,x1+16,y1+12);
BLIT_P(G0,x1,y1,G0,x2,y2,x2+16,y2+12);
BLIT_P(G0,x2,y2,G1,0,0,16,12);
UNTIL ISKEYDOWN(4);
END;
Astuce: le code des fichiers .hpprgm étant une suite de chaînes de caractères UTF-16 little-endian, comme nous l'avons documenté sur le hpwiki TI-Planet, il y a une méthode simple et efficace (sans lancer l'émulateur) pour extraire le code d'un programme:
- Code: Select all
strings -n 1 -e l HP_Prime/shuffle.hpprgm