π
<-

[Axe] Problème lors de l'affichage d'une map simple

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

[Axe] Problème lors de l'affichage d'une map simple

Message non lude nikoladu49 » 20 Mar 2011, 18:59

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 noir, l'autre tout blanc) 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 :
Code: Tout sélectionner
:.SURDSAIR
:
:[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,(Y56),2
:   sub(TRN,4,(Y0),‾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


Pouvez vous m'aider ?
Merci d'avance.

PS : sinon quelqu'un pourrait m'expliquer un peu les calculs pour afficher la map, car je n'ai pas tout compris sur le site du zéro, et j'ai surtout fait un copié-collé des calculs (mais je remercie l'auteur qui a fait un très bon tuto :#top#: ).
Avatar de l’utilisateur
nikoladu49
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 13.3%
 
Messages: 4
Inscription: 20 Mar 2011, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 2nde

Re: [Axe] Problème lors de l'affichage d'une map simple

Message non lude Wellen » 20 Mar 2011, 20:10

si je ne m'abuse, ce code là :
Code: Tout sélectionner
:sub(MAP,GDB0M1,Pic0M1

tu ne l'utilise qu'une fois pour le pointeur Pic0M1 donc pour ton premier sprite ( qui est composé de 2 octets )
Rajoute à la suite le même code, mais cette fois pour le pointeur Pic0M1+8, donc tu te déplace de 2 octets, ce qui pointe le deuxième sprite
Donc :
Code: Tout sélectionner
:sub(MAP,GDB0M1,Pic0M1
:sub(MAP,GDB0M1,Pic0M1+8


Ce qui affiche la disposition des premiers sprites sur ton écran, puis des deuxièmes sprites.
De reste pour les calculs je ne me suis pas encore attaqué aux maps, donc je ne sais pas.

Tu peux aussi aller faire un tour sur le forum omnimaga, il y a une communauté plus importante pour l'Axe
:;):
La procrastination, c'est rigolo.
Avatar de l’utilisateur
WellenPremium
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 31.8%
 
Messages: 447
Inscription: 17 Déc 2010, 00:00
Localisation: Compiègne (Picardie)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: étudiant UTC

Re: [Axe] Problème lors de l'affichage d'une map simple

Message non lude nikoladu49 » 20 Mar 2011, 21:22

Tout d'abord merci pour ta réponse :):

J'ai rajouté la ligne que tu m'as dit, mais maintenant c'est tout l'écran qui est recouvert du 2e sprite. Je pense donc que le problème viens de la fonction MAP, mais je n'arrive pas du tout à voir où.
Avatar de l’utilisateur
nikoladu49
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 13.3%
 
Messages: 4
Inscription: 20 Mar 2011, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 2nde

Re: [Axe] Problème lors de l'affichage d'une map simple

Message non lude Wellen » 20 Mar 2011, 21:33

hmpf. Pour cette partie là je ne saurais pas t'aider désolé :s:
La procrastination, c'est rigolo.
Avatar de l’utilisateur
WellenPremium
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 31.8%
 
Messages: 447
Inscription: 17 Déc 2010, 00:00
Localisation: Compiègne (Picardie)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: étudiant UTC

Re: [Axe] Problème lors de l'affichage d'une map simple

Message non lude nikoladu49 » 20 Mar 2011, 22:21

Bon bah pas grave.
Merci quand même.
Avatar de l’utilisateur
nikoladu49
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 13.3%
 
Messages: 4
Inscription: 20 Mar 2011, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 2nde

Re: [Axe] Problème lors de l'affichage d'une map simple

Message non lude tama » 21 Mar 2011, 18:25

Wellen a écrit:si je ne m'abuse, ce code là :
Code: Tout sélectionner
:sub(MAP,GDB0M1,Pic0M1

tu ne l'utilise qu'une fois pour le pointeur Pic0M1 donc pour ton premier sprite ( qui est composé de 2 octets )
Rajoute à la suite le même code, mais cette fois pour le pointeur Pic0M1+8, donc tu te déplace de 2 octets, ce qui pointe le deuxième sprite
Donc :
Code: Tout sélectionner
:sub(MAP,GDB0M1,Pic0M1
:sub(MAP,GDB0M1,Pic0M1+8



Hm, je connais rien en Axe, mais x+8 c'est pas qu'un seul octet ? (à moins que c'est sous-entendu x+8*2, i.e on se déplace de 2 bits quand on fait +1 ?)
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
Avatar de l’utilisateur
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 40.9%
 
Messages: 10995
Inscription: 19 Déc 2005, 00:00
Localisation: /dev/null mais je survis :)
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: [Axe] Problème lors de l'affichage d'une map simple

Message non lude kindermoumoute » 21 Mar 2011, 19:31

Si j'ai bien compris, Pic0AV pointe sur le sprite de ton personnage, que tu essaye de déplacer à l'aide des coordonnées X et Y. Je n'expliquerai pas comment faire ce déplacement, car c'est l'objectif du TPn°2, cependant il est important de bien comprendre le tilemapping. Ton erreur est surement de laisser X dans le calcul :
Code: Tout sélectionner
:{W*6+X+r1}→A

Qu'il faut remplacer par la variable utilisé dans la boucle (ici V) :
Code: Tout sélectionner
:{W*6+V+r1}→A

Pourquoi ? Parce que X est dépendant d'une variable que tu incrémente tout seule (je ne vois pas trop ce que tu essaye de faire avec).

Pourquoi pas appeler la fonction en envoyant les pointeurs en argument, mais ce n'est pas nécessaire. Pour avoir une tilemap qui s'affiche en temps réel, il faut inclure la ligne sub(MAP,GDB0M1,Pic0M1 dans ta boucle principale.
Je n'est pas tester, mais ton programme devrait faire défiler de gauche à droite ta sprite, tout en affichant la tilemap. Mais Comme ce sera très rapide tu ne verra pas grand chose à part la tilemap. ^^


PS : Enlève le Dispagraph qui est au milieu de la boucle principale, et une seule pause suffira (surtout que Pause 1 ne fait pas grand chose).
Tutoriel sur l'axe parser, un langage de programmation pour z80 ultra rapide et beaucoup plus facile que l'ASM !
Avatar de l’utilisateur
kindermoumouteProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 2.6%
 
Messages: 849
Inscription: 30 Sep 2009, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ecole d'ingénieur informatique et industriel

Re: [Axe] Problème lors de l'affichage d'une map simple

Message non lude nikoladu49 » 27 Mar 2011, 20:35

Merci pour ta réponse.
L'erreur venait bien du X.

De plus, j'ai supprimé la "Pause 1", et j'ai ajouté l'affichage de la tilemap dans la boucle (ce sera utile quand je commencerais le défilement de la map, même si pour le moment c'est surtout pour les tests).

Par contre effectivement, on ne voit pas passer le sprite.
C'est justement pour cela que j'ai laissé le "DispGraph" de la boucle principal.

Est-ce une bonne chose de faire comme ça ?
Avatar de l’utilisateur
nikoladu49
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 13.3%
 
Messages: 4
Inscription: 20 Mar 2011, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 2nde

Re: [Axe] Problème lors de l'affichage d'une map simple

Message non lude kindermoumoute » 29 Mar 2011, 17:45

Il n'y a pas besoin de mettre 2 dispgraph dans la même boucle principale, ou alors tu enlève celui qui est à la fin de la fonction MAP.
Tutoriel sur l'axe parser, un langage de programmation pour z80 ultra rapide et beaucoup plus facile que l'ASM !
Avatar de l’utilisateur
kindermoumouteProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 2.6%
 
Messages: 849
Inscription: 30 Sep 2009, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ecole d'ingénieur informatique et industriel


Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: ClaudeBot [spider] et 12 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
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
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
3834 utilisateurs:
>3812 invités
>15 membres
>7 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)