J'ai commencé à programmer un fond animé pour un jeu.
Le code source suit.
Je trouve cela intéressant mais j'aurais aimé mettre, derrière mes effets, un fond genre plasma qui fasse penser à de l'eau couleur orangée.
Je suis mauvais pour les effets plasma... si quelqu'un pouvait m'aider...
ps : mon script est libre de droit, tout comme le jeu que je vais faire.

Testé ok sur mac os x.
Code : Tout sélectionner
#scnw=1024
#scnh=768
#scnd=32
If InitSprite()=0 Or InitMouse()=0 Or InitSound()=0 Or InitKeyboard()=0
MessageRequester("Error","Can't initialize the game !")
End
EndIf
If OpenScreen(#scnw,#scnh,#scnd,"Plasmanoid")=0
MessageRequester("Error","Can't initialize "+Str(#scnw)+"x"+Str(#scnh)+"x"+Str(#scnd)+" screen !")
End
EndIf
Declare reducedcolor(c,re)
RandomSeed(ElapsedMilliseconds())
#GAMEEND=0
#GAMEPLAYING=1
#FPS=50
#DOTLEADERS=5
#MOTORS=50
#DOTSEEKERS=41
Dim ray.f(#MOTORS,#DOTLEADERS)
Dim ang.f(#MOTORS,#DOTLEADERS)
Dim speed.f(#MOTORS,#DOTLEADERS)
Dim sens(#MOTORS,#DOTLEADERS)
Dim color(#DOTLEADERS)
Dim xdot(#DOTLEADERS,#DOTSEEKERS)
Dim ydot(#DOTLEADERS,#DOTSEEKERS)
dotcount=0
For j=1 To #DOTLEADERS
For i=1 To #MOTORS
ray.f(i,j)=Random(70)+1
ang.f(i,j)=Random(359)
speed.f(i,j)=Random(15)+1
sens(i,j)=Random(1)
If sens(i,j)=0
sens(i,j)=-1
EndIf
Next
Next
Restore colorlist
For i=1 To #DOTLEADERS
Read.i r
Read.i g
Read.i b
color(i)=RGB(r,g,b)
Next
DataSection
colorlist:
Data.i 41,0,0,41,25,0,41,40,0,40,41,40,41,25,25
EndDataSection
gamestate=#GAMEPLAYING
FlipBuffers()
While gamestate=#GAMEPLAYING
ClearScreen(RGB(0,0,0))
time=ElapsedMilliseconds()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)=#True
gamestate=#GAMEEND
EndIf
; pour usage futur... appuyer sur 'espace' pour faire vibrer !
If KeyboardPushed(#PB_Key_Space)=#True
vibrate=1
Else
vibrate=0
EndIf
;=============================================================
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_XOr)
If dotcount<#DOTSEEKERS
dotcount=dotcount+1
EndIf
For j=1 To #DOTLEADERS
px=(#scnw/2)
py=(#scnh/2)
For i=1 To #MOTORS
px=px+(ray.f(i,j)*Cos(Radian(ang.f(i,j))))
py=py+(ray.f(i,j)*Sin(Radian(ang.f(i,j))))
ang.f(i,j)=ang.f(i,j)+(speed.f(i,j)*sens(i,j))
If ang.f(i,j)<0
ang.f(i,j)=ang.f(i,j)+360
EndIf
If ang.f(i,j)>359
ang.f(i,j)=ang.f(i,j)-360
EndIf
Next
If px>=0 And px<#scnw And py>=0 And py<#scnh
Plot(px,py,color(j))
EndIf
For k=#DOTSEEKERS-1 To 1 Step -1
xdot(j,k+1)=xdot(j,k)
ydot(j,k+1)=ydot(j,k)
Next
xdot(j,1)=px
ydot(j,1)=py
Next
For j=1 To #DOTLEADERS
For i=2 To dotcount
px=xdot(j,i)
py=ydot(j,i)
If px>=0 And px<#scnw And py>=0 And py<#scnh
vibrationx=(Random(4)-2)*vibrate
vibrationy=(Random(4)-2)*vibrate
vibrasize=(i/4)*vibrate
Circle(px+vibrationx,py+vibrationy,i+vibrasize,reducedcolor(Color(j),(i-1)))
EndIf
Next
Next
StopDrawing()
FlipBuffers()
While ElapsedMilliseconds()-time<Int(1000/#FPS)
Wend
Wend
CloseScreen()
End
Procedure reducedcolor(c,re)
rr=Red(c)-re
gg=Green(c)-re
bb=Blue(c)-re
If rr<0
rr=0
EndIf
If gg<0
gg=0
EndIf
If bb<0
bb=0
EndIf
ProcedureReturn RGB(rr,gg,bb)
EndProcedure