Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Optimisation graphique d'un menu
EGUL le 02/07/2012 à 15:37
Bonjour à tous!
Dans le cadre d'un projet personnel, je souhaite intégrer un menu graphique assez performant.
C'est pourquoi je demanderais à ceux qui optimisent les programmes de me trouver des optimisations éventuelles sur ce code :
Code
EffDessin
0=>Xmin
94=>Xmax
0=>Ymin
62=>Ymax
AxesNAff
Fonct
FonctOff
5=>B
5=>E
57=>C
80=>D
Texte(10,17,"1
Texte(17,17,"2
Texte(24,17,"3
Texte(31,17,"4
Texte(38,17,"5
Texte(45,17,"6
For(A,B,D,2
Pt-On(A,E+1
Pt-On(A,C-1
End
For(A,E,C,2
Pt-On(B+1,A
Pt-On(D-1,A
End
For(A,0,2,2
Ligne(B+A,E+A,B+A,C-A
Ligne(B+A,E+A,D-A,E+A
Ligne(B+A,C-A,D-A,C-A
Ligne(D-A,E+A,D-A,C-A
End
1=>B
While A=/=105
0=>A
codeTouche=>A
Ligne(9,57-7B,14,57-7B
Ligne(9,56-7B,15,56-7B
Ligne(9,55-7B,14,55-7B
Ligne(13,58-7B,13,54-7B
If A=25 et B=/=1 ou A=34 et B=/=6
Then
For(C,9,14
For(D,55-7B,57-7B
Pt-Off(C,D
End
End
Pt-Off(13,54-7B
Pt-Off(13,58-7B
Pt-Off(15,56-7B
End
If A=34 et B=/=6:B+1=>B
If A=25 et B=/=1:B-1=>B
End
If B=1:prgm1
If B=2:prgm2
If B=3:prgm3
If B=4:prgm4
If B=5:prgm5
If B=6:prgm6
Merci d'avance!
blg_flg le 02/07/2012 à 16:22
C'est un menu ça?! A quoi ça sert? A faire joli?EGUL le 02/07/2012 à 16:36
Oui ça sert à faire joli.
Le menu de la TI est trop sobre pour moi.blg_flg le 02/07/2012 à 16:41
C'est vrai qu'il n'est pas très beau, mais de là à en faire un de... euh... d'ailleurs il fait combien d'octets?EGUL le 02/07/2012 à 17:02
Il fait 568 dans mémoire
Je suppose que ce sont des octets si ce n'est pas des bitsblg_flg le 02/07/2012 à 17:04
Non, ce sont bien des octets et non des bits.
Rappels:
Un octet=8bits
Un byte est un ensemble de bits, souvent (mais pas toujours) un octet.The K le 02/07/2012 à 17:11
L'ensemble m'a l'air assez propre.
Tu pourrais éventuellement changer
Code
If A=34 et B=/=6:B+1=>B
If A=25 et B=/=1:B-1=>B
En :
Code
B+(A=34)(B=/=6)-(A=25)(B=/=1->B
Après bon ... entre A,B,C,D,E on s'y perd un peu das le programme quand a la visualisation de la chose
Est-ce que tu aurais un petit gif ou un download stp ^^ ?
EGUL le 02/07/2012 à 17:18
Avant le While, B,C,D,E sont les constantes pour la taille du menu.
Le A est une variable qui varie alors dans les For
Après le Whiles B est la valeur de la zone du programme (a gauche du texte) ce qui sert à savoir quel programme est sélectionné
Le A est la variable du codeTouche.
Non je n'ait pas de lien pour le programme ni d'images
Le Grec a écrit :
Non, ce sont bien des octets et non des bits.
Rappels:
Un octet=8bits
Un byte est un ensemble de bits, souvent (mais pas toujours) un octet.
Un byte = un octet
The K le 02/07/2012 à 17:20
Oui oui ça j'avais compris
Je parle de visualiser la chose en fait. Histoire de voir le résultat final. Tu n'as pas de cable ?
EGUL le 02/07/2012 à 17:22
Non je l'ai paumé il y a 3 ans de là . . .The K le 02/07/2012 à 17:24
Bon ben ... si j'ai du temps ce soir j'essaierai de te faire ça. (je garantis pas ! j'ai tendance à être tête en l'air des fois ...)EGUL le 02/07/2012 à 17:30
Au passage, y aurait-il un émulateur sur lequel on pourrait faire du copier-coller?
Histoire que je vérifie mon programme de labyrinthe.blg_flg le 02/07/2012 à 17:34
Je crois qu'il faut mettre tout ça dans TI Graph Link, mais je crois qu'il faudra légèrement modifier la syntaxe (pour les caractères spéciaux, etc.).
Tu ne l'a pas testé sur ta TI?
OH! Sango est connecté!

EGUL le 02/07/2012 à 17:38
Non j'ai pas pu tester sur ma TI, je ne l'ait pas sur moi.
Donc je retaperais dessus plus tard.blg_flg le 02/07/2012 à 17:47
Bravo, si ça fait joli et que tu l'as fait "à l'aveugle"!
A moins que tu utilise un ému?

EGUL le 02/07/2012 à 17:52
Non j'ai tout écrit sur Notepad++.The K le 02/07/2012 à 22:19
Woah hé je viens de recopier c'est plutôt sympa faut le dire !
Je t'optimises ça comme je peux et je mets un lien download / code demain.

The K le 02/07/2012 à 23:49
La chips fait donc 346 octets
Je post ça demain avec le lien de download

EGUL le 03/07/2012 à 08:30
Merci
Si il y en a qui veulent nous faire des beaux niveaux et bah au taf!
blg_flg le 03/07/2012 à 11:12
EGUL a écrit :
Le Grec a écrit :
Non, ce sont bien des octets et non des bits.
Rappels:
Un octet=8bits
Un byte est un ensemble de bits, souvent (mais pas toujours) un octet.
Un byte = un octet
C'est faux.
Un byte est la plus petite unité utilisable par ton ordinateur, ta calto, etc. Mais il n'est pas toujours formé de 8 bits (=1 octet). Il existe des processeurs qui utilisent des bytes de 6, 7, 9, 5, 4, etc. bits. C'est la généralisation de l'utilisation de bytes de 8 bits qui fait croire qu'un octet et un byte c'est pareil. Par exemple, pour une clé usb, 8GB=8GO, mais ça pourrait être faux, selon le nombre de bits dans le byte.

EGUL le 03/07/2012 à 11:51
Le Grec a écrit :
EGUL a écrit :
Le Grec a écrit :
Non, ce sont bien des octets et non des bits.
Rappels:
Un octet=8bits
Un byte est un ensemble de bits, souvent (mais pas toujours) un octet.
Un byte = un octet
C'est faux.
Un byte est la plus petite unité utilisable par ton ordinateur, ta calto, etc. Mais il n'est pas toujours formé de 8 bits (=1 octet). Il existe des processeurs qui utilisent des bytes de 6, 7, 9, 5, 4, etc. bits. C'est la généralisation de l'utilisation de bytes de 8 bits qui fait croire qu'un octet et un byte c'est pareil. Par exemple, pour une clé usb, 8GB=8GO, mais ça pourrait être faux, selon le nombre de bits dans le byte. 
Aujourd’hui, les bytes de 8 bits se sont généralisés en informatique.
Donc nan car en l’occurrence on est sur une calto et pas en téléco
(en télécommunications ils peuvent contenir 8 ou 9 bits)
The K le 03/07/2012 à 11:57
Alors voila ce que je propose :
Code
ClrDraw
0ü (
) Xmin
94ü (
) Xmax
0ü (
) Ymin
62ü (
) Ymax
AxesOff
Func
FnOff
For(A,6,80,2
Pt-On(A,56,2
Pt-On(A,6,2
End
For(A,56,6,-2
Pt-On(6,A,2
Pt-On(80,A,2
End
For(X,10,45,7
Texte(X,17,sous-chaîne("123456",(X-3)/7,1
End
1ü (
) B
While A=!105 //=! = différent de
EffVarVar AgetKeyü (
) A
Ligne(9,57-7B,14,57-7B
Ligne(9,56-7B,15,56-7B
Ligne(9,55-7B,14,55-7B
Ligne(13,58-7B,13,54-7B
If (A=25)(B=!1) ou (A=34)(B=!6
Then
For(C,9,14
For(D,55-7B,57-7B
Pt-Off(C,D
End
End
Pt-Off(13,54-7B
Pt-Off(13,58-7B
Pt-Off(15,56-7B
End
B+(A=34)(B=!6)-(A=25)(B=!1ü (
) B
End
Download pour TI-82stats / .fr / 83 / 76 :
ici
Download pour TI-83+ / .fr / 84 / + / +SE / pocket.fr / pocket SE :
la
Et un petit screen pour finir
Image manquante
blg_flg le 03/07/2012 à 12:01
Les TI (toutes je crois) ont bien des bytes de 8bits.
Mais, il n'y a pas qu'en téléco qu'on utilise pas des bytes de 8 bits. Avant, de nombreux ordis avaient des bytes autres que des octets. En théorie, des bytes peuvent être très différents. Mais tu as raison. Maintenant on utilise, à ma connaissance, que des bytes de 8 en informatique.
C'est bien ce que je disais: -les bytes ne sont pas toujours des octets (je parlais des bytes en général et pas que sur les caltos);
-il y a une généralisation de l'utilisation de bytes de 8 bits (du moins en informatique).
ps: je vois que wikipédia es ton ami
EDIT: joli screen

The K le 03/07/2012 à 12:11
Haha ^^
En fait Egul l'animation est désormais un peu moins jolie mais la commande Pt-On(x,y,2 prend beaucoup moins de place

EGUL le 03/07/2012 à 12:22
Pourquoi utilises-tu un 2 à la fin des Pt-On??The K le 03/07/2012 à 12:31
Pour que ça fasse des petits carrés au lieu des points

blg_flg le 03/07/2012 à 12:46
Tu peux aussi faire des croix: Pt-On(X,Y,3.F-BVXT le 03/07/2012 à 18:57
Pour plus de détail sur les fonctions graphiques regarde
ici. Sinon le screen à l'air sympa, faudra que j'essaie

The K le 03/07/2012 à 19:42
Et euh mis à part ça EGUL t'en penses quoi de mon optimisation ?
(et les autres d'ailleurs ...)

F-BVXT le 03/07/2012 à 20:00
Ton optimisation m'a l'air bien, je vois juste qu'on peux gagner deux octets ici :
Code
0->Xmin
94->Xmax
0->Ymin
62->Ymax
En faisant ça :
Code
0->Xmin:1->PasX
0->Ymin:1->PasY
Voilà, et comme dirait Persalteas : "
on en apprend tous les jours".
EGUL le 03/07/2012 à 20:09
L'optimisation est par moment économe en place malgré sur quelques endroits où ça vient ralentir le programme!F-BVXT le 03/07/2012 à 20:10
Où est-ce que ça vient ralentir le programme ?EGUL le 03/07/2012 à 20:33
Sur les Pt-On car l'instruction est plus longue!F-BVXT le 03/07/2012 à 21:37
Tu es sur ? Je n'ai pas essayé mais vu qu'il y a moins de Pt( en raison du fait que ce soit des petits carré qui se dessinent et non des points simples, c'est d'après moi plus rapide. Mais de toute façon, pour connaitre la formule la plus rapide (et non la plus courte) il n'y a pas de secret, il faut essayer.blg_flg le 03/07/2012 à 21:52
Il n'est pas nécessaire de tout tester.
En l’occurrence, je crois que le For ralentit, car il affichera les points les uns après les autres.
ps: je dis ça sans avoir testé, alors je peux toujours faire une erreur, mais je suis presque certain de mon affirmation.
F-BVXT le 03/07/2012 à 21:54
Ah, le For( sans tester je peux te confirmer qu'il ralentit mais le fait que les instructions Pt( soit plus longues de 2 octets, je ne suis pas sur...blg_flg le 03/07/2012 à 21:59
Je viens de tester avec un For et je trouve ça bcp plus joli que sans. Je trouve que la différence artistique vaut bien 2 ou 3 octets supplémentaires éventuels.

F-BVXT le 03/07/2012 à 22:16
Oui, j'étais en train de me dire justement que c'est plus beau de dessiner au fur et à mesure, ça rajoute comme tu dis une "touche artistique". Mais les deux octets supplémentaires n'ont rien à voir, c'est le For( qui fait cet effet.blg_flg le 03/07/2012 à 22:22
Les grands esprits se rencontrent.
Pardonne moi pour les octets: je ne vois pas de quoi tu parles.
F-BVXT le 03/07/2012 à 22:28
Les octets dont je parle répondent à ça :
Citation
Je trouve que la différence artistique vaut bien 2 ou 3 octets supplémentaires éventuels.
The K le 03/07/2012 à 23:55
Il est vrai qu'un For( ne sera jamais rapide sur Ti ...
Cependant c'est la rapidité ou la place
Bon après il est vrai que j'ai testé sur Ti-84 qui est plus rapide qu'une Ti-82 ... Mais pour un menu qui disparaîtra rapidement au profit du programme en lui-même ^^
Après tu fais ça comme tu veux ... T'as demande une optimisation tu l'as !

ld le 04/07/2012 à 00:34
Tu peux remplacer:
Code
Texte(10,17,"1
Texte(17,17,"2
Texte(24,17,"3
Texte(31,17,"4
Texte(38,17,"5
Texte(45,17,"6
simplement par:
Code
For(A,1,6
Texte(3+7A,17,A
End
De plus "EffDessin" n'est pas utile ici si il est suivi de l'instruction "AxesNAff" car elle efface le dessin en même temps que les axes.
De même pour "0->A" qui n'est pas nécessaire devant "codeTouche=>A"
Aussi:
Code
:If A=34 et B=/=6:B+1=>B
:If A=25 et B=/=1:B-1=>B
Peux être remplacer par une commande plus rapide dite Booléenne soit:
Code
:B+(A=34 et B=/=6->B
:B-(A=25 et B=/=1->B
Tu peux aussi pour simplifier ton prgm utiliser des instructions comme "Ombres(" ou encore "Horizontale" et "Verticale".
Ps: J'aime ta phrase en signature sur tes msg^^
F-BVXT le 04/07/2012 à 00:43
Il me semble que :
Code
Texte(10,17,"1
Texte(17,17,"2
Texte(24,17,"3
Texte(31,17,"4
Texte(38,17,"5
Texte(45,17,"6
prend plus de place mais est plus rapide, alors que :
Code
For(A,1,6
Texte(3+7A,17,A
End
prend moins de mémoire mais est plus lent.
Après tout dépend de ce qu'on veut, rapidité ou légèreté.
Sinon, merci pour l'astuce AxesNaff, je ne connaissais pas.
EGUL le 04/07/2012 à 09:28
Bah merci, j'ai mes réponses,on peut lock le topic et stop flood :mici: Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.