structure variable et procédure
structure variable et procédure
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
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
On dirai que tu t'es un peu emmêlé dans la sythaxe
Ca peut marcher comme ça:

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)
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
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

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)
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

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
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
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

"*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*
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

Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :