Effet et démos

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Effet et démos

Message par garzul »

:D Voila ici ce seras ou je posterai tout mes effet et démos produite :) vous pourrez aussi en déposez pour echanger des effet ou astuce d'optimisation ou de simplification (Notez comme je parle bien dans cette phrase et oui !!! Car c'est la rentrer :)) Donc voila mon code simple fait en 20 minute :

Voici la lib que j'ai utiliser a renommer Math+ :

Code : Tout sélectionner

 ;*****************************************************************************
;  Fonctions sinus et cosinus en degrée
DefType.f pi 
!fldpi 
!fstp dword[v_pi] 
Declare.f gSin(winkel)
Declare.f gCos(winkel)
Declare.f Hypotenus(Cote1.f,Cote2.f)
Procedure.f gsin(winkel)                              
   ProcedureReturn Sin(winkel*0.017444)
EndProcedure
Procedure.f gCos(winkel)                              
   ProcedureReturn Cos(winkel*0.017444)
EndProcedure
Procedure.f Hypotenus(Cote1.f,Cote2.f)
  !fld dword[esp] 
  !fmul st0,st0   
  !fld dword[esp+4] 
  !fmul st0,st0   
  !faddp  
  !fsqrt  
EndProcedure
Procedure.b Sgn(n.f)
  !fld dword[esp] 
  !fstp st1 
  !ftst   
  !fnstsw ax  
  !fwait
  !xor al,al
  !sahf    
  !jz near @f
  !inc al
  !;inc instruction doesn't modify CPU C flag ;)
  !jnc near @f
  !neg al
  !@@:MOVSX eax,al 
  ProcedureReturn
EndProcedure

Voici le code de mon premier VRAI effet :) :

Code : Tout sélectionner

;Initialisation des composant

InitSprite() : InitKeyboard()
IncludeFile "Math+.pb"

;Fonction ouverture de la fenetre screen

SetRefreshRate(60)
If OpenScreen(1024,768,32,"Effet Ligne tournante dans un cercle")  ; L'écran va essayer de s'ouvrir en 60hz.  
  Goto play 
Else 
  SetRefreshRate(0)
  If OpenScreen(1024,768,32,"Effet Ligne tournante dans un cercle")  
    SetFrameRate(60) 
  EndIf
EndIf

play :
;Initialisation des variable

centrex=512
centrey=384
rayon=256
angle=0


;Debug Sin(1)


; BOUCLE
Repeat
ClearScreen(0,0,0)


;Debut du dessin du cercle

StartDrawing(ScreenOutput())
    DrawingMode(1|4)
    For anglecercle=0 To 359
        x=centrex+rayon*Sin(anglecercle*0.017444)
        y=centrey+rayon*Cos(anglecercle*0.017444)
        Plot(x,y,RGB(255,0,0))        
    Next anglecercle


;Calcul des ligne 
   x1=centrex+rayon*gSin(angle)
   y1=centrey+rayon*gCos(angle)

   
   x2=centrex+rayon*gSin(angle+250)
   y2=centrey+rayon*gCos(angle+250)

;Affichage des ligne    
   LineXY(x1,y1,x2,y2,RGB(255,255,0))
   LineXY(x2,y2,x3,y3,RGB(255,255,0))
  
   Locate(0,0):FrontColor(255,255,255):DrawText(FPS$)
StopDrawing()


angle+1
angle=angle % 360
Gosub FPS

FlipBuffers(0)
ExamineKeyboard()

;Fin du programme

Until KeyboardPushed(#PB_Key_Escape)
End

;Comptage du nombre de fps
FPS  :
If Val(FormatDate("%ss", Date()))=sek
  FPS  + 1
Else
       FPS$  = Str(FPS)
       FPS  = 1
EndIf
sek  = Val(FormatDate("%ss", Date()))
Voila par contre je voudrai savoir comment réaliser la meme chose en n'utilisant pas la lib Math+ Merci a vous 8)
Psycode
Messages : 131
Inscription : lun. 23/août/2004 18:47
Localisation : Jupiter ?

Message par Psycode »

Oui, sauf que ton code ici :

Code : Tout sélectionner

;Comptage du nombre de fps 
FPS  : 
If Val(FormatDate("%ss", Date()))=sek 
  FPS  + 1 
Else 
       FPS$  = Str(FPS) 
       FPS  = 1 
EndIf 
sek  = Val(FormatDate("%ss", Date())) 
doit devenir ceci pour que ca marche :

Code : Tout sélectionner

;Comptage du nombre de fps 
FPS: 
If Val(FormatDate("%ss", Date()))=sek 
  FPS  + 1 
Else 
       FPS$  = Str(FPS) 
       FPS  = 1 
EndIf 
sek  = Val(FormatDate("%ss", Date())) 
Return
Wait And See...
Paneric
Messages : 66
Inscription : dim. 25/janv./2004 19:03
Contact :

Message par Paneric »

voila un petit code pour vous amuser:

Code : Tout sélectionner

InitSprite()
InitKeyboard()
IncludeFile "Math+.pb"
OpenScreen(800,600,32,"")
centrex=400
centrey=300
rayon=400
angle=0:angle2=120:angle3=240
Structure sincos
    a.f
    b.f
EndStructure
Dim valeurs.sincos(360)
For i=0 To 360
    valeurs(i)\a=gsin(i)
    valeurs(i)\b=gcos(i)
Next i
r=rayon:r_d=1
Repeat
    ClearScreen(0,0,0)
 For i=0 To 1 
        StartDrawing(ScreenOutput())
        DrawingMode(4)
        LineXY(x1,y1,x2,y2,RGB(255-angle,255,angle))
        LineXY(x2,y2,x3,y3,RGB(255,255-angle,angle))
        LineXY(x3,y3,x1,y1,RGB(255,255,angle))
        Circle(x1,y1,15,RGB(255-angle,255,angle))
        Circle(x2,y2,15,RGB(255,255-angle,angle))
        Circle(x3,y3,15,RGB(255,255,angle))
        Circle(centrex,centrey,r,RGB(255,0,0))
        StopDrawing()
        x1=centrex+r*Valeurs(angle)\a
        y1=centrey+r*Valeurs(angle)\b
        x2=centrex+r*valeurs(angle2)\a
        y2=centrey+r*valeurs(angle2)\b
        x3=centrex+r*valeurs(angle3)\a
        y3=centrey+r*valeurs(angle3)\b
        angle+1
        angle2+1
        angle3+1
        angle=angle % 360
        angle2=angle2 % 360
        angle3=angle3 % 360
         r-r_d
        If r<32 Or r>rayon
            r_d=-r_d
        EndIf
    Next i
    Gosub FPS
    StartDrawing(ScreenOutput())
    DrawingMode(1)
    Locate(0,0):FrontColor(255,255,255):DrawText("Fps :"+FPS$)
    StopDrawing()
    FlipBuffers(1)
    ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
End
FPS  :
If Val(FormatDate("%ss", Date()))=sek
  FPS  + 1
Else
       FPS$  = Str(FPS)
       FPS  = 1
EndIf
sek  = Val(FormatDate("%ss", Date()))
Return
Paneric
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

demo de garzul : 64 de FPS
demo de paneric : 90 de FPS

c'est sympa tout ca ^^

Dri
Paneric
Messages : 66
Inscription : dim. 25/janv./2004 19:03
Contact :

Message par Paneric »

Merci dr dri,

il existe beaucoup de variante dérivée de ce code. je vous en prépare d'autre.

Paneric
Paneric
Messages : 66
Inscription : dim. 25/janv./2004 19:03
Contact :

Message par Paneric »

une autre variante

Code : Tout sélectionner

InitSprite()
InitKeyboard()
IncludeFile "Math+.pb"
OpenScreen(800,600,32,"")
centrex=400
centrey=300
rayon=300:r=rayon
angle.f=0
Repeat
 ClearScreen(0,0,0)
For r=rayon To 127 Step -2
        StartDrawing(ScreenOutput())
        DrawingMode(4)
        LineXY(x1,y1,x2,y2,RGB(255-angle,255,angle))
        LineXY(x2,y2,x3,y3,RGB(255,255-angle,angle))
        LineXY(x3,y3,x1,y1,RGB(255,255,angle))
        Circle(x1,y1,15,RGB(255-angle,255,angle))
        Circle(x2,y2,15,RGB(255,255-angle,angle))
        Circle(x3,y3,15,RGB(255,255,angle))
        Circle(centrex,centrey,r,RGB(255,0,0))
        StopDrawing()
        x1=centrex+r*gsin(angle)
        y1=centrey+r*gcos(angle)
        x2=centrex+r*gsin(angle+120)
        y2=centrey+r*gcos(angle+120)
        x3=centrex+r*gsin(angle+240)
        y3=centrey+r*gcos(angle+240)
        angle+4
        If angle>359.99
            angle=0
       EndIf
Next r

    Gosub FPS
    StartDrawing(ScreenOutput())
    DrawingMode(1)
    Locate(0,0):FrontColor(255,255,255):DrawText("Fps :"+FPS$)
    StopDrawing()
    FlipBuffers(1)
    ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
End
FPS  :
If Val(FormatDate("%ss", Date()))=sek
  FPS  + 1
Else
       FPS$  = Str(FPS)
       FPS  = 1
EndIf
sek  = Val(FormatDate("%ss", Date()))
Return
paneric
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

:D Genial j'aore l'effet ( Bon bah moi je vais essayer d'en faire un beaux :) ) Vraiment jolie par contre es-que quelqu-un pourai me le convertir sans la lib a paneric ? (Pour que je comprenne la trigo )
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

:D Salut comme je l'ai dit je met mes création dans ce topics (Pour ne pas polluer le forum avec plein de topics parlant de la meme chose ) Voila ma démos avec plein de math ouf (Vous en rappelez que j'etais nul en math bah oui mais vous voyez j'arrive a faire sa :) bon voici le code :

Code : Tout sélectionner

;==============CODER PAR JULIEN (Garzul) Le 4 septembre a 00 : 00==================================

;Initialisation des composant
InitSprite() : InitKeyboard()

;Inclue le fichier math +
IncludeFile "Math+.pb"

;Ouvre l'ecran
OpenScreen(1024,768,32,"Garzul Mathematique")


;Variable des figure géometrique
Centrex = 512
Centrey = 384
Rayon   = 256
Angle   = 0
Rayon2  = 150

VitRayon = 1
VitRayon2 = 2

Lignex = 55
Ligney = -100
Grosseur = 50
GrosseurVit = 1
Longeur = 50
LongeurVit = 2


Carrex = 125
Carrey = 384

axx = 290
ayy = 384

ixx  = 390
iyy  = 384

Pointxx = 394
Pointyy = 300

Demixx  = 100
Demiyy  = 600

GouTxx  = 280
GouTyy  = 600

Gouxx   = 430
Gouyy   = 600

Figxx   = 590
Figyy   = 600

Fig1x   = 750
Fig1y   = 600

Toutx   = 925
Touty   = 600
T = 0
Tvit    = 1
Declare NuanceArP()


;Initialisation des variable pour l'affichge d'arriere plan

Global Rouge,Vert,Bleu


Rouge = 0
Vert  = 0
Bleu  = 0


;Procedure de changement de couleur d'arriere plan
Procedure NuanceArP()


     Vert + 1
  
  If Rouge > 200
    Rouge  - 2
    Vert   + 1
  EndIf
  
  If Vert > 200
    Vert  - 2
    Bleu  + 1
  EndIf
  
  If Bleu > 200
    Vert = 0
    Bleu = 0
    Rouge = 0  
  EndIf
  
  
EndProcedure 

 
;Boucle
Repeat

  ClearScreen(Rouge,Vert,Bleu)


;On dessine sur l'écran

StartDrawing(ScreenOutput())

;Ecriture ecran

DrawingMode(1)
DrawText("Je dédis ce programme aux programmeur du forum de PureBasic.FR")

;dessine la figure geometrique modifier du cercle

  For AngleCercle = 0 To 359
  
    x = Centrex + Rayon * Gsin(AngleCercle + 2)
    y = Centrey + Rayon * gcos(AngleCercle * 2)
    Plot(x,y,RGB($07,$0B,$BF))
    
  Next AngleCercle  


;Dessine le cercle

    For AngleCercle = 0 To 359
  
      b = Centrex + Rayon2 * Gsin(AngleCercle)
      n = Centrey + Rayon2 * Gcos(AngleCercle)
      Plot(b,n,RGB($07,$0B,$BF))
    
    Next AngleCercle  


;Dessine le scan line

      For Ligne = 0 To 60
      
      
        Lix = Lignex + Longeur * Sin(Ligne)
        Liy = Ligney + Grosseur * Cos(Ligne)
        Line(Lix,Liy,918,0,RGB($EA,$28,$15))
      
      Next Ligne
  
  
     ;Ecriture mathematique de "Moi Garzul "
           For Carrer = 0 To 200
      
      
             Carx = Carrex + 80 * Sin(Carrer * 2)
             Cary = Carrey + 80 * Cos(Carrer * 8)
             
             Plot(Carx,Cary,RGB($87,$1D,$78))
      
          Next Carrer
 
            For o = 0 To 20000
      
      
              ax = axx + 80 * Sin(o) * Cos(o / 200)
              ay = ayy + 80 * Cos(o)
             
              Plot(ax,ay,RGB($87,$1D,$78))
              
            Next o

              For i = 0 To 150
      
                ix = ixx + 2 * Sin(i)
                iy = iyy + 70 * Cos(i)
             
                Line(ix,iy,10,2,RGB($87,$1D,$78))
              
              Next i


                For Pointi = 0 To 500
      
                  Pointix = Pointxx + 5 * Sin(Pointi) * Cos(Pointiy)
                  Pointiy = Pointyy + 5 * Cos(pointi) * Sin(Pointix)
             
                  Plot(Pointix,Pointiy,RGB($87,$1D,$78))
              
                Next Pointi


;-Logos
;Ecriture de Logo(Losange)+Logo autre

                  For DemiCercle = 0 To 500
      
                    Demix = Demixx + 80 * Sin(DemiCercle) * Cos(DemiCercle / 20)
                    Demiy = Demiyy + 80 * Cos(DemiCercle) * Sin(DemiCercle / 20)
             
                    Plot(Demix,Demiy,RGB($E5,$E9,$1A))
              
                  Next DemiCercle  


                    For Goutte = 0 To 300
      
                      GouTx = GouTxx + 80 * Sin(Goutte) * Cos(Goutte * 1)
                      GouTy = GouTyy + 80 * Cos(Goutte) * Sin(Goutte * 2)
             
                      Plot(GouTx,GouTy,RGB($18,$11,$E7))
              
                    Next Goutte


                      For Goute = 0 To 300
      
                        Goux = Gouxx + 80 * Sin(Goute) * Cos(Goute / 2)
                        Gouy = Gouyy + 80 * Cos(Goute)
             
                        Plot(Goux,Gouy,RGB($3E,$E5,$C1))
              
                      Next Goute


                        For Figur = 0 To 300
      
                          Figx = Figxx + 80 * Sin(Figur) * Cos(Figur * 3)
                          Figy = Figyy + 80 * Cos(Figur) * Sin(Figur * 4)
             
                          Plot(Figx,Figy,RGB($A3,$F6,$5C))
              
              
                        Next Figur
                        
                        
                            For Figu1 = 0 To 300
      
                              Fi1x = Fig1x + 80 * Sin(Figu1) * Cos(Figu1 * 3)
                              Fi1y = Fig1y + 80 * Cos(Figu1)
                              
                              Plot(Fi1x,Fi1y,RGB($7F,$18,$80))
              
                            Next Figu1
                            
                            ; Tout effet
                            ; Tout Les effet en meme temps et plus 
                            For Tout = 0 To 300
      
                              Touta= Toutx + 80 * Sin(Tout) * Cos(Tout * t)
                              Toutb= Touty + 80 * Cos(Tout)
                              
                              Plot(Touta,Toutb,RGB($B8,$21,$47))
              
                            Next Tout

StopDrawing()


;Grossisement des figure au centre de l'ecran (Cercle + CercleCouper)
Rayon - VitRayon

If Rayon < 5

   VitRayon =- VitRayon
   
EndIf   

 
If Rayon > 300

   VitRayon =- VitRayon
   
EndIf   


Rayon2 - VitRayon2

If Rayon2 < 20

   VitRayon2 =- VitRayon2

EndIf
    
If Rayon2 > 300

   VitRayon2 =- VitRayon2
   
EndIf
       

;-Avance des ligne

Longeur + LongeurVit

If Longeur > 150

   LongeurVit = - LongeurVit
   
EndIf

If Longeur < - 150

   LongeurVit = - LongeurVit
   
EndIf
   
Grosseur + GrosseurVit

If Grosseur > 150

   GrosseurVit =- GrosseurVit
   
EndIf
   
If Grosseur < 49

   GrosseurVit =- GrosseurVit
EndIf

 
  Ligney + 3
  
  If Ligney > 900
  
    Ligney - Ligney
    
  EndIf 
   
   
   ;Actualisation des figure géometrique
   t + Tvit
   If t > 100
   
      tvit =- Tvit
      
   EndIf
   
   If t < -1
   
      Tvit =- Tvit
      
   EndIf
   
   
   ;aFFICHAGE DE LA PROCEDURE 
  NuanceArP()

;Inversement des buffer videos
  FlipBuffers()


;Fin du programme (OUF)^^
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
End
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

@paneric
c'est une spirale (ultra) de la mort lol
d'ailleurs t'as aussi tué le FPS (15) super en tout cas

@garzul
c'est sympa ton truc, un peu bordelique à regarder lol
il m'a fallu un petit bout de temps pour tout distinguer ^^

Dri
garzul
Messages : 683
Inscription : mer. 26/mai/2004 0:33

Message par garzul »

:D Merci dri mais bon vu le nombre de remerciement que j'ai sa doit pas etres super lol bon c'est pas tout mais je retourne coder :D
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Nana c'est très sympa Garzul :D , mais on a pas forcément des réponses surs tous nos sujets (regarde mon bot irc ou mon serveur pop)
Paneric
Messages : 66
Inscription : dim. 25/janv./2004 19:03
Contact :

Message par Paneric »

@dr dri
je suis étonné que tu soit à 15 FPS chez moi je suis à 60 FPS.
Merci quand même, je n'ai rien optimisé. Ces codes était pour montrer à Garzul quelques effets avec des lignes et cercles. et lui donner l'envie de montrer ce qu'il pouvait en tirer.

@Garzul,
Il est vrai que cela est un peu fouilli mais j'aime bien ce tu as fait.

Paneric
Répondre