Forums Casio - Vos tutoriels et astuces

Index du Forum | Vos tutoriels et astuces | [Tutoriel] Le Multi DrawStat
Ninestars
Hors ligne
Membre
Niveau: Confirmé
Points: 1817
Défis: 22
Message
Posté le 10/01/2016 19:23

[Tutoriel] Le Multi DrawStat :

Attention, ce tutoriel est complexe et se destine à ceux maîtrisant déjà le Super DrawStat.

Le Multi DrawStat n'est pas un remplacant du Super DrawStat, mais un nouvel outil de dessin ultra rapide en Basic.
Il n'est pas forcement plus rapide, mais offre une approche différente pour dessiner.
Il se base sur une nouvelle logique de dessin offrant d'autres possibilités.

Quelle est la différence avec le Super DrawStat ?
Au lieu d'avoir deux List qui enregistrent le sprite, on a maintenant deux expressions qui enregistrent la façon de dessiner le sprite.
La nuance peut paraitre floue, mais voyons cela tout de suite.


Initialisation :
On commence par initialiser le ViewWindow en rajoutant MIN, MAX, PAS.
ViewWindow 1,127,0,1,63,0,0,1,1
Cette fois, le paramètrage est fixe, c'est toujours le même.


Définition d'un sprite :
Pour définir un sprite, nous allons définir la "façon" dont la calculatrice va le dessiner.
Partons de cette exemple :

On le décompose naturellement comme celà :

On voudrait tracer un trait bleu, puis un trait orange, puis un point vert et un autre point jaune.
Commencons par le trait bleu d'origine (0;0). Il se prolonge de 4 vers la droite et 0 vers le haut.
Nous allons traduire cela par :
{0+4T}
{0+0T}

Le trait orange d'origine (3;2). Il se prolonge de 0 vers la droite et 2 vers le haut.
Nous allons traduire cela par :
{3+0T}
{2+2T}
Voilà, je pense que vous avez pigé le principe.

Pour les points c'est même chose mais avec une prolongation nulle
D'où pour le point vert
{0}
{3}

Et le point jaune
{5}
{3}



Utilisation :
Nous allons toujours utiliser la commande
Graph(X,Y)=(

Graph(X,Y) est une commande trouvable à l'adresse : SHIFT F4 F5 F3
En reprennant l'exemple du dessus nous allons écrire :
Graph(X,Y)=({0+4T, 3+0T, 0, 5}, {0+0T, 2+2T, 3, 3})

En simplifiant un peu
Graph(X,Y)=({4T,3,0,5}, {0,2+2T,3,3})

Entre les premières accolades {...} nous avons les coordonnées sur x de nos éléments à dessiner. Et entre les deuxièmes accolades, les coordonnées sur y.


Comment ça marche ? :
En fait Graph(X,Y) va lire la première valeur de chaque accolade pour T=0 puis pour T=1 (voilà la raison du paramètrage de ViewWindow) pour obtenir les coordonnées de deux points qui définissent le segment puis trace le trait entre les deux.
Ensuite Graph(X,Y) va lire la deuxième valeur de chaque accolade, et ainsi de suite.


Pour aller plus loin :
En réalité, on remarque que l'on utilise des structures entre accolade {...}, ce sont donc par nature des List.
Ainsi pour décaler notre sprite de (I;J) on peut faire des additions
64->I
32->J
Graph(X,Y)=( I+{4T,3,0,5}, J+{0,2+2T,3,3} )


Mais ? Tu viens de dire que ce sont des List, alors pourquoi on ferait pas
{4T,3,0,5}->List 1
{0,2+2T,3,3}->List 2
Graph(X,Y)=(List 1, List 2)

Le problème si on écrit {4T,3,0,5}->List 1 c'est que l'expression 4T va être calculée puis enregistrée dans List 1. Donc on perd l'expression dont a besoin Graph(X,Y) pour déterminer les deux points qui formeront le segment à tracer...
Par contre si nous avons que des points à tracer, et pas de traits (donc pas de T) , alors c'est possible.
{4,3,0,5}->List 1
{0,2,3,3}->List 2
Graph(X,Y)=(List 1, List 2)
Cette commande va simplement dessiner les points. On peut d'ailleurs optimiser en mettant MAX à 0 puisque T na pas besoin de changer.


Voyons un autre exemple : nous allons remplir l'écran en noir en 1,10s
ViewWindow 1,127,0,1,63,0,0,1,1
Seq(X,X,0,63,1)->List 1    // on fabrique la liste {0,1,2,...63}
                          // chaque ligne horizontale de l'écran
Graph(X,Y)=(127T,List 1)
Ici c'est un peu différent, on a pas d'accolades. Si on utilise des acolades, alors la fonction va aller lire terme par terme dans les acolades. Si il y n'y a pas d'acolade, elle va lire plusieurs fois la même expression.
Donc sur x, elle va lire plusieurs fois l'expression 127T et sur y chaque terme de l'acolade.
En gros Graph(X,Y) va commencer comme ça :
T=0 premier point (0,0) (127T = 0, et premier élément de List 1 = 0)
T=1 second point (127,0) (127T = 127, et premier élément de List 1 = 0)
trace un trait horizontal en 0
T=0 premier point (0,1) (127T = 0, et deuxième élément de List 1 = 1)
T=1 second point (127,1) (127T = 127, et deuxième élément de List 1 = 1)
trace un trait horizontal en 1
Et ainsi de suite sur tout l'écran.



Matt36230
Hors ligne
Membre
Niveau: Intermédiaire
Points: 1868
Défis: 0
Message
Dernier message de la page précédente :Posté le 13/01/2016 20:56 |
Mais avec tes découverts, on se rapproche de plus en plus de quelque chose d'accessible !
----------------------------------



Pages: Précédente | 1, 2

Eltoredo
Hors ligne
Modérateur
Niveau: Intermédiaire
Points: 4276
Défis: 35
Message
Citer : Posté le 14/01/2016 09:31 | #
"En faisant un peu n'importe quoi" Il faut un peu s'y connaître alors En plus, tu as nommé ta propre technique et ça rend plutôt bien !
----------------------------------
La procrastination est une vertu. (voir ma description pour comprendre mon raisonnement)
-florian66-
Hors ligne
Rédacteur
Niveau: Aucun
Points: 2256
Défis: 19
Message
Citer : Posté le 27/01/2016 18:28 | #
Il faudra ajouter ce tutoriel avec ceux présents dans la liste : Divers Tutoriels, trucs et astuces !
Ça serait très bien
----------------------------------
In Arch, I trust ! And you ?
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9941
Défis: 170
Message
Citer : Posté le 31/01/2016 11:51 | #
Fait (tutoriel n°63)
----------------------------------
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Ninestars
Hors ligne
Membre
Niveau: Confirmé
Points: 1817
Défis: 22
Message
Citer : Posté le 01/02/2016 18:47 | #
Super dark Storm !
Si je modifie le topic ici, le lien que tu viens de donner le sera aussi ?
----------------------------------
Dark storm
Hors ligne
Administrateur
Niveau: Aucun
Points: 9941
Défis: 170
Message
Citer : Posté le 01/02/2016 18:48 | #
Oui, c'est linké sur ce topic.
----------------------------------
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
Ninestars
Hors ligne
Membre
Niveau: Confirmé
Points: 1817
Défis: 22
Message
Citer : Posté le 01/02/2016 18:50 | #
Ok parfait.
----------------------------------
Lephenixnoir
En ligne
Administrateur
Niveau: Confirmé
Points: 10427
Défis: 130
Message
Citer : Posté le 17/02/2016 14:19 | #
J'ai passé le topic en post-it
----------------------------------
Watch me, as I build my empire with my own hands.
Programateur
Hors ligne
Membre
Niveau: Intermédiaire
Points: 222
Défis: 10
Message
Citer : Posté le 19/02/2016 22:54 | #
Je n'ai pas encore essayé, mais ça a l'air génial !
C'est beaucoup plus rapide que le super drawstat ?
----------------------------------
J'ai besoin de votre participation ici :
94%
Cliquer pour enrouler
Ninestars
Hors ligne
Membre
Niveau: Confirmé
Points: 1817
Défis: 22
Message
Citer : Posté le 19/02/2016 23:15 | #
Ce n'est pas plus rapide, c'est équivalent en vitesse

Ajouté le 23/03/2016 à 11:14 :
Quelques petites corrections ici aussi.
----------------------------------
Zezombye
En ligne
Membre
Niveau: Confirmé
Points: 803
Défis: 9
Message
Citer : Posté le 04/05/2016 06:21 | # | Fichier joint
V'la un générateur de multi drawstat pour ceux qui veulent (en PJ)
Entrez les coordonnées des points composant chaque ligne (le logiciel considère que chaque paire de points forme une ligne, donc si vous voulez mettre un point il faudra le mettre 2 fois) et ça vous génère le texte à taper.

Pratique quand on a pas envie de passer 4 h à débugger les sprites
----------------------------------
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Ninestars
Hors ligne
Membre
Niveau: Confirmé
Points: 1817
Défis: 22
Message
Citer : Posté le 04/05/2016 15:40 | #
Salut Zezombye, merci pour le partage
----------------------------------
Fekihs
Hors ligne
Membre
Niveau: Aucun
Points: 30
Défis: 0
Message
Citer : Posté le 24/04/2017 23:08 | #
j'ai besoin d'aide

Ajouté le 24/04/2017 à 23:09 :
sans faire des commentaires

Ajouté le 24/04/2017 à 23:09 :
commentairess*
Cakeisalie5
En ligne
Administrateur
Niveau: Confirmé
Points: 1502
Défis: 8
Message
Citer : Posté le 24/04/2017 23:13 | #
N'hésites pas à te présenter dans le topic dédié, dans ce cas.
----------------------------------
Informatichien au poil. Je fais danser des bytes quand ça me chante.
Besoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?

Pages: Précédente | 1, 2

Index du Forum | Vos tutoriels et astuces | [Tutoriel] Le Multi DrawStat

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2018 | Il y a 55 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Casio Education Casiopeia CasioFan, la communauté ClassPad CodeWalrus

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd