Démo 2D - répulsion

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Guillot
Messages : 672
Inscription : jeu. 25/juin/2015 16:18

Démo 2D - répulsion

Message par Guillot »

une petite demo qui mange pas de pain
Enlever le débogueur
(vous pouvez utiliser la souris)

Code : Tout sélectionner

; mini demo 2D - répulsion - Pf Shadoko - 2023

ExamineDesktops()
Define i,j,n,rnd,a.f,l=256,ex=DesktopWidth(0),ey=DesktopHeight(0),ry.f=ey/1080,ex2=ex/2,ey2=ey/2,ex3=ex*1.5,ey3=ey*1.5

InitSprite():InitKeyboard():InitMouse()
OpenWindow(0, 0, 0, ex,ey, "", #PB_Window_BorderLess):OpenWindowedScreen(WindowID(0), 0, 0, ex,ey, 0, 0, 0)

For i=1 To 6
  CreateSprite(i,l,l,#PB_Sprite_AlphaBlending)
  StartDrawing(SpriteOutput(i))
  DrawingMode(#PB_2DDrawing_Gradient| #PB_2DDrawing_AllChannels)      
  GradientColor(0,$ffffFFFF)
  GradientColor(1,RGBA(Random(128),Random(128),Random(128),255))
  CircularGradient(l*0.3, l*0.3, l*0.5)     
  Circle(l*0.5, l*0.5, l*0.5)     
  StopDrawing()
Next

Structure spoint
  x.f
  y.f
  r.f
  m.f
  sprite.l
EndStructure

n=200
Dim p.spoint(n)
RandomSeed(4)
For i=0 To n
  With p(i)
    rndf.f=Random(999)/1000
    rnd=Int(rndf*rndf*5)+1
    If i=0:rnd=6:EndIf
    \x=Random(ex)
    \y=Random(ey)
    \r=rnd*15*ry
    \m=rnd*rnd*6000*ry*ry
    \sprite=rnd
  EndWith  
Next

Define.f f,fx,fy,   x,y,m,dx,dy,l2

MouseLocate(ex2,ey2)
Repeat
  While WindowEvent():Wend
  ExamineKeyboard():ExamineMouse()
  
  ClearScreen(RGB(0,0,0))
  
  For j=0 To n:x=p(j)\x:y=p(j)\y:m=p(j)\m:fx=0:fy=0
    For i=0 To n:If i=j:Continue:EndIf
      With p(i)
        dx=\x-x:dx=Mod(dx+ex3,ex)-ex2
        dy=\y-y:dy=Mod(dy+ey3,ey)-ey2
        l2=Sqr(dx*dx+dy*dy):If l2<10:l2=10:EndIf:f=\m/(l2*l2*l2):fx+dx*f:fy+dy*f
      EndWith
    Next
    p(j)\x=Mod(p(j)\x-fx+ex,ex)
    p(j)\y=Mod(p(j)\y-fy+ey,ey)
  Next
  
  If MouseDeltaX():mouseon=1:EndIf
  If mouseon:p(0)\x=MouseX():p(0)\y=MouseY():Else:a+0.01:p(0)\x=Cos(a)*ex/3+ex/2:p(0)\y=Sin(a)*ey/3+ey/2:EndIf
  
  For i=0 To n
    With p(i)
      ZoomSprite(\sprite,\r*2,\r*2):DisplayTransparentSprite(\sprite,\x-\r,\y-\r,255)
    EndWith
  Next
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or MouseButton(3)
Dernière modification par Guillot le jeu. 06/avr./2023 13:42, modifié 2 fois.
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Démo 2D - répulsion

Message par SPH »

Merci.

Si, elle mange du pain :wink:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
threedslider
Messages : 455
Inscription : dim. 01/juil./2018 22:38

Re: Démo 2D - répulsion

Message par threedslider »

Impressionnant ! j'aime bien ta création @Guillot !

Merci pour le partage :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Démo 2D - répulsion

Message par Ar-S »

C'est hyper fluide. :P
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Démo 2D - répulsion

Message par MLD »

C'est top comme dab :lol: :lol:
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Démo 2D - répulsion

Message par Micoute »

Oui, il n'y a pas photo.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre