voici un tunnel en points qui ne me satisfait qu'a moitié :
Code : Tout sélectionner
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Erreur", "Impossible d'initialiser l'écran.")
End
EndIf
ExamineDesktops()
ddw=DesktopWidth(0)
ddh=DesktopHeight(0)
ddw2=1024
ddh2=768
ddh3.f=(ddh/ddh2)
If OpenScreen(ddw,ddh,32,"SPH Demo")=0
MessageRequester("Erreur", "Impossible d'ouvrir l'écran.")
End
EndIf
ClearScreen(0)
StartDrawing(ScreenOutput())
For i=0 To ddw-2 Step 5
For u=0 To ddh-2 Step 5
Plot(i,u,RGB(Random(40),0,Random(40)))
Next
Next
For i=1 To 30000
Plot(Random(ddw-1),Random(ddh-1),0)
Plot(Random(ddw-1),Random(ddh-1),RGB(Random(Random(99)),0,Random(Random(99))))
Next
For i=1 To 700
rgb=Random(110)
Plot(Random(ddw-1),Random(ddh-1),RGB(rgb,rgb,rgb))
Next
For i=1 To 20
rgb=Random(255)
xsph=Random(ddw-5)
ysph=Random(ddh-5)
Plot(1+xsph,1+ysph,RGB(rgb,rgb,rgb))
Plot(xsph,1+ysph,RGB(rgb/2,rgb/2,rgb/2))
Plot(2+xsph,1+ysph,RGB(rgb/2,rgb/2,rgb/2))
Plot(1+xsph,ysph,RGB(rgb/2,rgb/2,rgb/2))
Plot(1+xsph,2+ysph,RGB(rgb/2,rgb/2,rgb/2))
Next
StopDrawing()
GrabSprite(1,0,0,ddw,ddh)
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
centrex=ddw/2
centrey=ddh/2
angle.f=0
rnd_angle.f=20
rnd_randon=200
vitessex.f=0.02
vitessey.f=0.02
nbb=0
;############
;############
;############
;############
;############
;############
xxx.f=1
yyy.f=3
oldxxx.f=xxx
oldyyy.f=yyy
xxx2.f=2.2
yyy2.f=1.4
oldxxx2.f=xxx2
oldyyy2.f=yyy2
rota.f=0
oldrota.f=rota
Repeat
ExamineKeyboard()
DisplaySprite(1,0,0)
;********************************************
For i=1 To 10
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
;********************************************
nbb+1
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/380)*Cos(nbb/200)*200
y=\centrey+\posy+\yy+Sin(nbb/240)*Cos(nbb/200)*150
\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
r=30
rgb=5
rgb2=0
rr.f=1.005
Repeat
cmb=0
xxx+1.05
yyy+2.3
xxx2+1.5
yyy2+2.1
xxxx=Cos(Radian(xxx))*(ddw/5)+Cos(Radian(xxx2))*(ddw/5)
yyyy=Sin(Radian(yyy))*(ddh/5)+Cos(Radian(yyy2))*(ddh/5)
For u=0 To 355 Step 10
x=Cos(Radian(u)+rota)*r
y=Sin(Radian(u)+rota)*r
ddw4=ddw/2+x+xxxx
ddh4=ddh/2+y+yyyy
xxx+0.1
yyy+0.05
If ddw4>0 And ddw4<ddw-2 And ddh4>0 And ddh4<ddh-2
Plot(ddw4,ddh4,RGB(rgb,rgb,rgb))
If rgb2>0
Plot(ddw4+1,ddh4+1,RGB(rgb2,rgb2,rgb2))
Plot(ddw4,ddh4+1,RGB(rgb2,rgb2,rgb2))
Plot(ddw4+1,ddh4,RGB(rgb2,rgb2,rgb2))
EndIf
Else
cmb+1
EndIf
Next
rgb+24
If rgb>=255
rgb=255
rgb2+20
If rgb2>=255
rgb2=255
EndIf
EndIf
rr*1.005
r*rr
r*1.1
rota+2
Until cmb>=36
rota=oldrota+0.2
oldrota=rota
xxx=oldxxx+0.5
yyy=oldyyy+0.44
oldxxx=xxx
oldyyy=yyy
xxx2=oldxxx2+0.31
yyy2=oldyyy2+0.41
oldxxx2=xxx2
oldyyy2=yyy2
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End