Forum

Catégorie : Programmes
Forum : Les programmes des internautes
Vues : 3735
Réponses : 12
Type : discussion
Etat : réponses autorisées

(Prog) MATRIX (Prog)

S.L le 06/07/2012 à 22:10
Salut cupsmiley.gif après avoir regardé le film "MATRIX" j'ai pensé à l'idée de faire un petit programme qui reprend le défilement de caractères (comme ici) ou de 0 et 1 (comme ici) sur l'écran... Je vous laisse apprécier ce joli programme godgrace.gif

Nom: MATRIX
Taille: 146 octets
Auteur: S.L

Version Caractères:

Pour quitter le programme, appuyez sur la touche annul.

-> : flèche sto
TI Stats.fr (fonctions en Français)
Code
PROGRAM:MATRIX
:EffEcr
:1->A
:4->B
:1->X
:1->Y
:While 1
:Output(A,X,"Z3U/:-78+=3*(6"5...     //ici vous devez rentrer 16 caractères   de votre                                         //calculatrice,
                                     //à vous de décider lesquels et dans quel ordre!
:Output(B,Y,"C30*+3'(=+}'!4-{...     //ici vous devez rentrer 16 caractères   de votre                                         //calculatrice,
                                     //à vous de décider lesquels mais attention, cette                                         //fois-ci veiller à changer
                                     //les caractères de place par rapport au premier si                                       //ceux-ci sont identiques.
:If B=8:1->B
:B+1->B
:If A=8:1->A
:A+1->A
:entAléat(1,2)->X
:entAléat(1,2)->Y
:codeTouche->K
:If K=45:Then:EffEcr:Stop:End
:End

Version chiffre:

Pour quitter le programme, appuyez sur la touche annul.

-> : flèche sto
TI Stats.fr (fonctions en Français)
Code
PROGRAM:MATRIX
:EffEcr
:1->A
:4->B
:1->X
:1->Y
:While 1
:Output(A,X,"0101011101010011    //vous pouvez choisir les emplacements des 16 chiffres
:Output(B,Y,"1010000101011100    //vous pouvez choisir les emplacements des 16 chiffres
:If B=8:1->B
:B+1->B
:If A=8:1->A
:A+1->A
:entAléat(1,2)->X
:entAléat(1,2)->Y
:codeTouche->K
:If K=45:Then:EffEcr:Stop:End
:End


Donnez-moi votre avis même si il reste à perfectionner happy.gif
tapenad le 06/07/2012 à 23:09
il y a les miens:
https://tout82.pages-perso.fre[...].php?sujet=2942
S.L le 06/07/2012 à 23:30
@tapenad: Je savais que je n'étais pas le seul minied.gif les tiens sont pas mal laugh.gif
tapenad le 07/07/2012 à 01:39
erci c'est sympa il faudrait que j'en fasse une v3 avec plus de caractères beer.gif
calcugeek le 13/08/2012 à 16:42
Salut tout le monde!! ça fait vraiment super longtemps que je n'ai pas posté sur le forum, et pour cause, j'étais entré en prépa et j'avais moins de temps (ou pas)
bref, quoi qu'il en soit je reviens aujourd'hui et OH SURPRISE je vois un programme matrix. Je me permet donc de remettre le mien que j'avais déjà posté mais qui s'est trouvé un peu noyé sous les autres sujets. Il s'agit de la "vraie" animation matrix comme dans le film avec des lignes qui descendent et des caractères aléatoires. enjoy cupsmiley.gif cupsmiley.gif

Code

"[chaine de N symboles]"->chaine1   //ne choisissez pas N trop grand!!!!  10 ou 12 suffisent pour faire un rendu sympa
effecr
0->I:0->[theta]
While 1
entaleat(1,16->A     //ces 4 lignes donnent la position
entaleat(1,16->B     //des symboles qui descendent
entaleat(1,16->C     //ici en positions A B C et D, auxquelles
entaleat(1,16->D     //on associera plus tard respectivement I J K et L pour les éffacer sans perturber l'écriture des nouvelles lignes.
for(X,1,8
ouput(X,A,sous-chaine(chaine1,entaleat(1,N),1     // ces lignes définissent
if X>2
ouput(X-2,B,sous-chaine(chaine1,entaleat(1,N),1   //les symboles qui
if X>4
ouput(X-4,C,sous-chaine(chaine1,entaleat(1,N),1   //vont apparaitre
if X>6
ouput(X-6,D,sous-chaine(chaine1,entaleat(1,N),1   // à chaque fois.
if [theta]:then
if X [inférieur ou égal à]6   //celles ci n'opèrent qu'a partir de
output(X+2,J," "
if X [inférieur ou égal à] 4  // la deuxième lecture de la boucle car
output(X+4,I," "
if X [inférieur ou égal à]6   //theta n'est alors pas à la bonne valeur
output(X+2,K," "
output(X,L," "                //ce qui rend la condition non remplie. Elles effacent progressivement les symboles à partir des coordonnées associées : A et I, B et J etc...
end:end
A->I:B->J:C->K:D->L   //c'est là qu'on associe les variables pour pouvoir effacer correctement après
for(X,3,8
if X [inférieur ou égal à] 4
ouput(X+4,B,sous-chaine(chaine1,entaleat(1,N),1  //ici on continue les lignes
if X [inférieur ou égal à] 6
ouput(X+2,C,sous-chaine(chaine1,entaleat(1,N),1  //commencées dans le
ouput(X,D,sous-chaine(chaine1,entaleat(1,N),1    //premier for
output(X-2,I," "     //et ici on commence à effacer la colonne A qui est finie
if X>4
output(X-4,J," "     //pareil avec B
if X>6
output(X-6,K," "     //et avec C
end
1->[theta]    // on donne à theta la valeur nécéssaire à la validation de la condition dans le premier for
End       //euh bah là on revient au début ^^ ^^



les explications sont avec et je les laisse des fois qu'on me redemande beer.gif
The K le 13/08/2012 à 16:49
Remplace donc Lbl 1 / Goto 1 par : While 1 / End ! winkle.gif
calcugeek le 13/08/2012 à 17:05
Mais ou as tu vu un lbl1? godgrace.gif programme édité beer.gif merci du conseil mais c'est un vieux programme alors c'est possible qu'il soit un peu optimisable minied.gif
The K le 13/08/2012 à 21:24
Alors ...

Code

"[chaine de N symboles]->Str1
length(Str1->N                     //ajout de ceci
DelVar [Theta]ClrHome               //suppression du DelVar I
While 1
randInt(1,16->A
randInt(1,16->B
randInt(1,16->C
randInt(1,16->D
For(X,1,8
Output(X,A,sub(Str1,randInt(1,N),1
If X<6
Output(X,B,sub(Str1,randInt(1,N),1     //modif des conditions
If X<5
Output(X,C,sub(Str1,randInt(1,N),1
If X<3
Output(X,D,sub(Str1,randInt(1,N),1
If [theta]
Then
If X>2
Output(X,J,"                          //modif des conditions
If X>4
Output(X,I,"
If X>2
Output(X,K,"
Output(X,L,"             
End
End
A->I
B->J
C->K
D->L
For(X,3,8                                     //modif des conditions
If X>6
Output(X,B,sub(Str1,randInt(1,N),1
If X>4
Output(X,C,sub(Str1,randInt(1,N),1
Output(X,D,sub(Str1,randInt(1,N),1
Output(X-2,I,"
If X>4
Output(X-4,J,"                       //pas de modif ici sinon ralentissement ^^
If X>6
Output(X-6,K,"
End
1->[theta]
End   


Bon c'pas énorme hein ... il y aurais p-e moyen d'assembler les deux boucles for. J'y ai pas bcp réfléchi ^^'
aide le 28/11/2012 à 21:06
j'ai bien regardé et essayé de comprendre les lignes de code de ce programme et j'ai voulu le faire sur ma TI-82 stats.fr pour voir comment cela rendait mais j'ai eu un problème avec la fonction chaîne ! je 'explique :
j'ai écris dans la première ligne : "10"->chaîne(1
et ma calculette n'aime et je ne trouve pas pourquoi ! aidez moi svp! merci d'avance happy.gif
blg_flg le 28/11/2012 à 22:02
Chaîne se trouve dans le menu [vars]. winkle.gif
aide le 29/11/2012 à 14:09
merci beaucoup
aide le 29/11/2012 à 14:40
j'ai de nouveau un probème (excusez-moi), la calutte me met DOM INVALIDE et m'indique qu'il y a un problème à la fin des lignes Output(X,A,sous-chaîne(... Apparement il faut rajouter quelque chose à la fin mais je ne trouve pas quoi ! merci d'avance happy.gif
linkakro le 29/11/2012 à 23:20
Vérifie tout ce qui concerne N : il y a un problème de longueur de chaine.