Code : Tout sélectionner
#ScrW=320
#ScrH=240
#Moder=1
If InitSprite()And InitPalette() And InitKeyboard() And OpenScreen(#ScrW,#ScrH,8,"Feu")
CreatePalette(0)
For c=0 To 127
SetPaletteColor(c,RGB(c,c,c))
Next
For c=128 To 239
SetPaletteColor(c,240)
Next
For c=240 To 255
SetPaletteColor(c,RGB(c,(c-240)*(255/15),0))
Next
DisplayPalette(0)
Structure ScrLine
x.b[#ScrW]
EndStructure
Structure VirtuScr
y.ScrLine[#ScrH+1]
EndStructure
Global VirtuScr.VirtuScr
Repeat
Scrop=ScreenOutput()
If Scrop And StartDrawing(Scrop)
For y=2 To #ScrH
VirtuScr\y[y-2]\x[0]=(VirtuScr\y[y-1]\x[0]+VirtuScr\y[y]\x[0]+VirtuScr\y[y]\x[1]+VirtuScr\y[y]\x[#ScrW-1])/4+#Moder
VirtuScr\y[y-2]\x[#ScrW-1]=(VirtuScr\y[y]\x[#ScrW-2]+VirtuScr\y[y]\x[#ScrW-1]+VirtuScr\y[y-1]\x[#ScrW-1]+VirtuScr\y[y]\x[0])/4+#Moder
For x=1 To #ScrW-2
VirtuScr\y[y-2]\x[x]=(VirtuScr\y[y]\x[x-1]+VirtuScr\y[y]\x[x]+VirtuScr\y[y]\x[x+1]+VirtuScr\y[y-1]\x[x])/4+#Moder
Next
CopyMemory(@VirtuScr\y[y-2],DrawingBuffer()+DrawingBufferPitch()*(y-2),SizeOf(ScrLine))
Next
CopyMemory(@VirtuScr\y[#ScrH-1],DrawingBuffer()+DrawingBufferPitch()*(#ScrH-1),SizeOf(ScrLine))
StopDrawing()
EndIf
For x=0 To #ScrW-1
;VirtuScr\y[#ScrH-1]\x[x]=Random(255) <- le compilo traduit mal cette expression ??
PokeB(@VirtuScr\y[#ScrH]\x[x],Random(255))
Next
FlipBuffers()
While IsScreenActive()=0
Delay(20)
FlipBuffers()
Wend
ExamineKeyboard()
Until KeyboardReleased(#PB_Key_Escape)
EndIf
Petite variation:
Code : Tout sélectionner
#ScrW=320 ;résolution d'écran
#ScrH=240
#Moder=-3 ;fait varier le "rythme"
If InitSprite()And InitPalette() And InitKeyboard() And OpenScreen(#ScrW,#ScrH,8,"Feu")
CreatePalette(0)
For c=0 To 63
SetPaletteColor(c,RGB(c/2,c/2,c/2))
Next
For c=64 To 191
SetPaletteColor(c,RGB(c-32,c/2,32))
Next
For c=192 To 255
SetPaletteColor(c,RGB(c-32,96-(192-c),32))
Next
DisplayPalette(0)
Structure ScrLine
x.b[#ScrW]
EndStructure
Structure VirtuScr
y.ScrLine[#ScrH+1]
EndStructure
Global VirtuScr.VirtuScr
RandomSeed(ElapsedMilliseconds())
Repeat
Scrop=ScreenOutput()
If Scrop And StartDrawing(Scrop)
For y=1 To #ScrH-1
VirtuScr\y[y-1]\x[0]=(VirtuScr\y[y+1]\x[0]+VirtuScr\y[y]\x[0]+VirtuScr\y[y]\x[1]+VirtuScr\y[y]\x[#ScrW-1])/4+#Moder
VirtuScr\y[y-1]\x[#ScrW-1]=(VirtuScr\y[y+1]\x[#ScrW-1]+VirtuScr\y[y]\x[#ScrW-2]+VirtuScr\y[y]\x[#ScrW-1]+VirtuScr\y[y]\x[0])/4+#Moder
For x=1 To #ScrW-2
VirtuScr\y[y-1]\x[x]=(VirtuScr\y[y+1]\x[x]+VirtuScr\y[y]\x[x-1]+VirtuScr\y[y]\x[x]+VirtuScr\y[y]\x[x+1])/4+#Moder
Next
CopyMemory(@VirtuScr\y[y-1],DrawingBuffer()+DrawingBufferPitch()*(y-1),SizeOf(ScrLine))
Next
CopyMemory(@VirtuScr\y[#ScrH-1],DrawingBuffer()+DrawingBufferPitch()*(#ScrH-1),SizeOf(ScrLine))
StopDrawing()
EndIf
For x=0 To #ScrW-1
;VirtuScr\y[#ScrH-1]\x[x]=Random(255) <- le compilo traduit mal cette expression ??
PokeB(@VirtuScr\y[#ScrH]\x[x],Random(Randomer))
Next
RandomerBase=RandomerBase+1
If RandomerBase&512
Randomer=(~RandomerBase>>1)&255
Else
Randomer=(RandomerBase>>1)&255
EndIf
FlipBuffers()
While IsScreenActive()=0
Delay(20)
FlipBuffers()
Wend
ExamineKeyboard()
Until KeyboardReleased(#PB_Key_Escape)
EndIf
