Omnimaga
Calculator Community => [FR] Section Francophone => [FR] Programmation Axe Parser => Topic started by: nikoladu49 on March 21, 2011, 04:07:23 am
-
Bonjour, j'ai commencé à créer mon premier jeu, mais je rencontre déjà des problèmes.
Ma map est composé de 2 sprites différents (l'un tout blanc, l'autre tout noir) mais seul le premier sprite s'affiche, et partout sur l'écran (c'est ce que j'ai remarqué après quelques tests).
Voici le code complet du programme :
:[000F09FE7FE64870]→Pic0AV
:[0000000000000000]→Pic0M1
:[FFFFFFFFFFFFFFFF]
:
:[000000111111]→GDB0M1
:[000000111111]
:[000000111111]
:[000000000000]
:[000000000000]
:[000000111111]
:[000000111111]
:[000000111111]
:
:0→X
:56→Y
:
:ClrDraw
:sub(MAP,GDB0M1,Pic0M1
:
:Repeat getKey(15)
: sub(TRN,1,(Y<56),2
: sub(TRN,4,(Y>0),‾2
:
: Pause 1
: X+1→X
:
: sub(PTC,Pic0AV
: DispGraph
: sub(PTC,Pic0AV
: Pause 100
:End
:
:Return
:
:
:Lbl TRN
:If getKey(r1) and r2
: Y+r3→Y
:End
:Return
:
:Lbl PTC
:Pt-Change(X,Y,r1
:Return
:
:Lbl MAP
:For(W,0,7
: For(V,0,5
: {W*6+X+r1}→A
: Pt-On(V*16,W*8,A/16*8+r2
: Pt-On(V*16+8,W*8,A^16*8+r2
: End
:End
:DispGraph
:Return
Je ne vois pas trop où est mon erreur.
Mais je pense qu'elle se situe dans la fonction MAP.
Merci d'avance.
PS : est-ce-que quelqu'un pourrait m'expliquer plus en détails les calculs qui sont faits pour afficher une map. Je n'ai pas trop compris sur le tutoriel du site du zéro (mais je remercie ces auteurs pour leur excellent travail :thumbsup:).
-
Il y a déjà une première faute, là :
: {W*6+X+r1}→A
Ne faut-il pas multiplier W par 8 ? Et puis pourquoi V n'intervient pas dans cette formule ?
-
Merci pour ta réponse.
Le problème venait de cette ligne là. J'ai mis X au lieu de V (erreur d'étourderie).
Par contre en multipliant W par 6 ça fonctionne.
-
Il faut multiplier par huit car c'est des sprites 8x8 donc ça avance de huit en huit. Dans ce cas là ça ne ce voit pas car c'est des sprites en noir et blanc mais essaye ça avec d'autre sprites comme un smiley où quelque chose dans ce genre et tu verra.
-
Mais non, c'est bien par 6 qu'il faut multiplier, car l'écran fait 12*8 sprites. W est la largeur, et dans la tilemap 2 sprites sont stockés dans 1 octet, donc 12/2=6.
(C'est marqué dans mon tutoriel Kiligolo)
Comme un sprite fait 8 pixels * 8 pixels, à l'affichage on retrouve 12*8 et 8*8, soit les dimensions de l'écran : 96*64.
-
ah ok désolé :p
-
Merci pour ta réponse.
Le problème venait de cette ligne là. J'ai mis X au lieu de V (erreur d'étourderie).
-
Je te l'offre, mais j'avais déjà répondu à son problème sur TI-Bank. :p
-
Au fait bienvenue sur le forum ;D
-
kindermoumoute : oui c'est vrai. J'avais pas eu trop le temps pour tester les autres remarques que tu m'avais fait. J'ai répondu sur Ti Bank.
DJ_O : merci :)