structure variable et procédure

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

structure variable et procédure

Message 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
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

On dirai que tu t'es un peu emmêlé dans la sythaxe :wink:
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)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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)
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message 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 :P

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
cookie
Messages : 71
Inscription : mar. 27/janv./2004 21:08
Contact :

Message 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 :lol:
Cookie
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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 :)
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message 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 :lol: *EDIT*
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

@Cookie

C'est con, mais j'adore :lol:
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

moi aussi :jesors: (pss, pas de gros mots :lol: , enfin, c.. est dans le dico donc ça va pour cette fois mais que je ne vous y reprenne plus)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

je me demande si c'est une bonne idée que moi aussi je te montre comment je fais lol

Dri :?:
Répondre