Page 1 sur 1
structure variable et procédure
Publié : jeu. 26/août/2004 15:02
par Thyphoon
Pour l'animation de mes sprites j'ai créé une structure
Et je voulais crééer une procédure permettant de créer facilement ces informations mais apparment on ne peu pas passer le nom d'une strucutre par une varibale ..voici mon code j'éspère que vous le comprendez
Structure animation
NoSprite.w
DeltaX.f
DeltaY.f
tmp.w
Son.w
EndStructure
Procedure creanim(nomanim$,nomsprite$,DeltaX.f,DeltaY.f,tmp.w,Son.w)
NoSprite=LoadSprite(#PB_Any,nomsprite$,0)
AddElement(nomanim$)
nomanim$\NoSprite=NoSprite
nomanim$\DeltaX=DeltaX
nomanim$\DeltaY=DeltaY
nomanim$\tmp=tmp
nomanim$\Son=Son
EndProcedure
NewList Batrepos.animation()
creanim("Batrepos","data/sprite/bat02.bmp",0,0,60,0)
creanim("Batrepos","data/sprite/hd02.bmp",0,0,60,0)
Est ce que vous comprenez ce que je cherche a faire ?
Autre question peut on avoir plusieur pointeur on fait un tableau de structure ?
j'explique j'ai 2 personnages identique a l'ecran...mais il ne sont pas rendu au même point dans l'animation ...
est ce que je suis claire ? est ce que c'est possible !
(En tout cas ça fait 2 jours que je me suis mis au Pure Basic et c'est un vrai régale)
merci d'avance
Yann
Publié : jeu. 26/août/2004 15:22
par filperj
On dirai que tu t'es un peu emmêlé dans la sythaxe
Ca peut marcher comme ça:
Code : Tout sélectionner
Structure animation
nomanim.s
NoSprite.w
DeltaX.f
DeltaY.f
tmp.w
Son.w
EndStructure
NewList Batrepos.animation() ;il faut déclarer la liste avant de l'utiliser
Procedure creanim(nomanim$,nomsprite$,DeltaX.f,DeltaY.f,tmp.w,Son.w)
NoSprite=LoadSprite(#PB_Any,nomsprite$,0)
AddElement(batrepos()) ;le nouvel élément devient l'élément courrant, on peut donc
batrepos()\nomanim=nomanim$ ;l'initialiser tranquilement
batrepos()\NoSprite=NoSprite
batrepos()\DeltaX=DeltaX
batrepos()\DeltaY=DeltaY
batrepos()\tmp=tmp
batrepos()\Son=Son
EndProcedure
creanim("Batrepos","data/sprite/bat02.bmp",0,0,60,0)
creanim("Batrepos","data/sprite/hd02.bmp",0,0,60,0)
Publié : jeu. 26/août/2004 15:24
par comtois
euh non , je n'ai rien compris
enfin peut-être pas sûr je risque donc de répondre à côté de la plaque
voici comment j'avais fait dans le premier de mes progs
Code : Tout sélectionner
; --- Les structures ---
Structure Personnage
MapX.w
MapY.w
EcranX.w
EcranY.w
dx.b
dy.b
AtteindreX.w
AtteindreY.w
AutoriseChgtDirection.b
NoSprite.w
Image.w
Sens.b
Mini.w
Maxi.w
Temps.l
TempsMaxi.w
Vitesse.w
PathX.w[#TailleMapX*#TailleMapY]
PathY.w[#TailleMapX*#TailleMapY]
EndStructure
Global Ordi.Personnage
Global Joueur.Personnage
Procedure AnimationSprite(*Perso.Personnage)
If GetTickCount_() - *Perso\Temps > *Perso\TempsMaxi
*Perso\Image + 1
*Perso\Temps = GetTickCount_()
EndIf
If *Perso\Image > *Perso\Maxi : *Perso\Image = *Perso\Mini : EndIf
ClipSprite(*Perso\NoSprite,24 * *Perso\Image,32 * *Perso\Sens,24,32)
DisplayTransparentSprite(*Perso\NoSprite,*Perso\EcranX + 5,*Perso\EcranY)
EndProcedure
AnimationSprite(@Ordi)
AnimationSprite(@Joueur)
Publié : jeu. 26/août/2004 15:33
par Thyphoon
Merci filperj et comtois

Pour filperj :
Le pb c'est que si j'ai plusieur animation différente je dois refaire une procédure pour chaque, la la liste s'appel Batrepos.animation() mais si j'ai une autre liste Batvolant.animation() je ne peu pas utilisé la procédure.
En tout cas merci ! Si tu as d'autre idée n'hesite pas
pour comtois :
heuuu... c'est interessant ton truc je vais étudié ça car je n'ai pas tres bien compris ce qu'est cette variable *Perso
pour l'instant sur le forum tout le monde m'aide mais j'ai encore aidé persone...j'espère pouvoir rendre l'appareil des que je maitriserais mieux Purebasic
merci en tout cas les gars
Publié : jeu. 26/août/2004 15:38
par cookie
j'espère pouvoir rendre l'appareil
oui, il faut toujours rendre ce qu'on a pris, surtout si c'est un avion

Publié : jeu. 26/août/2004 15:42
par comtois
lorsque j'appelle la procédure de cette façon
AnimationSprite(@Ordi)
je lui passe l'adresse d'ordi , or ordi est du type personnage ( structure que j'ai défini ) , j'ai donc besoin d'un pointeur du même type dans la procédure , tu peux l'appeler comme tu veux , j'ai mis perso , ça pourrait être *pointeur.Personnage .
par contre , les puristes pourront me corriger si je me mélange les pinceaux dans les termes entre adresse ,pointeur etc ...
du moment que j'arrive à le faire fonctionner comme ça , ça me suffit

Publié : jeu. 26/août/2004 15:45
par filperj
"*Perso", avec l'astérisque, c'est un pointeur et ça permet à la procédure de manipuler la variable structurée dont elle a reçu l'adresse.
Regarde le tuto sur les structures en haut de cette partie du forum, ça pourrai bien te mettre sur la voie(d'après ce que tu dis, les pointeurs semblent la solution).
*EDIT* Ah, c'est Comtois le plus rapide cette fois

*EDIT*
Publié : jeu. 26/août/2004 16:26
par nico
@Cookie
C'est con, mais j'adore

Publié : jeu. 26/août/2004 20:19
par Le Soldat Inconnu
moi aussi
(pss, pas de gros mots
, enfin, c.. est dans le dico donc ça va pour cette fois mais que je ne vous y reprenne plus)
Publié : jeu. 26/août/2004 22:27
par Dr. Dri
je me demande si c'est une bonne idée que moi aussi je te montre comment je fais lol
Dri
