etoiles scintillantes

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

etoiles scintillantes

Message par Zorro »

un code avait deja été fait sur ce sujet,

voici ma version :)

Code : Tout sélectionner

;***********************************************
;Titre  :*etoiles_scintillantes
;Auteur  : Zorro
;Date  :25/10/2016
;Heure  :11:42:32
;Version Purebasic :  PureBasic 5.50 (Windows - x86)
;Version de l'editeur :EPB V2.64
; Libairies necessaire : Aucune 
;***********************************************

Enumeration
		#window = 0
EndEnumeration
ExamineDesktops()
Global Width=DesktopWidth(0)
Global Height =DesktopHeight(0)
Global nbr_etoiles=1500  ; << on peut changer le nombre d'etoiles
Global Taille_etoile=1 ; << on peut changer la taille des etoiles
; #Width = 800
; #Height = 600

Structure Stars
		x.i
		y.i
		couleur.i	
EndStructure
Global Dim Stars.Stars(nbr_etoiles)

For i=1 to nbr_etoiles
		Stars(i)\x.i=Random(Width-1,1)
		Stars(i)\y.i=Random(Height-1,1)	
		cr.f=Random(255,50)
		cv.f=Random(255,25)
		cb.f=Random(255,12)	
		Stars(i)\couleur.i=Rgb(cr,cv,cb)	
Next i	
;- Initialisation de DirectX
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
		MessageRequester("Erreur", "Impossible d'initialiser DirectX", 0)
		CloseWindow(#window) : End
EndIf

;- Ouverture de la fenetre et de l'écran
hwnd = OpenWindow(#window, 0, 0,  Width, Height, "",#PB_Window_BorderLess   )
OpenWindowedScreen(hwnd, 0, 0, Width, Height, 0, 0, 0)
;- début de la boucle

Repeat
		ExamineMouse()  ; on demande a purebasic de surveiller les event de souris !
		ExamineKeyboard() ; on demande a purebasic de surveiller les event de clavier!
		evnt=WaitWindowEvent(2)
		Select evnt				
		Case #PB_Event_CloseWindow 
				End 
		EndSelect
		
		;- dessin des etoiles
		StartDrawing(ScreenOutput())
				For i=1 to nbr_etoiles 
						; Alea
						de=random(3,1)
						select de 
						Case 1
								cr.f=cr.f+ Sin(degree(i))*10
						Case 2
								cv.f=cv.f+Sin(degree(i))*10
						Case 3
								cb.f=cb.f+Sin(degree(i))	*10
						EndSelect
						if cv>255:cv=255:Endif
						if cb>255:cb=255:Endif
						if cr<25:cr=25:Endif
						if cv<25:cv=25:Endif
						if cb<25:cb=25:Endif
						Stars(i)\couleur.i=Rgb(cr,cv,cb)
						circle(Stars(i)\x.i,Stars(i)\y.i,Taille_etoile,Stars(i)\couleur.i)
				Next i
		StopDrawing()
		StartDrawing(ScreenOutput())
				DrawText(10, 10, "touche ESC pour quitter" ,RGB(255,255,0),RGB(0,0,0))
		StopDrawing()
		FlipBuffers() : ClearScreen(RGB(0,0,0))
		Delay(50)
Until KeyboardPushed(#PB_Key_Escape)


; 
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Demivec
Messages : 90
Inscription : sam. 18/sept./2010 18:13

Re: etoiles scintillantes

Message par Demivec »

Zorro a écrit :un code avait deja été fait sur ce sujet,

voici ma version :)
Merci.

Si vous autorisez, voici ma version aussi :) :

Code : Tout sélectionner

;***********************************************
;Titre  :*etoiles_scintillantes
;Auteur  : Zorro
;Date  :25/10/2016, mettre à jour: Demivec 31/10/2016
;Heure  :11:42:32
;Version Purebasic :  PureBasic 5.50 (Windows - x86)
;Version de l'editeur :EPB V2.64
; Libairies necessaire : Aucune 
;***********************************************
EnableExplicit
Enumeration
      #window = 0
EndEnumeration
ExamineDesktops()
Global Width=DesktopWidth(0)
Global Height =DesktopHeight(0)
Global nbr_etoiles = Width * Height / 1000  ; << on peut changer le nombre d'etoiles
;Global Taille_etoile=1   ; << on peut changer la taille des etoiles
; #Width = 800
; #Height = 600

Enumeration 1
  #taille_petit
  #taille_moyenne
  #taille_grand
EndEnumeration


Structure Stars
      x.i
      y.i
      couleur.i 
      couleurVar.i ;varience
      taille.i 
      luminosite.i ; pour niveau de gris (0 - 255)
      minLuminosite.i
      maxLuminosite.i
EndStructure
Global Dim Stars.Stars(nbr_etoiles)

Define i, hwnd, evnt, de

For i=1 To nbr_etoiles
  With Stars(i)
      \x.i=Random(Width-1,1)
      \y.i=Random(Height-1,1)   

      Select Random(99)
        Case 0 To 77
          \taille = #taille_petit
        Case 78 To 98
          \taille = #taille_moyenne
        Case 99 To 99
          \taille = #taille_grand
      EndSelect
      
      \minLuminosite = Random(63)
      \maxLuminosite = Random(195 + 10 * \taille, 195 - 90 + 10 * \taille)
      \luminosite = Random(\maxLuminosite, \minLuminosite)
      \couleurVar.i = Random(50, 15)
      \couleur = RGB(\luminosite - Random(\couleurVar),
                     \luminosite - Random(\couleurVar),
                     \luminosite - Random(\couleurVar))
    EndWith
Next i   
;- Initialisation de DirectX
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
      MessageRequester("Erreur", "Impossible d'initialiser DirectX", 0)
      CloseWindow(#window) : End
EndIf

;- Ouverture de la fenetre et de l'écran
hwnd = OpenWindow(#window, 0, 0,  Width, Height, "",#PB_Window_BorderLess   )
OpenWindowedScreen(hwnd, 0, 0, Width, Height, 0, 0, 0)

AddWindowTimer(#window, 0, 50)

;- début de la boucle
Repeat
      ExamineMouse()  ; on demande a purebasic de surveiller les event de souris !
      ExamineKeyboard() ; on demande a purebasic de surveiller les event de clavier!
      
      Repeat
        evnt=WindowEvent()
        Select evnt 
          Case #PB_Event_Timer
            If EventTimer() = 0
              For i=1 To nbr_etoiles 
                 With Stars(i)
                    Select \taille
                      Case #taille_petit
                        de = 10000
                      Case #taille_moyenne
                        de = 300
                      Case #taille_grand
                        de = 1
                    EndSelect
  
                    If Random(90000, de) > 89000
                      \luminosite = Random(\maxLuminosite, \minLuminosite)
                    EndIf
                    
                    If Random(5) > 4
                      \couleur = RGB(\luminosite - Random(\couleurVar),
                                     \luminosite - Random(\couleurVar),
                                     \luminosite - Random(\couleurVar))
                    EndIf
                  EndWith
                  
                Next
            EndIf
            
            Case #PB_Event_CloseWindow 
              End 
          EndSelect
        Until evnt = 0
        
      ;- dessin des etoiles
      StartDrawing(ScreenOutput())
            For i=1 To nbr_etoiles 
               Circle(Stars(i)\x, Stars(i)\y, Stars(i)\taille, Stars(i)\couleur)
            Next i
      StopDrawing()
      StartDrawing(ScreenOutput())
            DrawText(10, 10, "touche ESC pour quitter" ,RGB(255,255,0),RGB(0,0,0))
      StopDrawing()
      FlipBuffers() : ClearScreen(RGB(0,0,0))
      
Until KeyboardPushed(#PB_Key_Escape)
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: etoiles scintillantes

Message par falsam »

Mince ...... pas d'étoiles filantes ce soir ^^

Merci pour vos codes.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre