Big Bang
Publié : mar. 30/sept./2014 22:20
Bonjour à tous.
j'ai tenté de reproduire l'effet du Bing Bang.
c'est pas très bien fait,mais c'est un ensemble globale de ce que je voulait faire:
code+archive
edit:version modifié
j'ai tenté de reproduire l'effet du Bing Bang.
c'est pas très bien fait,mais c'est un ensemble globale de ce que je voulait faire:
code+archive
Code : Tout sélectionner
;***********************************************
;Titre : big_bang
;Auteur : Raven
;Date :30/09/2014
;Heure :22:02:53
;Version Purebasic : PureBasic 5.23 LTS (Windows - x86)
;Version de l'editeur :EPB V2.58
; Libairies necessaire : Aucune
;***********************************************
;----------------------------------------------------
; tests d'initialisation de l'environnement
;-----------------------------------------------------
InitSprite()
InitSound()
InitKeyboard()
UsePNGImageDecoder()
UseJPEGImageDecoder()
UseOGGSoundDecoder()
;------- resolution d'ecran ------
If OpenScreen(1024,768,32,"Big Bang") = 0
MessageBox_ (0,"Impossible d'ouvrir un écran 1024x768x32@75hz", "ERREUR", #MB_ICONINFORMATION|#MB_OK) :End
EndIf
enumeration
#font
EndEnumeration
enumeration
#son_explosion
endenumeration
enumeration
#galaxy
#explosion
EndEnumeration
;-Chargement des medias
LoadFont(#font,"Cooper Black",14,#PB_Font_HighQuality )
CatchSprite(#galaxy,?galaxy,#PB_Sprite_AlphaBlending)
CatchSprite (#explosion, ?anim_explosion,#PB_Sprite_BlendSourceAlpha)
longueur_du_son=?explosion_fin-?explosion
CatchSound( #son_explosion,?explosion,longueur_du_son)
;-variables
global explosion,explosion_posx,explosion_posy,explosion_image
Amplifi.f=0.0
vitesse.f=1.0
explosion_posx=0
explosion_posy=-150
galaxie_posx = 480
galaxie_posy = 385
spritequality(1)
;-boucle principale
Repeat
ExamineKeyboard()
ClearScreen(RGB(0,0,0))
SpriteBlendingMode(#PB_Sprite_BlendSourceAlpha, #PB_Sprite_BlendSourceAlpha)
TransparentSpriteColor(#explosion,rgb(0,0,0))
If KeyboardReleased(#PB_Key_space)
If Paused = #False
Paused = #True
playsound(#son_explosion,son_explosion)
Else
Paused = #False
galaxie=#True
EndIf
EndIf
If Paused = #False
ClearScreen(RGB(0,0,0))
galaxie= #False
explosion_image=0
gosub galaxie2
Else
ClearScreen(RGB(0,0,0))
galaxie=#True
EndIf
if galaxie = #True
if explosion_image=26:explosion_image=26:endif
DisplayTransparentSprite(#explosion,explosion_posx,explosion_posy)
ClipSprite(#explosion,explosion_image*129,0,129,350)
zoomsprite(#explosion,1000,1000)
explosion + 1
If explosion =5
explosion_image + 1
explosion = 0
Else
gosub galaxie
EndIf
endif
if galaxie2 = #True
gosub galaxie2
galaxie=#False
EndIf
;--- fps ----
If FPST < ElapsedMilliseconds()
FPST = ElapsedMilliseconds()+1000
fps = FPSC
FPSC=0
EndIf
FPSC+1
;--------------------------------------------------------------
;------------ affichage du menu ---------------------
;--------------------------------------------------------------
If StartDrawing(ScreenOutput())
If KeyboardReleased( #PB_Key_Tab)
If affiche_menu = #True
affiche_menu = #False
Else
affiche_menu = #True
EndIf
EndIf
DrawingMode(#PB_2DDrawing_Transparent)
If affiche_menu = #False
DrawingFont(FontID(#font))
DrawText(20,20,"FPS: "+Str(fps),RGB(50,255,150))
DrawText(20,50,"Big Bang",RGB(255,255,255))
drawtext(20,80,"Touche espace ON/OFF")
Else
EndIf
StopDrawing()
EndIf
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
FreeSprite(#galaxy)
freesound(#son_explosion)
CloseScreen()
End
;------Sous Programme--------
galaxie:
ExamineKeyboard()
ClearScreen(RGB(0,0,0))
SpriteBlendingMode(#PB_Sprite_BlendSourceAlpha, #PB_Sprite_BlendSourceAlpha)
For i =0 To 1024
TransparentSpriteColor(#galaxy,#PB_Sprite_BlendSourceAlpha)
DisplayTransparentSprite(#galaxy,galaxie_posx+i*Cos(i*1+Amplifi),galaxie_posy+i*Sin(i*1+Amplifi+Sinh(i*1/vitesse)/160+160))
ZoomSprite(#galaxy,35,35)
Amplifi + 0.000005
vitesse+0.0005
Next i
Return
galaxie2:
ExamineKeyboard()
ClearScreen(rgb(0,0,0))
For i =0 To 1
DisplayTransparentSprite(#galaxy,galaxie_posx+i*Cos(i*1+Amplifi),galaxie_posy+i*Sin(i*1+Amplifi+Sinh(i*1/vitesse)/160+160))
ZoomSprite(#galaxy,35,35)
RotateSprite(#galaxy,amplifi+50,vitesse+50)
Amplifi + 0.000005
vitesse+0.0005
next i
return
;-----Data Section------
DataSection
explosion:
IncludeBinary "media\explosion.ogg"
explosion_fin:
galaxy:
IncludeBinary "media\star1.bmp"
anim_explosion:
IncludeBinary "media\explosion2.png"
EndDataSection
; Epb