animation sprite le retour
Publié : mer. 26/mars/2008 13:24
bonjour quelqu'un connait il la biblio animsprite
j'essai d'activer une explosion lors d'un tir avec animsprite
dans le p principale pas de probleme l'animation se joue et boucle en continu,mais dans ma procedure ,j'apercois mon ani mais pas completement ????
comment faire
j'essai d'activer une explosion lors d'un tir avec animsprite
dans le p principale pas de probleme l'animation se joue et boucle en continu,mais dans ma procedure ,j'apercois mon ani mais pas completement ????
comment faire
Code : Tout sélectionner
If InitEngine3D()=0 Or InitMouse ()=0 Or InitSprite ()=0 Or InitKeyboard ()=0 Or InitSprite3D ()=0 Or InitSound()=0
MessageRequester ( "Error" , "Can't open DirectX 7 or later" , 0)
End
EndIf
UsePNGImageDecoder()
Enumeration
#explos1wav
#galax
#vaisseau
#tir1
#aster1
#explosion=60
EndEnumeration
Global posxtir,posytir,tirjoueur,t=0,t1=0,asterx,astery=-100,score,scrolling=0,asteroide,explosion.AnimSprite
OpenScreen(800,600,32,"ecranjeu")
LoadSprite(#galax,"c:\space\gala1.png") ;
LoadSprite(#aster1,"c:\space\aster1.png")
TransparentSpriteColor(#aster1,$ffffff)
LoadSprite(#vaisseau,"c:\space\vaisseau.png",0);charge le dessin
TransparentSpriteColor(#vaisseau,$ffffff)
LoadSprite(#tir1,"c:\space\tir1.png",0)
TransparentSpriteColor(#tir1,$ffffff)
MouseLocate(385,520)
LoadSound(#explos1wav,"c:\space\explos1.wav")
LoadSprite(#explosion,"c:\space\explosion.png",0)
CreateAnimSprite(explosion,#explosion,70,70,100);explosion variable animsprite
TransparentSpriteColor(#explosion,$ffffff)
;**************************************************
Declare explosionaster1()
Declare coltirast()
;*********************************
Structure tirjoueur
posxtir.l
posytir.l
EndStructure
Global NewList position.tirjoueur()
;**************************animx=
;*********************************
Structure asteroide
asterx.l
astery.l
vitesse.l
EndStructure
Global NewList coord.asteroide()
;*************************************
;******************************
Procedure gestiontir()
Select KeyboardReleased(#PB_Key_Space)
Case 0
t=1
Case 1
t=0
EndSelect
If t=1:Goto freintir:EndIf
If t=0
InsertElement(position())
position()\posxtir=MouseX()+13
position()\posytir=MouseY()
EndIf
t=1
freintir:
While NextElement(position())
position()\posytir-5
DisplayTransparentSprite(#tir1,position()\posxtir,position()\posytir)
If position()\posytir<=0:t=0
EndIf
coltirast()
Wend
t=0
ResetList(position())
EndProcedure
;***********************************
Procedure afficheaster()
InsertElement(coord())
If t1=1:Goto freinaster1:EndIf
If t1=0:coord()\asterx=Random(740):EndIf
t1=1
freinaster1:
While NextElement(coord())
t1=1
coord()\astery+5
DisplayTransparentSprite(#aster1,coord()\asterx,coord()\astery)
If coord()\astery>600:t1=0:coord()\astery=-100
DeleteElement(coord())
EndIf
Wend
t1=0
EndProcedure
;*********************************************************************************************************
;c'est ici que je me casses la tete
Procedure coltirast()
If SpritePixelCollision(#tir1,position()\posxtir,position()\posytir,#aster1,coord()\asterx,coord()\astery)
explosionaster1()
Repeat
DisplayAnimSprite(explosion,coord()\asterx,coord()\astery)
UseBuffer(#explosion)
Until AnimFrameCount(explosion)>30
DeleteElement(coord()):t1=0
DeleteElement(position())
t=0
EndIf
EndProcedure
;*******************************************************************************************************************
Procedure explosionaster1()
;PlaySound(#explos1wav)
EndProcedure
;************************************
;Procedure score()
;score=score+10
;EndProcedure
; ********************************************
; * programme principale *
; ********************************************
Repeat
DisplaySprite(#galax,0,scrolling)
DisplaySprite(#galax,0,scrolling-600)
scrolling+2:If scrolling>600:scrolling=0:EndIf
DisplayTransparentSprite(#vaisseau,MouseX(),MouseY())
ExamineMouse()
ExamineKeyboard()
gestiontir()
afficheaster()
FlipBuffers()
Until KeyboardPushed (#PB_Key_Escape)
End