Code : Tout sélectionner
InitSprite()
InitMouse()
InitKeyboard()
ExamineDesktops()
ddw=DesktopWidth(0)
ddh=DesktopHeight(0)
ddw2=1024
ddh2=768
ddh3.f=(ddh/ddh2)
zoomx.f=(ddw-ddw2)/2
zoomy.f=(ddh-ddh2)/2
sph15=1
OpenScreen(ddw,ddh,32,"SPH Demo")
Global Dim pp.w(8290,2500)
Global dw.w,dh.w,SPH_Z,SPH_NOMBRE
Dim points.Point(10)
f0.f=1
f1.f=0
f2.f=3.14159265/5
For i=1 To 65
points(0)\x=ddw2/2+zoomx+Cos(f1)*(i*2*f0)
points(0)\y=ddh2/2+zoomy+Sin(f1)*(i*2*f0)
f1+f2
points(1)\x=ddw2/2+zoomx+Cos(f1)*(i*f0)
points(1)\y=ddh2/2+zoomy+Sin(f1)*(i*f0)
f1+f2
points(2)\x=ddw2/2+zoomx+Cos(f1)*(i*2*f0)
points(2)\y=ddh2/2+zoomy+Sin(f1)*(i*2*f0)
f1+f2
points(3)\x=ddw2/2+zoomx+Cos(f1)*(i*f0)
points(3)\y=ddh2/2+zoomy+Sin(f1)*(i*f0)
f1+f2
points(4)\x=ddw2/2+zoomx+Cos(f1)*(i*2*f0)
points(4)\y=ddh2/2+zoomy+Sin(f1)*(i*2*f0)
f1+f2
points(5)\x=ddw2/2+zoomx+Cos(f1)*(i*f0)
points(5)\y=ddh2/2+zoomy+Sin(f1)*(i*f0)
f1+f2
points(6)\x=ddw2/2+zoomx+Cos(f1)*(i*2*f0)
points(6)\y=ddh2/2+zoomy+Sin(f1)*(i*2*f0)
f1+f2
points(7)\x=ddw2/2+zoomx+Cos(f1)*(i*f0)
points(7)\y=ddh2/2+zoomy+Sin(f1)*(i*f0)
f1+f2
points(8)\x=ddw2/2+zoomx+Cos(f1)*(i*2*f0)
points(8)\y=ddh2/2+zoomy+Sin(f1)*(i*2*f0)
f1+f2
points(9)\x=ddw2/2+zoomx+Cos(f1)*(i*f0)
points(9)\y=ddh2/2+zoomy+Sin(f1)*(i*f0)
f1+f2
f0*1.046
hdc=StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Default)
If hdc
Box(0,0,0,0,RGB(i*3.8,i*3.8,i*3.8))
Polygon_(hdc,points(),10)
EndIf
StopDrawing()
FlipBuffers()
Next
;fin de l'etoile **************************************
; PlayMusic(1)
; debut flash
For i=255 To 8 Step -8
ClearScreen(RGB(i,i,i))
FlipBuffers()
Next
ClearScreen(0)
Structure pixel
posx.f
posy.f
xx.f
yy.f
centrex.l
centrey.l
rayon.f
couleur.l
EndStructure
NewList pixel.pixel() ; pour pas s'y perdre, vaux mieux donner le meme nom a la structure qu'a la liste
time=0
centrex=ddw2/2
centrey=ddh2/2
angle.f=0
rnd_angle.f=20
rnd_randon=200
vitessex.f=0.02
vitessey.f=0.02
nbb=0
;############
;############
;############
;############
;############
;############
craque=0
craque2=0
presente= 0
Repeat
ExamineKeyboard()
ClearScreen(0)
;********************************************
If time<900
For i=1 To 20
AddElement(pixel())
pixel()\centrex=centrex
pixel()\centrey=centrey
rayon.f=5+Random(500)
angle=Random(6559)
x = Cos(angle)*rayon
y = Sin(angle)*rayon
pixel()\posx = x
pixel()\posy = y
z=Random(100)+20
pixel()\xx = x/z
pixel()\yy = y/z
pixel()\couleur = 130+Random(Random(10000))
Next
EndIf
;********************************************
time+1
If time<1040
nbb+1
If time>500
;bspline(0,0,200,0,200,200,0,200,RGB(255,180,150),hdc)
vitessex+0.00005
vitessey+0.00002
EndIf
hdc=StartDrawing(ScreenOutput()) ;*********************** S T A R T
;LineXY(30,0,100,100,RGB(255,255,0))
;********** A partir d'ici, tout est "LinkedList"
ForEach pixel.pixel() ; tant qu'il y a des etoiles on les affiches
With pixel()
x=\centrex+\posx+\xx+Cos(nbb/1000)*Cos(nbb/100)*nbb/2
y=\centrey+\posy+\yy+Sin(nbb/100)*Cos(nbb/100)*nbb/2
\xx*(1+vitessex*2)
\yy*(1+vitessey*2)
If x>ddw-2 Or x<1 Or y>ddh-2 Or y<1
DeleteElement(pixel()) ; on la tue
Else ; sinon
\couleur*(1+vitessex)
If \couleur>65535
\couleur=65535
EndIf
If \couleur<32768
rvb=\couleur/129
Plot(x,y,RGB(rvb,rvb,rvb)) ; on l'affiche
Else
Plot(x,y,RGB(255,255,255)) ; on l'affiche
rvb=(\couleur-32768)/130
Plot(x+1,y,RGB(rvb,rvb,rvb)) ; on l'affiche
Plot(x-1,y,RGB(rvb,rvb,rvb)) ; on l'affiche
Plot(x,y+1,RGB(rvb,rvb,rvb)) ; on l'affiche
Plot(x,y-1,RGB(rvb,rvb,rvb)) ; on l'affiche
rvb/2
Plot(x+1,y+1,RGB(rvb,rvb,rvb)) ; on l'affiche
Plot(x-1,y-1,RGB(rvb,rvb,rvb)) ; on l'affiche
Plot(x-1,y+1,RGB(rvb,rvb,rvb)) ; on l'affiche
Plot(x+1,y-1,RGB(rvb,rvb,rvb)) ; on l'affiche
EndIf
EndIf
EndWith
Next ; ce "foreach:next" s'addapte donc toujours au vrai nombre d'etoiles
;********** fin de la technique "LinkedList"
; DrawText(50,50,Str(time),RGB(255,50,50),0)
; DrawText(50,100,Str(presente),RGB(255,50,50),0)
; DrawText(50,150,Str(vitessex),RGB(255,50,50),0)
StopDrawing()
EndIf
If presente>=300 And presente<501 ; etoile qui fait disparaitre sph
presente+1
EndIf
;############################################################
;############################################################
If presente>=500 And presente<815
If presente=500
Dim points.Point(10)
gro.f=0
f0.f=1.00001
f1.f=1
f2.f=3.14159265/5
EndIf
presente+1
points(0)\x=ddw2/2-12+zoomx+Cos(f1)*Sin(gro)*250
points(0)\y=262+Sin(f1)*Sin(gro)*250
f1+f2
points(1)\x=ddw2/2-12+zoomx+Cos(f1)*Sin(gro)*130
points(1)\y=262+Sin(f1)*Sin(gro)*130
f1+f2
points(2)\x=ddw2/2-12+zoomx+Cos(f1)*Sin(gro)*250
points(2)\y=262+Sin(f1)*Sin(gro)*250
f1+f2
points(3)\x=ddw2/2-12+zoomx+Cos(f1)*Sin(gro)*130
points(3)\y=262+Sin(f1)*Sin(gro)*130
f1+f2
points(4)\x=ddw2/2-12+zoomx+Cos(f1)*Sin(gro)*250
points(4)\y=262+Sin(f1)*Sin(gro)*250
f1+f2
points(5)\x=ddw2/2-12+zoomx+Cos(f1)*Sin(gro)*130
points(5)\y=262+Sin(f1)*Sin(gro)*130
f1+f2
points(6)\x=ddw2/2-12+zoomx+Cos(f1)*Sin(gro)*250
points(6)\y=262+Sin(f1)*Sin(gro)*250
f1+f2
points(7)\x=ddw2/2-12+zoomx+Cos(f1)*Sin(gro)*130
points(7)\y=262+Sin(f1)*Sin(gro)*130
f1+f2
points(8)\x=ddw2/2-12+zoomx+Cos(f1)*Sin(gro)*250
points(8)\y=262+Sin(f1)*Sin(gro)*250
f1+f2
points(9)\x=ddw2/2-12+zoomx+Cos(f1)*Sin(gro)*130
points(9)\y=262+Sin(f1)*Sin(gro)*130
f1+f2
f1+f0-1
f0*1.0003
gro+0.01
hdc=StartDrawing(ScreenOutput())
If hdc
Box(0,0,0,0,RGB(255,255,220))
Polygon_(hdc,points(),10)
EndIf
StopDrawing()
EndIf
FlipBuffers()
If time>1200
End
EndIf
Until KeyboardPushed(#PB_Key_Escape)
End