π
<-

[AIDE]Programme(s) en Axe Parser

Assembleur, Axe, C/C++, ICE...

Re: [AIDE]Programme(s) en Axe Parser

Postby Kiligolo » 26 Sep 2010, 12:31

kindermoumoute wrote:Et ici un exemple de niveau de couleur :
 
Show/Hide spoilerAfficher/Masquer le spoiler
Image


Ici il y a 4 niveaux de couleurs bien visible.

Et est-ce que l'on peut étendre la map hors de l'écran?
J'ai essayé de faire un truc comme si le bonhomme arrive au bout de l'écran, la map bouge mais ça marche pas trop :D:
(avec vertical+r)
User avatar
Kiligolo
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 84.3%
 
Posts: 1465
Joined: 17 May 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1reS

Re: [AIDE]Programme(s) en Axe Parser

Postby kindermoumoute » 26 Sep 2010, 13:09

Kiligolo wrote:Et est-ce que l'on peut étendre la map hors de l'écran?
J'ai essayé de faire un truc comme si le bonhomme arrive au bout de l'écran, la map bouge mais ça marche pas trop :D:
(avec vertical+r)


Je n'ai jamais trop essayé, mais se serait plutôt si on avance alors la map avance, si on recule alors la map recule (enfin voilà on se comprend :p).
Tutoriel sur l'axe parser, un langage de programmation pour z80 ultra rapide et beaucoup plus facile que l'ASM !
User avatar
kindermoumouteProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 2.6%
 
Posts: 849
Joined: 30 Sep 2009, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ecole d'ingénieur informatique et industriel

Re: [AIDE]Programme(s) en Axe Parser

Postby Kiligolo » 26 Sep 2010, 15:23

kindermoumoute wrote:
Kiligolo wrote:Et est-ce que l'on peut étendre la map hors de l'écran?
J'ai essayé de faire un truc comme si le bonhomme arrive au bout de l'écran, la map bouge mais ça marche pas trop :D:
(avec vertical+r)


Je n'ai jamais trop essayé, mais se serait plutôt si on avance alors la map avance, si on recule alors la map recule (enfin voilà on se comprend :p).

Voilà j'ai testé ceci et on arrive... à quelque chose qui comporte des bugs...
J'ai le code et un screen!
Image

Code: Select all
:.TILEMAP
:[0020129454555555]→Pic1
:[102810385410286C]→Pic2
:[00050250200A0400]→Pic3
:DiagnosticOff
:0→X→Y
:For(A,0,105)
:    For(B,35,99)
:        Pt-On(A,B,Pic1)
:        B+7→B
:    End
:    A+7→A
:End
:For(A,30,65)
:    For(B,10,25)
:        Pt-On(A,B,Pic3)
:        B+7→B
:    End
:    A+7→A
:End
:StorePic
:Repeat getKey(15)
:    ClrDraw
:    Pt-On(X,Y,Pic2)
:    DispGraphr
:    If getKey
:        ReturnIf getKey(15)
:        sub(G
:End
:End
:
:Lbl G
:If getKey(1) and (Y≠64
:If Y50
:    For(A,0,2)
:    Vertical -r
:End
:Else
:Y+2→Y
:End:End
:If getKey(2) and (X≠0
:If X5
:    For(A,0,2)
:    Horizontal +r
:End
:Else
:X-2→X
:End:End
:If getKey(3) and (X≠95
:If X≥85
:    Horizontal -r
:Horizontal -r
:Else
:X+2→X
:End:End
:If getKey(4) and (Y≠0
:If Y5
:    Vertical +r
:Vertical +r
:Else
:Y-2→Y
:End:End
:Return


Tous les bugs que j'ai rencontrés sont dans le screen. Je voudrais étendre la map mais on va garder ça pour plus tard vu que l'on est coincés ici... :#langue#:
User avatar
Kiligolo
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 84.3%
 
Posts: 1465
Joined: 17 May 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1reS

Re: [AIDE]Programme(s) en Axe Parser

Postby kindermoumoute » 26 Sep 2010, 15:51

Réessaye ton code mais en mettant le bonhomme au centre de l'écran, et seulement la map bouge.
Je n'ai jamais vraiment réussi à faire une map, je suis en train de lire le tuto sur omnimaga et je te redit (je te conseille de le lire). Seul problème ; il est en anglais.
Tutoriel sur l'axe parser, un langage de programmation pour z80 ultra rapide et beaucoup plus facile que l'ASM !
User avatar
kindermoumouteProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 2.6%
 
Posts: 849
Joined: 30 Sep 2009, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ecole d'ingénieur informatique et industriel

Re: [AIDE]Programme(s) en Axe Parser

Postby Kiligolo » 26 Sep 2010, 15:55

kindermoumoute wrote:Réessaye ton code mais en mettant le bonhomme au centre de l'écran, et seulement la map bouge.
Je n'ai jamais vraiment réussi à faire une map, je suis en train de lire le tuto sur omnimaga et je te redit (je te conseille de le lire). Seul problème ; il est en anglais.

Tu vaux dire que le bonhomme est inclus dans la map. Mais je le laisse dans le tampon normal?

EDIT Voilà le code et le screen:
Image
Code: Select all
:.TILEMAP
:[0020129454555555]→Pic1
:[102810385410286C]→Pic2
:[00050250200A0400]→Pic3
:DiagnosticOff
:45→X:32→Y
:For(A,0,105)
:    For(B,35,99)
:        Pt-On(A,B,Pic1)
:        B+7→B
:    End
:    A+7→A
:End
:For(A,30,65)
:    For(B,10,25)
:        Pt-On(A,B,Pic3)
:        B+7→B
:    End
:    A+7→A
:End
:StorePic
:Repeat getKey(15)
:    ClrDraw
:    Pt-On(X,Y,Pic2)
:    DispGraphr
:    If getKey
:        ReturnIf getKey(15)
:        sub(G
:End
:End
:
:Lbl G
:If getKey(1) and (Y≠64
:    Vertical -r
:Vertical -r
:End
:If getKey(2) and (X≠0
:    Horizontal +r
:Horizontal +r
:End
:If getKey(3) and (X≠95
:    Horizontal -r
:Horizontal -r
:End
:If getKey(4) and (Y≠0
:    Vertical +r
:Vertical +r
:End
:Return
User avatar
Kiligolo
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 84.3%
 
Posts: 1465
Joined: 17 May 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1reS

Re: [AIDE]Programme(s) en Axe Parser

Postby kindermoumoute » 26 Sep 2010, 17:06

Sprite éditor : ici

Bon commençons.

Le code non commenté :

 
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
:.ATILMAP
:[11111111111111111111→GDB1
:[10000000000000000001
:[10000000000000000001
:[10000000000000000001
:[10000000000000000001
:[10000000000000000001
:[11111111111111111111
:[11111111111111111111
:[11111111111111111111
:[11111111111111111111
:[11111111111111111111
:[11111111111111111111
:[0000000000000000→Pic1
:[0020129454555555
:[102810385410286C→Pic2
:0→S→D
:ClrDraw
:ClrDrawr
:Shade(48)
:FnOff
:
:Repeat getKey(15)
:If D80 and getKey(1)
:20+D→D
:End
:If D≠0 and getKey(4)
:D-20→D
:End
:S8 and getKey(3)-(S≠0 and getKey(2))+S→S
:Pause 7
:sub(DS)
:Pt-On(36,30,Pic2)
:DispGraphr
:End
:Return
:
:.Drawing sub
:Lbl DS
:ClrDraw
:ClrDrawr
:For(Y,0,7)
:For(X,0,11)
:sub(GN,Y*20+X+D+S)→W
:!If W
:Pt-Off(X*8,Y*8,sub(GN,Y*20+X+D+S)*8+Pic1)
:End
:Pt-Off(X*8,Y*8,sub(GN,Y*20+X+D+S)*8+Pic1)r
:End
:End
:
:.Extraction
:Lbl GN
:{r1/2+GDB1}→A
:If r1^2
:A^16:Else
:A/16:End


Le code commenté (je n'ai pas encore tout compris, je l'ai récupéré sur omnimaga):

 
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Select all
:.ATILMAP
:[11111111111111111111→GDB1 //ici la data pour savoir l'emplacement des tile, 1 = herbe, 0 = rien
:[10000000000000000001
:[10000000000000000001
:[10000000000000000001
:[10000000000000000001
:[10000000000000000001
:[11111111111111111111
:[11111111111111111111
:[11111111111111111111
:[11111111111111111111
:[11111111111111111111
:[11111111111111111111
:[0000000000000000→Pic1 //ici comme j'ai récupéré le code quelque part, il y a la Pic "rien"
:[0020129454555555         //ici la Pic de l'herbe (théoriquement Pic1+8)
:[102810385410286C→Pic2 //Notre petit bonhomme
:0→S→D           //Les variables de déplacement
:ClrDraw
:ClrDrawr   //on efface les écrans
:Shade(48)                       // une bonne luminosité pourquoi pas
:FnOff                 //ça je sais plus(?)
:
:Repeat getKey(15)
:If D80 and getKey(1)    //+20, sachant que en haut à gauche c'est (0,0) on descend.
:20+D→D
:End
:If D≠0 and getKey(4)        //-20, on monte.
:D-20→D
:End
:S8 and getKey(3)-(S≠0 and getKey(2))+S→S       


*/ici on a l'axe parser en pleine action, pour que tu comprenne mieux je met des parenthèse comme en C (sauf qu'en Axe on peut enlever les premières parenthèses) :
(
(
S8 (renvoi 1 si c'est vrai, 0 si c'est faux) and getKey(3) (renvoie 1 si la touche flèche de droite est enfoncé, 0 si ce  n'est pas le cas)
) (renvoie 1 si les 2 conditions sont vrai (grace au "and"), 0 si ce n'est pas le cas)
- (on soustraie le premier argument au deuxième)
(
S≠0 (renvoi 1 si S≠0, 0 si ce  n'est pas le cas) and getkey(2) (renvoie 1 si la touche flèche de gauche est enfoncé, 0 si ce n'est pas le cas)
) (renvoie 1 si les 2 conditions sont vrai, 0 si ce n'est pas le cas)
+ S (on rajoute la somme de S)
→S (au final on incrémente S ou on le décrémente en fonction des arguments (je pense que tu devrais comprendre avec ça))
/*


:Pause 7                                      //Pourquoi il y a une pause ici? aucune idée
:sub(DS)                            //On vas dessiner notre terrain
:Pt-On(40,32,Pic2)           //Notre bonhomme apparaîtra tous le temps en X=36 et Y=30
:DispGraphr        //Magie
:End
:Return
:
:.Drawing sub
:Lbl DS
:ClrDraw
:ClrDrawsupr/sup      //on efface tout
:For(Y,0,7)
:For(X,0,11)
:sub(GN,Y*20+X+D+S)→W            //Ici on appelle la fonction GN en envoyant un argument qui est Y*20+X+S+S, et la réponse (Ans) de cette fonction est retourné dans W
:!If W //Si ce W n’existe pas
:Pt-Off(X*8,Y*8,sub(GN,Y*20+X+D+S)*8+Pic1)  //X*8 et Y*8 tu doit comprendre ^^, Pic1+sub(GN,Y*20+X+D+S)*8 la réponse (Ans) de la fonction *8 donnera l'image (en gros si Ans=0, ce sera Pic1 d'affiché, si Ans=1 ce sera Pic1+8 d'affiché)
:End
:Pt-Off(X*8,Y*8,sub(GN,Y*20+X+D+S)*8+Pic1)r //la même opération sera dans tous les cas envoyé dans le back buffer.
:End
:End
:
:.Extraction
:Lbl GN
:{r1/2+GDB1}→A //Ici on divise l'argument envoyé dans la fonction par 2 et on l'additionne au GDB1 (de même que Pic1+8 fera apparaître la Pic en dessous de Pic1 (voir en haut de ce code)), et on retourne le résultat sur A
:If r1^2 //si l'argument envoyé dans la fonction modulo 2 (donc si il y a un reste à la division r1 / 2)
:A^16 //ici on envoi ce calcule (reste de la division de A/16) dans la variable Ans
:Else
:A/16 //la aussi (A/16)
:End
:La fin d'un programme sera compté comme un return, et vas donc retourner la dernière fonction appelé


Le screen :

Image


A la base ce programme permet de faire une map avec 2 tile qui serait réparti grâce à des data (1 = la première tile et 0 = la deuxième), la première est censé être en gris (dans la back-buffer), et la deuxième en noir (dans le buffer et le back buffer). Seulement notre bonhomme étant dans le buffer, j'ai mit la deuxième tile en blanc pour ne pas être gênés, mais pour mettre une deuxième tile il suffirait de mettre ":Pt-Off(40,32,Pic2):Pt-Off(40,32,Pic2)r" à la place de "Pt-On(40,32,Pic2)" et le tour est joué, mais la encore je trouve le programme ralenti.


PS : spoil tes codes pour une meilleur lecture.
Tutoriel sur l'axe parser, un langage de programmation pour z80 ultra rapide et beaucoup plus facile que l'ASM !
User avatar
kindermoumouteProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 2.6%
 
Posts: 849
Joined: 30 Sep 2009, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ecole d'ingénieur informatique et industriel

Re: [AIDE]Programme(s) en Axe Parser

Postby kindermoumoute » 27 Sep 2010, 19:46

Juste ou cas ou ; n'hésite pas à dire si tu n'a rien pigé ou si tu a fait un arrêt cardiaque en regardant la tête du code (ça arrive souvent lorsque l'on apprend un langage =) (cependant si tu connais un peu le C et que tu fait un peu d’électronique en cours, tu devrais très rapidement comprendre le code =)
Tutoriel sur l'axe parser, un langage de programmation pour z80 ultra rapide et beaucoup plus facile que l'ASM !
User avatar
kindermoumouteProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 2.6%
 
Posts: 849
Joined: 30 Sep 2009, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ecole d'ingénieur informatique et industriel

Re: [AIDE]Programme(s) en Axe Parser

Postby Kiligolo » 27 Sep 2010, 20:09

kindermoumoute wrote:Juste ou cas ou ; n'hésite pas à dire si tu n'a rien pigé ou si tu a fait un arrêt cardiaque en regardant la tête du code (ça arrive souvent lorsque l'on apprend un langage =) (cependant si tu connais un peu le C et que tu fait un peu d’électronique en cours, tu devrais très rapidement comprendre le code =)

Ok. Comme tu t'attendais bien: j'ai compris... 20% pour être généreux! :D:
  1. À quoi ça sert de mettre plusieurs fois [1000...0001] ?
  2. Comment ça se fait qu'après le code héxadécimal de l'herbe, il y a pas marqué -PicX ?
  3. C'est quelle partie du code qui fait que la map ne bug pas?
Tu me dis si je t'embête. Mais c'est juste si tu me balance le code comme ça je ne crois pas pouvoir en apprendre plus sur l'axe parser. :#fou2#:
Merci d'avance pour tes réponses! :#zen#:
User avatar
Kiligolo
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 84.3%
 
Posts: 1465
Joined: 17 May 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1reS

Re: [AIDE]Programme(s) en Axe Parser

Postby kindermoumoute » 27 Sep 2010, 20:39

Bas j'ai tout essayé d'expliqué dans le code commenté, mais :

1. [1010101...011101] sont des data (données littéralement) ici on vas les utiliser de façon à ce que 1 = la tile de l'herbe et 0 = rien (ici c'est une tile blanche).. si pas comprit je peu encore détailler =)
2. La une propriété intéressante de l'axe Parser tu vas comprendre si tu lit le tuto en anglais ici, mais je veut bien t’expliquer en français vite fait (les bases du moins).
Ici on vas prendre l'exemple de 2 tile :
:[0000000000000000→Pic1 // la tile RIEN
:[0020129454555555 // la tile HERBE
une tile affichera à l'écran une petite image 8*8.
pour cela on enregistre 16 chiffres hexadécimal (ici RIEN ou HERBE). Par quel magie cela est-ce possible?
d'abord il faut connaître les bases de la conversion hexadécimal = binaire (et vice versa), les voici (je rajoute en décimal pour aider un peu) :
Dec : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 (voici du décimal tout ce qu'il y a de plus simple, de 1 à 15)
Hex : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (la même chose en hexadécimale)
Bin : 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111 (la c'est moins évident c'est sur, mais c'est la même chose)

Maintenant on vas décortiquer l'HERBE :
Ici en hexadécimal :
0020129454555555
Ici en binaire :
 
Show/Hide spoilerAfficher/Masquer le spoiler
0000 0000
0010 0000
0001 0010
1001 0100
0101 0100
0101 0101
0101 0101
0101 0101
0101 0101

Mais pourquoi je saute une ligne tout les 2 nombres ? Soit tu l'a vu tout de suite, sois tu peut t'aider de Paint (en méga zoom) sur une dessin 8*8, et recopier dans l'ordre précédemment ; 1 = un point noir, 0 = un point blanc.

...


...


Ok? je peut continuer? ^^
Maintenant que tu a comprit que 2 hexadécimal correspondes à 1 ligne d'une pic 8*8, je peut expliquer le code précèdent :
:[0000000000000000→Pic1 // la tile RIEN
:[0020129454555555 // la tile HERBE
sois en binaire :
 
Show/Hide spoilerAfficher/Masquer le spoiler
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000→Pic1 //(RIEN)

0000 0000
0010 0000
0001 0010
1001 0100
0101 0100
0101 0101
0101 0101
0101 0101
0101 0101 //(HERBE)

Donc, Si je fait Pt-On(X,Y, Pic+X), si X = 0, alors la partie en X en dessous sera pris en compte :
 
Show/Hide spoilerAfficher/Masquer le spoiler
XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX→Pic1 //(RIEN)

0000 0000 //partie ignoré
0010 0000
0001 0010
1001 0100
0101 0100
0101 0101
0101 0101
0101 0101
0101 0101 //(HERBE)

X = 1 alors la partie en dessous sera pris en compte :
 
Show/Hide spoilerAfficher/Masquer le spoiler
0000 0000 //partie ignoré
XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX→Pic1 //(RIEN)

XXXX XXXX
0010 0000 //partie ignoré
0001 0010
1001 0100
0101 0100
0101 0101
0101 0101
0101 0101
0101 0101 //(HERBE)

Et Si X = 8
 
Show/Hide spoilerAfficher/Masquer le spoiler
0000 0000
0000 0000 //Toute cette partie *
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000
0000 0000→Pic1 //(RIEN) // * est ignoré

XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX
XXXX XXXX//(HERBE)


3. je n'utilise pas ici de simple horizontal + ou vertical+, c'est la map qui est mit en temps réelle à jour.
Tutoriel sur l'axe parser, un langage de programmation pour z80 ultra rapide et beaucoup plus facile que l'ASM !
User avatar
kindermoumouteProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 2.6%
 
Posts: 849
Joined: 30 Sep 2009, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ecole d'ingénieur informatique et industriel

Re: [AIDE]Programme(s) en Axe Parser

Postby kindermoumoute » 29 Sep 2010, 14:27

Bon apparemment je t'ai achevé avec ce dernier tuto, non?
(pourtant je le trouvait pas mal ^^)
Tutoriel sur l'axe parser, un langage de programmation pour z80 ultra rapide et beaucoup plus facile que l'ASM !
User avatar
kindermoumouteProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 2.6%
 
Posts: 849
Joined: 30 Sep 2009, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ecole d'ingénieur informatique et industriel

PreviousNext

Return to Langages alternatifs

Who is online

Users browsing this forum: ClaudeBot [spider] and 6 guests

-
Search
-
Social TI-Planet
-
Featured topics
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1874 utilisateurs:
>1842 invités
>25 membres
>7 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)