Poster un nouveau sujet Poster une réponse
pousse-pousse (=jeu du taquin)
Auteur Message
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 21 Jan 2010, 20:47   Citer 

Voici POUSPOUS. C'est le jeu du taquin (ou pousse-pousse) 682 octets

Vous devez ordonner les cases à savoir :
-depuis en haut à gauche jusqu'en bas à droite où doit se trouver la case vide à la fin (ligne par ligne)
-De 1 à 9 puis A à Z (pas plus car c'est ingérable pour un humain normalement cortiqué ou bien ça pose quelques problèmes d'affichage).

On peut choisir ses dimensions mais sachez que le classic est 4*4. Et puis le maximum est 36 cases sans dépasser les bords.

Une petite ambiguité pour les déplacements :
A vous de voir dans le code si vous concevez le déplacement du vide ou le choix de la case autour. Avec les flèches.


Code

0->Z
1->¤
EffEcr
Lbl0
input "LIGNES ",T
input "COLONNES ",S
If T>8 ou S>16 ou T*S>36 ou S=1 ou T=1
Then
Disp "INVALIDE"
goto0
End
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"->Chaîne1
EffListe L1
T*S-1->dim(L1)
EffVar [A]
{T,S}->dim([A])
T*S-1->A
T->Y
S->X
EffEcr
For(W,1,T
For(V,1,S
LblA
entAléat(1,A)->B
If somme(L1)=A
gotoB
If L1(B)=1
gotoA
1->L1(B)
B->[A](W,V)
End
End
LblB
For(W,1,T
For(V,1,S
Lbl2
[A](W,V)->B
If B<10
output(W,V,B
If B=0
output(W,V," "
If B>9
output(W,V,sous-Chaîne(Chaîne1,B-9,1
If ¤=2
goto9
If W*V=A+1
gotoC
End
End
LblC
Y->O
X->N
0->K
Repeat K[différent]0
codeTouche->K
If K=24 ou K=25 ou K=26 ou K=34
Then
If K=24 et X[différent]1            // X[dif]S
X-1->X                              // X+1->X
If K=25 et Y[différent]1            // Y[dif]T
Y-1->Y                              // Y+1->Y
If K=26 et X[différent]S            // X[dif]1
X+1->X                              // X-1->X
If K=34 et Y[différent]T            // Y[dif]1
Y+1->Y                              // Y-1->Y
Else
0->K
End
End
Z+1->Z
[A](Y,X)->[A](O,N)
0->[A](Y,X)
2->¤
O->W
N->V
goto2
Lbl9
output(Y,X," "
1->Q
If [A](T,S)=0
Then
0->Q
0->R
EffListe L1
For(W,1,T
For(V,1,S
R+1->R[A](W,V)->L1(R)
End
End
For(R,2,A-1
If L1(R)<L1(R-1)
1->Q
End
End
If Q=1
gotoC
EffEcr
Disp "TERMINE","COUPS="
output(2,8,Z





----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 02 Juil 2010, 0:03   Citer 

Depuis j'ai amélioré ce programme.
Il a été uploadé par alexvire et le lien est sur son site.

EDIT : pouspous_5.83p

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink