Yop !

Je viens de faire un taquin 3*3, vous savez le puzzle qu'il faut reconstituer en faisant coulisser les pièces.
Celui-ci est un peu différent de ceux qu'on trouve généralement sur les portables. En fait, on peut faire coulisser plusieurs pièces en même temps. Pas de touches directionnelles, on utilise les touches numériques : il y en a 9, comme chaque emplacement du taquin. Donc si la case vide est en bas à droite, si j'appuies sur la touche 1, les 2 pièces du bas vont se décaler vers la droite.

A suivre : une video de moi jouant au taquin (le vrai !).

Download it nooooow !!!

Bon ok pour les fainéants, un screen : (excusez la lenteur, mais résoudre un taquin en cliquant sur les touches de l'ému, c'est pas top ^^)

adiv
cool j'essaaye ça tout de suite et je te tien au courant wink
avatarloclamor
Mondo Photo
Le voyage en photo et en 1 clic
Ca fait longtemps que tu l'as codé??
Non hier. Enfait j'en avais déjà codé un ya environ 1 an, mais je l'ai perdu. Enfin bon cette version est certainement mieux que l'ancienne.
Alors t'as du me l'envoyer parce que je me souviens d'avoir vu un prog comme ça... smile
Peut-être bien (d'ailleurs si tu le retrouves, je pourrais observer l'évolution de mon niveau).
Dsl, j'ai supprimé tous les anciens messages de ma boite email par inadvertance, en faisant joujou avec ThunderBird. grin
Pas grave, je l'ai retrouvé : très moche ^^.
DelVar B{1,2,3,4,5,6,7,8→L1
DelVar L29→dim(L2

For(X,8,1,-1
randInt(1,X→A
L1(Ans→L2(9-X
B+sum(Ans<L2&#8594;B
L1(X&#8594;L1(A
End

If fPart(.5B
Then
randInt(1,7&#8594;X
L2(Ans+1&#8594;A
L2(X&#8594;L2(X+1
A&#8594;L2(X
End

{3,3&#8594;dim([A]
ClrHome

For(B,1,3
For(A,1,3
L2(A+3B-3&#8594;[A](B,A
Output(B,A,Ans
End:End

Output(3,3," 
3&#8594;A:3&#8594;B:0&#8594;X
Output(8,1,Ans

While 1

Repeat Ans
.1getKey&#8594;K
End

int(Ans)-B-6&#8594;J
10fPart(K)-A-1&#8594;I

If Ans xor J
Then

2Ans+1
Ans/abs(Ans&#8594;Z

For(A,A,A+I-Ans,Ans
[A](B,A+Z&#8594;[A](B,A
Output(B,A,Ans
End

Output(B,A," 
2J+1
Ans/abs(Ans&#8594;Z

For(B,B,B+J-Ans,Ans
[A](B+Z,A&#8594;[A](B,A
Output(B,A,Ans
End

Output(B,A," 
X+1&#8594;X
Output(8,1,Ans

End
End
Bah alors tu t'es amélioré, tant mieux! (Moi j'évite de regarder ce qu'étaient mes premiers progs, ça me ferait peur)
Oui oui je vais mettre des comms, rooo...

Voilà les points techniques à retenir (pour ceux qui les ignorent) :

- La routine pour créer une liste contenant des nombres aléatoires tous différents.
- La technique pour avoir le signe d'un nombre, en y incluant le cas 0 (dont le signe est 0).
- Savoir si un nombre est impair.
Héhé, j'ai trouvé une optimisation (pas très utile)

Dans les boucles For(), le Max est calculé une seule fois (ainsi que le pas je suppose).
Donc le Z peut être remplacé par Ans à qques endroits...
Oh la la où avais-je la tête ! ^^ C'était fait exprès ! Lol merci.
XD
avatarloclamor
Mondo Photo
Le voyage en photo et en 1 clic
Hé hé, chose dite, chose faite : Résolution d'un taquin
gg.
Mai elle est pas un peut accélérée la vidéo ?...
avatarloclamor
Mondo Photo
Le voyage en photo et en 1 clic
Non, pas du tout.
Waaah putain! T'es rapide!!!