
sinon,
Code : Tout sélectionner
Code:
;**********************************************
;*
;* étoiles02.pb on ouvre un écran
;* on va le faire en coordonnées polaires
;* le 29/01/2004
;* Merci à Polux pour le coup de main au départ
;**********************************************
InitKeyboard() ;initialisation du clavier
InitSprite() ; et du moteur de sprite (je crois que ça teste DirectX 7 )
nbretoiles = 700
pi2=6.28318531 ; valeur de 2*pi car cosinus et sinus ont besoin d'angles en radians
Dim stars.f(nbretoiles,54) ;4 dimensions r,angle,vitesser
For i=3 To nbretoiles
stars (i,1)= Random(10) ; rayon
stars (i,2)= Random(360) ; angle en degré
stars (i,3)= Random(1)+1 ; vitesse d'incrémentation du rayon
Next i
SetRefreshRate(75) ; là on tente de fixer le taux de rafraichissement à 60 écrans par seconde.
If OpenScreen(640,480,32,"") ; si l'ecran s'ouvre, c'est good
Goto play ; on peut y aller
Else
SetRefreshRate(0) ; sinon, on le laisse par défaut
If OpenScreen(1024,768,32,"") ; si l'ecran s'ouvre
SetFrameRate(60) ; on limite l'affichage à 60fps via pure
EndIf
EndIf
play:
Delay(1000) ; on laisse un petit temps au prog pour se retourner...
;-------------------BOUCLE PRINCIPALE----------------------------
Repeat ; debut de la boucle
ClearScreen(0,0,0) ; on efface l'ecran
StartDrawing(ScreenOutput())
For i=1 To nbretoiles
x=512+stars(i,1)*Cos(stars (i,2)/pi2) ; calcul de l'abscisse
y=384+stars(i,1)*Sin(stars (i,2)/pi2) ; calcul de l'ordonnée
If x>0 And x<1024 And y>0 And y<768 ; si ça ne sort pas de l'écran
Plot (x,y,RGB (45,200,89))
Plot (x,y,RGB (80,255,100)) ; ; on trace l'étoile
Else
stars (i,1)= Random(10) ; sinon on ré-initialise
stars (i,2)= Random(360)
stars (i,3)= Random(10)+1
EndIf
stars(i,1)=stars(i,1)+stars(i,3) ; incrémentation du rayon
Next i
StopDrawing()
ExamineKeyboard() ; on examine l'etat du clavier
FlipBuffers() ; on bascule les buffers ( l'affichage passe sur l'ecran ouvert )
Until KeyboardPushed(#PB_Key_Escape) ; on continue tant que la touche escape n'est pas pressée.