Page 1 sur 2

Idée de concours, aide pour la communauté

Publié : sam. 05/juin/2004 13:57
par Crystal Noir
Que diriez vous d'un petit concours ? Genre quelques chose qui ne se fait pas en très longtemps et qui pourrait aider la communauté Pure :o

J'avais déjà une idée. Il ya quelques temps moi même je cherchais des algos permettant de faire des effets sinusoidales de texte :)

Je sais que Keph a un algo pas mal du tout, Marcus aussi mais le fait autrement. J'avais dans l'idée de faire un petit concours sur ce sujet, un concours qui se baserait sur ces effets, en essayant de proposer vos algos pour ce genre d'effets.

En plus ca pourrait aider la communauté à comprendre quelques notions mais aussi de voir qu'il est possible de faire des effets de manière très différentes. Donc au final ca donne plusieurs solutions aux coders et c toujours superbe de pouvoir présenter ses connaissances et faire partager son expérience.

Qu'en pensez vous ?

Publié : sam. 05/juin/2004 14:10
par fweil
A quel genre de résultat / d'effet tu penses ? Je ne sais pas ce que Marcus et Keph ont fait.

M'intéresse moi ce genre d'amusement ...

Publié : sam. 05/juin/2004 17:37
par Crystal Noir
Personne d'autre n'est intéressé ? 8O

Publié : sam. 05/juin/2004 18:18
par Le Soldat Inconnu
ben, franchement, si fweil participe, on a perdu d'avance :mrgreen: j'ai vu les images sur sont sites, y'a de quoi prendre peur :D

non pourquoi pas :wink:

Publié : sam. 05/juin/2004 19:45
par KarLKoX
Pis c'est trop spécifique : perso, je n'ai jamais fait de programmation graphique tout simplement parce que ca ne m'interesse pas (pour le moment) :)
Il faudrait un truc qui serait plus générique et qui serait à même d'englober un maximum de participant.

Publié : sam. 05/juin/2004 19:51
par Heis Spiter
Je suis tout a fait d'accord avec KarLKoX ! En programmation de jeu, je ne peux rien faire... Mes compétences mathématiques n'étant (pas encore) assez développées. (Mais en mode fenêtre ou console, je n'ai aucun égale telement je suis fort 8) )
Il faudrait effectivement quelque chose où tout le monde puisse participer sans handicap de départ. Il est vrai qu'ils y en a qui sont plus intelligents (moi : QI : 250), et d'autres qui ont de meilleurs connaissances en programmation. Mais je pense que cela peut-être effacé par la facilté de Pure. De plus, je vois mal un crétin (a part Fwil : QI : -120 :mrgreen: ) programmer.
Mais a part ca je suis plutôt pour... A part que cela avait déjà était tenté par ced et que cela avait été un grand FLOP.

Publié : sam. 05/juin/2004 22:35
par Le Soldat Inconnu
Ben 3 participants dont moi ....

peut-être que c'est pas un concours qu'il faut faire mais lancer un code ou une idée qui intéresse du monde et que chacun puisse compléter, modifier, améliorer. un peu comme ce qu'on a fait spontanément avec Matrix ou pour dessinner les engrenages. quand un sujet par comme ça, c'est super, on aprend les trucs des autres, on découvre de nouvelle idée, etc ... :D

à voir

Publié : sam. 05/juin/2004 22:53
par Crystal Noir
exactement :D

Publié : dim. 06/juin/2004 12:31
par fweil
Bon ben je pose un truc ... de ouf !

Sais pas si ça plaira pour essayer d'en tirer qq chose de mieux. On verra bien.

Et si c'est nul , vu mon QI négatif, tant pis.

Je suis parti de ce truc là qui est assez aware ...

Code : Tout sélectionner

  StepInc.f = 0.00001
  MaxPoints = 10000
  AngleLimit.f = 100.0
  ScreenXSize = GetSystemMetrics_(#SM_CXSCREEN) : ScreenYSize = GetSystemMetrics_(#SM_CYSCREEN) : ScreenDepth = 32
  Zoom.f = 1.0
  XStep.f = Random(10000) / 10000000 : YStep.f = Random(10000) / 10000000 : ZStep.f = Random(10000) / 10000000
  XStepInc.f = StepInc : YStepInc.f = StepInc : ZStepInc.f = StepInc
  AngleX.f = 0.0 : AngleY.f = 0.0 : AngleZ.f = 0.0
  XC.l = ScreenXSize / 2 : YC.l = ScreenYSize / 2
  Quit = #FALSE
  If InitSprite() And InitSprite3D() And InitKeyboard() And InitMouse()
      If OpenScreen(ScreenXSize, ScreenYSize, ScreenDepth, "Screen")
          Repeat
            FlipBuffers()
            ClearScreen(0, 0, 0)
            StartDrawing(ScreenOutput())
              For Point = 1 To MaxPoints
                AngleX + XStep : If AngleX < -AngleLimit Or AngleX > AngleLimit : XStep = -XStep : EndIf
                AngleY + YStep : If AngleY < -AngleLimit Or AngleY > AngleLimit : YStep = -YStep : EndIf
                AngleZ + ZStep : If AngleZ < -AngleLimit Or AngleZ > AngleLimit : ZStep = -ZStep : EndIf
                CX.f = Cos(AngleX) : SX.f = Sin(AngleX) : CY.f = Cos(AngleY) : SY.f = Sin(AngleY) : CZ.f = Cos(AngleZ) : SZ.f = Sin(AngleZ)
                x = Zoom * ((SY * SY) * (SX * SZ * CZ * CY * ((CX + SZ * CX - SX * SX) + SX * SY * CX) - (SY * CX * CX) * (SZ + CZ)))
                y = Zoom * ((SX * SY * SY * CX * CZ * CZ) * (CX + SZ * CX - SX))
                If x > -XC And x < XC And y > -YC And y < YC
                    Distance.f = Sqr(x * x + y * y) / XC : x + XC : y + YC
                    Color = RGB(255 - 256 * Distance, 128 - 128 * Distance, 256 * Distance)
                    Plot(x, y, Color) : Plot(x - 1, y, Color) : Plot(x + 1, y, Color) : Plot(x, y - 1, Color) : Plot(x, y + 1, Color)
                EndIf
              Next
              Locate(10, 10)
              DrawText("FPS=" + Str(FPS) + " Zoom=" + Str(Zoom) + " StepInc=" + StrF(StepInc, 5))
            StopDrawing()
            XStep + XStepInc : If XStep < 0 Or XStep > 0.1 : XStepInc = -XStepInc : EndIf
            YStep + YStepInc : If YStep < 0 Or YStep > 0.1 : YStepInc = -YStepInc : EndIf
            ZStep + ZStepInc : If ZStep < 0 Or ZStep > 0.1 : ZStepInc = -ZStepInc : EndIf
            ExamineKeyboard()
            If KeyboardPushed(#PB_Key_Escape) : Quit = #TRUE : EndIf
            If KeyboardPushed(#PB_Key_Left) : Zoom * 0.95 : EndIf
            If KeyboardPushed(#PB_Key_Right) : Zoom * 1.05 : EndIf
            If KeyboardPushed(#PB_Key_Up) : StepInc * 1.05 : EndIf
            If KeyboardPushed(#PB_Key_Down) : StepInc * 0.95 : EndIf
            If ElapsedMilliseconds() - tz => 1000 : FPS = NFrames : NFrames = 0 : tz = ElapsedMilliseconds() : EndIf
            If Zoom > 280 : Zoom * 0.98 : EndIf : If Zoom < 280 : Zoom * 1.02 : EndIf
            NFrames + 1
          Until Quit
          CloseScreen()
      EndIf
  EndIf
End
et comme il était question de mettre des caractères, j'ai modifié en ça :

Code : Tout sélectionner

  StepInc.f = 0.0001
  MaxPoints = 40
  AngleLimit.f = 100.0
  ScreenXSize = GetSystemMetrics_(#SM_CXSCREEN) : ScreenYSize = GetSystemMetrics_(#SM_CYSCREEN) : ScreenDepth = 32
  Zoom.f = 20.0 : ZoomLimit.l = 240
  XStep.f = Random(100) / 10000000 : YStep.f = Random(100) / 10000000 : ZStep.f = Random(100) / 10000000
  XStepInc.f = StepInc : YStepInc.f = StepInc : ZStepInc.f = StepInc
  AngleX.f = 0.0 : AngleY.f = 0.0 : AngleZ.f = 0.0
  XC.l = ScreenXSize / 2 : YC.l = ScreenYSize / 2
  Quit = #FALSE
  If InitSprite() And InitSprite3D() And InitKeyboard() And InitMouse()
      If OpenScreen(ScreenXSize, ScreenYSize, ScreenDepth, "Screen")
          For Sprite = 0 To 255
            CreateSprite(Sprite, 32, 32, #PB_Sprite_Texture)
            StartDrawing(SpriteOutput(Sprite))
              DrawingFont(LoadFont(23, "Verdana", 16, #PB_Font_HighQuality))
              DrawingMode(1)
              Locate(5, 5)
              FrontColor(10, 10, 10)
              FrontColor(255, 255, 255)
              DrawText(Chr(Sprite))
            StopDrawing()
          Next
          Text.s = "Avec PureBasic c'est moins difficile et c'est plus rigolo ..."
          Text.s = "PureBasic"
          LText = Len(Text)
          Repeat
            FlipBuffers()
            ClearScreen(0, 0, 0)
            For Point = 1 To MaxPoints
              AngleX + XStep : If AngleX < -AngleLimit Or AngleX > AngleLimit : XStep = -XStep : EndIf
              AngleY + YStep : If AngleY < -AngleLimit Or AngleY > AngleLimit : YStep = -YStep : EndIf
              AngleZ + ZStep : If AngleZ < -AngleLimit Or AngleZ > AngleLimit : ZStep = -ZStep : EndIf
              CX.f = Cos(AngleX) : SX.f = Sin(AngleX) : CY.f = Cos(AngleY) : SY.f = Sin(AngleY) : CZ.f = Cos(AngleZ) : SZ.f = Sin(AngleZ)
              x = Zoom * (SX + SY) * (SX + SZ) * (CX * CY) * (CX + CZ)
              y = Zoom * (CX + CY) * (CX + CZ) * (SX * SY) * (SX + SZ)
              If x > -XC And x < XC And y > -YC And y < YC
                  Sprite + 1
                  Sprite % LText
                  Distance.f = Sqr(x * x + y * y) / XC : x + XC : y + YC
                  Color = RGB(255 - 256 * Distance, 128 - 128 * Distance, 256 * Distance)
                  DisplayRGBFilter(x, y, 32, 32, 255 - 256 * Distance, 128 - 128 * Distance, 256 * Distance)
                  DisplayTransparentSprite(Asc(Mid(Text, Sprite, 1)), x, y)
              EndIf
            Next
            XStep + XStepInc : If XStep < 0 Or XStep > 0.1 : XStepInc = -XStepInc : EndIf
            YStep + YStepInc : If YStep < 0 Or YStep > 0.1 : YStepInc = -YStepInc : EndIf
            ZStep + ZStepInc : If ZStep < 0 Or ZStep > 0.1 : ZStepInc = -ZStepInc : EndIf
            ExamineKeyboard()
            If KeyboardPushed(#PB_Key_Escape) : Quit = #TRUE : EndIf
            If KeyboardPushed(#PB_Key_Left) : Zoom * 0.95 : EndIf
            If KeyboardPushed(#PB_Key_Right) : Zoom * 1.05 : EndIf
            If KeyboardPushed(#PB_Key_Up) : StepInc * 1.05 : EndIf
            If KeyboardPushed(#PB_Key_Down) : StepInc * 0.95 : EndIf
            If Zoom > ZoomLimit : Zoom * 0.98 : EndIf : If Zoom < ZoomLimit : Zoom * 1.02 : EndIf
          Until Quit
          CloseScreen()
      EndIf
  EndIf
End

Publié : dim. 06/juin/2004 12:39
par comtois
J'aime bien le truc avec les caractères, c'est dommage qu'on ait pas le temps de lire :)

Publié : dim. 06/juin/2004 12:41
par fweil
ben oui mais là faut chercher des modifs pour arriver à ralentir le truc ... dans la version trait c'est joli ... mais en version texte j'arrive pas à rétrograder ... changement de vitesse foutu.

Publié : dim. 06/juin/2004 13:01
par Backup
j'aime bien le motion blur !!

par contre le text ? quel text ??

mem en mettant delay(1)
juste apre l'affichage je ne vois qu'un carre !!! :(

trouvé !!!
fo remplacer DisplaytransparentSprite
par DisplaySprite !!! :D

pour ralentir tu met un Delay(80) avant la fin de boucle !

et hop !! un extincteur d'ecran de plus !! :lol:

Code : Tout sélectionner

;
; ici les initialisations des variables et tableaux 
;"/s" pour le lancer
;"/c:" + un nombre pour le faire Paramétrer
;"/p", espace, et un nombre qd son nom est simplement séletionné dans la boîte des propriétés du bureau

;Sinon, un truc tout con:
;Code:

;OpenConsole()
;p$=ProgramParameter()
;While p$
;    PrintN(p$)
;    p$=ProgramParameter()
;Wend
;Input()
 
;
Enumeration
    #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
    #code
    #Text_0
EndEnumeration
Procedure Open_Window_0()
    If OpenWindow(#Window_0, 293, 129, 249, 109,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "config")
        If CreateGadgetList(WindowID())
            StringGadget(#code, 40, 50, 170, 30, "", #PB_String_Password)
            TextGadget(#Text_0, 10, 20, 90, 20, "ENTREZ le Code")
        EndIf
    EndIf
EndProcedure




#Police=1
;*********** pour le screensaver
Param.s = Left(ProgramParameter(), 2)
If Param = "/p"
    End
EndIf

If Param = "/c" :;l'utilisateur veut paramettrer le screensaver !
    Open_Window_0():; jouvre ma fenetre ( cree a partir de visual designer)
    Repeat
        Texte$ = GetGadgetText(#code):;je recupere le contenu de ma boite de config
        If Texte$="dobro":;si le gars tappe le code "dobro"
            dobro=1:; c'est bon on affiche pas la surimpression
            code$="ok":;on se prepare a ecrire le mot "ok" dans un fichier
            Resultat = OpenFile(1, "matrix.ini") :;on cree le fichier
            WriteStringN(code$) :; on ecrit dedans "ok"
            CloseFile(1)
        Else
            dobro=0:; la le mec a pas rentré le bon code
        EndIf
    Until WindowEvent() = #PB_Event_CloseWindow :; le gars a fermé la boite de config
EndIf

GetCursorPos_(SourisOrigine.POINT)
ShowCursor_(0)
; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)

If ReadFile(1, "matrix.ini"):;en temps normal on commence par regarder si le screen saver est enregistré
    code$ = ReadString() :; on lit le contenu de "matrix.ini"
    CloseFile(1)
EndIf
 
If code$="ok":; bon le gars est enregistré
    dobro=1:; ce flag va retirer la surimpression
Else
    dobro=0:; il n'est pas enregistrer donc on affiche la surimpression
EndIf
;************ c'est tout pour le parametrage du screen saver



GetCursorPos_(SourisOrigine.POINT)
ShowCursor_(0)
; ***********************************
Resultat = InitSprite()
Resultat = InitSprite3D() 
FontID = LoadFont(#Police, "system", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)
ScreenXSize=EcranX
ScreenYSize=EcranY

;NbSprite = EcranX / 40 * 3
NbSprite =12
OpenWindow(1, 0, 0, EcranX, EcranY, #PB_Window_BorderLess | #PB_Window_Invisible, "Dos 3.10")
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; fenêtre toujours au premier plan
OpenWindowedScreen(WindowID(), 0, 0, EcranX, EcranY, 1, 0, 0)

; faire ici les initialisations du pre affichage
StepInc.f = 0.0001
MaxPoints = 40
AngleLimit.f = 100.0
;ScreenXSize = GetSystemMetrics_(#SM_CXSCREEN) : ScreenYSize = GetSystemMetrics_(#SM_CYSCREEN) : ScreenDepth = 32
Zoom.f = 20.0 : ZoomLimit.l = 240
XStep.f = Random(100) / 10000000 : YStep.f = Random(100) / 10000000 : ZStep.f = Random(100) / 10000000
XStepInc.f = StepInc : YStepInc.f = StepInc : ZStepInc.f = StepInc
AngleX.f = 0.0 : AngleY.f = 0.0 : AngleZ.f = 0.0
XC.l = ScreenXSize / 2 : YC.l = ScreenYSize / 2
Quit = #False
If InitSprite() And InitSprite3D() And InitKeyboard() And InitMouse()
   
        For Sprite = 0 To 255
            CreateSprite(Sprite, 32, 32, #PB_Sprite_Texture)
            StartDrawing(SpriteOutput(Sprite))
            DrawingFont(LoadFont(23, "arial", 16, #PB_Font_HighQuality))
            DrawingMode(1)
            Locate(5, 5)
            FrontColor(10, 10, 10)
            FrontColor(255, 255, 255)
            DrawText(Chr(Sprite))
            StopDrawing()
        Next
        Text.s = "Avec PureBasic c'est moins difficile et c'est plus rigolo ..."
        Text.s = "PureBasic"
        LText = Len(Text)
  
EndIf




Repeat :;boucle principale
    
    For Point = 1 To MaxPoints
        AngleX + XStep : If AngleX < -AngleLimit Or AngleX > AngleLimit : XStep = -XStep : EndIf
        AngleY + YStep : If AngleY < -AngleLimit Or AngleY > AngleLimit : YStep = -YStep : EndIf
        AngleZ + ZStep : If AngleZ < -AngleLimit Or AngleZ > AngleLimit : ZStep = -ZStep : EndIf
        CX.f = Cos(AngleX) : SX.f = Sin(AngleX) : CY.f = Cos(AngleY) : SY.f = Sin(AngleY) : CZ.f = Cos(AngleZ) : SZ.f = Sin(AngleZ)
        x = Zoom * (SX + SY) * (SX + SZ) * (CX * CY) * (CX + CZ)
        y = Zoom * (CX + CY) * (CX + CZ) * (SX * SY) * (SX + SZ)
        If x > -XC And x < XC And y > -YC And y < YC
            Sprite + 1
            Sprite % LText
            Distance.f = Sqr(x * x + y * y) / XC : x + XC : y + YC
            Color = RGB(255 - 256 * Distance, 128 - 128 * Distance, 256 * Distance)
            DisplayRGBFilter(x, y, 32, 32, 255 - 256 * Distance, 128 - 128 * Distance, 256 * Distance)
            DisplayTransparentSprite(Asc(Mid(Text, Sprite, 1)), x, y)
           ;DisplaySprite(Asc(Mid(Text, Sprite, 1)), x, y)
        EndIf
    Next
    XStep + XStepInc : If XStep < 0 Or XStep > 0.1 : XStepInc = -XStepInc : EndIf
    YStep + YStepInc : If YStep < 0 Or YStep > 0.1 : YStepInc = -YStepInc : EndIf
    ZStep + ZStepInc : If ZStep < 0 Or ZStep > 0.1 : ZStepInc = -ZStepInc : EndIf
    ExamineKeyboard()
    If KeyboardPushed(#PB_Key_Escape) : Quit = #True : EndIf
    If KeyboardPushed(#PB_Key_Left) : Zoom * 0.95 : EndIf
    If KeyboardPushed(#PB_Key_Right) : Zoom * 1.05 : EndIf
    If KeyboardPushed(#PB_Key_Up) : StepInc * 1.05 : EndIf
    If KeyboardPushed(#PB_Key_Down) : StepInc * 0.95 : EndIf
    If Zoom > ZoomLimit : Zoom * 0.98 : EndIf : If Zoom < ZoomLimit : Zoom * 1.02 : EndIf
    FlipBuffers()
    ClearScreen(0, 0, 0)
    GetCursorPos_(Souris.POINT):; test le curseur de la souris
   
Until WindowEvent() = #PB_Event_CloseWindow Or Souris\x <> SourisOrigine\x Or Souris\y <> SourisOrigine\y
ShowCursor_(1)

Publié : dim. 06/juin/2004 13:12
par cederavic
oui, c'est vachement trop rapide...

voilas mon idée moi :

Code : Tout sélectionner

InitSprite()
InitKeyboard()

OpenScreen(800, 600, 32, "")

text.s = "PureBasic : La puissance a l'état pure!!!!"
l = Len(text)
text = Space(50 - l) + text

Repeat

  ExamineKeyboard()
  
  ClearScreen(0, 0, 0)
  
    StartDrawing(ScreenOutput())
      
      f.f + 0.02
      For t = 0 To 50
        h.f = f + (t / 10)
       
        lx.f = 400 * Cos(h)
        lz.f = 100 * Sin(-h / h)
        ly.f = 400 * Sin(-h) * Cos(h)
      
        px = (lx * 256) / (lz - 256) + 400
        py = (ly * 256) / (lz - 256) + 300
        
        If px > 0 And px < 800 And py > 0 And py < 600
          c = t * 100 / 255
          DrawingMode(4)
          Circle(px, py, 10, RGB(c * 10, c * 8, c * 12))
          Locate(px - 2, py - 8)
          DrawingMode(1)
          FrontColor(32, 64, 196)
          DrawText(Mid(text, 50 - t + (50 - l + 1), 1))
        EndIf
        
      Next
    
    StopDrawing()
    
  FlipBuffers()

Until KeyboardPushed(#PB_Key_Escape)
:)

Publié : dim. 06/juin/2004 13:19
par Backup
BRAVO !! CEDERAVIC !! :D

Le meme en screen saver !!! :lol:

Je suis le forgeron du screen-saver !!! :D

Code : Tout sélectionner

; 
; ici les initialisations des variables et tableaux 
;"/s" pour le lancer
;"/c:" + un nombre pour le faire Paramétrer
;"/p", espace, et un nombre qd son nom est simplement séletionné dans la boîte des propriétés du bureau

;Sinon, un truc tout con:
;Code:

;OpenConsole()
;p$=ProgramParameter()
;While p$
;    PrintN(p$)
;    p$=ProgramParameter()
;Wend
;Input()
 
;
Enumeration
    #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
    #code
    #Text_0
EndEnumeration
Procedure Open_Window_0()
    If OpenWindow(#Window_0, 293, 129, 249, 109,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "config")
        If CreateGadgetList(WindowID())
            StringGadget(#code, 40, 50, 170, 30, "", #PB_String_Password)
            TextGadget(#Text_0, 10, 20, 90, 20, "ENTREZ le Code")
        EndIf
    EndIf
EndProcedure




#Police=1
;*********** pour le screensaver
Param.s = Left(ProgramParameter(), 2)
If Param = "/p"
    End
EndIf

If Param = "/c" :;l'utilisateur veut paramettrer le screensaver !
    Open_Window_0():; jouvre ma fenetre ( cree a partir de visual designer)
    Repeat
        Texte$ = GetGadgetText(#code):;je recupere le contenu de ma boite de config
        If Texte$="dobro":;si le gars tappe le code "dobro"
            dobro=1:; c'est bon on affiche pas la surimpression
            code$="ok":;on se prepare a ecrire le mot "ok" dans un fichier
            Resultat = OpenFile(1, "matrix.ini") :;on cree le fichier
            WriteStringN(code$) :; on ecrit dedans "ok"
            CloseFile(1)
        Else
            dobro=0:; la le mec a pas rentré le bon code
        EndIf
    Until WindowEvent() = #PB_Event_CloseWindow :; le gars a fermé la boite de config
EndIf

GetCursorPos_(SourisOrigine.POINT)
ShowCursor_(0)
; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)

If ReadFile(1, "matrix.ini"):;en temps normal on commence par regarder si le screen saver est enregistré
    code$ = ReadString() :; on lit le contenu de "matrix.ini"
    CloseFile(1)
EndIf
 
If code$="ok":; bon le gars est enregistré
    dobro=1:; ce flag va retirer la surimpression
Else
    dobro=0:; il n'est pas enregistrer donc on affiche la surimpression
EndIf
;************ c'est tout pour le parametrage du screen saver



GetCursorPos_(SourisOrigine.POINT)
ShowCursor_(0)
; ***********************************
Resultat = InitSprite()
Resultat = InitSprite3D() 
FontID = LoadFont(#Police, "system", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN)
EcranY = GetSystemMetrics_(#SM_CYSCREEN)
;NbSprite = EcranX / 40 * 3
NbSprite =12
OpenWindow(1, 0, 0, EcranX, EcranY, #PB_Window_BorderLess | #PB_Window_Invisible, "Dos 3.10")
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; fenêtre toujours au premier plan
OpenWindowedScreen(WindowID(), 0, 0, EcranX, EcranY, 1, 0, 0)

; faire ici les initialisations du pre affichage
text.s = "PureBasic : La puissance a l'état pure!!!!"
l = Len(text)
text = Space(50 - l) + text





Repeat :;boucle principale
    
    ;ExamineKeyboard()
    
    
    
    StartDrawing(ScreenOutput())
    
    f.f + 0.02
    For t = 0 To 50
        h.f = f + (t / 10)
        
        lx.f = 400 * Cos(h)
        lz.f = 100 * Sin(-h / h)
        ly.f = 400 * Sin(-h) * Cos(h)
        
        px = (lx * 256) / (lz - 256) + 400
        py = (ly * 256) / (lz - 256) + 300
        
        If px > 0 And px < 800 And py > 0 And py < 600
            c = t * 100 / 255
            DrawingMode(4)
            Circle(px, py, 10, RGB(c * 10, c * 8, c * 12))
            Locate(px - 2, py - 8)
            DrawingMode(1)
            FrontColor(32, 64, 196)
            DrawText(Mid(text, 50 - t + (50 - l + 1), 1))
        EndIf
        
    Next
    
    StopDrawing()
    
    
    
    
    
    FlipBuffers():;affichage
    ClearScreen(0,0,0):; eface l'ecran pour image suivante
    
    GetCursorPos_(Souris.POINT):; test le curseur de la souris
Until WindowEvent() = #PB_Event_CloseWindow Or Souris\x <> SourisOrigine\x Or Souris\y <> SourisOrigine\y
ShowCursor_(1)
:D

Publié : dim. 06/juin/2004 13:35
par cederavic
Dobro allias SSM (Screen Saver Maker) :lol:
le voilas en un peut mieu :)

Code : Tout sélectionner

; 
; ici les initialisations des variables et tableaux 
;"/s" pour le lancer 
;"/c:" + un nombre pour le faire Paramétrer 
;"/p", espace, et un nombre qd son nom est simplement séletionné dans la boîte des propriétés du bureau 

Select Mid(ProgramParameter(), 1, 2)
  
  Case "/s"
  
  Case "/c"
  
  Case "/p"

EndSelect

GetCursorPos_(SourisOrigine.POINT) 
ShowCursor_(0) 
; *********************************** 
EcranX = GetSystemMetrics_(#SM_CXSCREEN) 
EcranY = GetSystemMetrics_(#SM_CYSCREEN) 

CreateImage(0, EcranX, EcranY)
  hdc = StartDrawing(ImageOutput())
    BitBlt_(hdc, 0, 0, EcranX, EcranY, GetDC_(GetDesktopWindow_()), 0, 0, #SRCCOPY)
  StopDrawing()
  
OpenWindow(1, 0, 0, EcranX, EcranY, #PB_Window_BorderLess, "Dos 3.10") 
SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE) ; fenêtre toujours au premier plan 


; faire ici les initialisations du pre affichage 
text.s = "PureBasic : La puissance a l'état pure!!!!" 
l = Len(text) 
text = Space(50 - l) + text 

Repeat 

    StartDrawing(WindowOutput())  
      DrawImage(ImageID(), 0, 0)
      f.f + 0.02
      For t = 0 To 50 
        h.f = f + (t / 10) 
        
        lx.f = 400 * Cos(h) 
        lz.f = 100 * Sin(-h / h) 
        ly.f = 400 * Sin(-h) * Cos(h) 
        
        px = (lx * 256) / (lz - 256) + EcranX / 2
        py = (ly * 256) / (lz - 256) + EcranY / 2
        
        If px > 0 And px < EcranX And py > 0 And py < EcranY
            c = t * 100 / 255
            c = 2 
            DrawingMode(4) 
            Circle(px, py, 10, RGB(c * 10, c * 8, c * 12)) 
            Locate(px - 2, py - 8) 
            DrawingMode(1) 
            FrontColor(32, 64, 196) 
            DrawText(Mid(text, 50 - t + (50 - l + 1), 1)) 
        EndIf     
      Next 
    StopDrawing()  
    GetCursorPos_(Souris.POINT)
    
    Delay(20)
    
Until WindowEvent() = #PB_Event_CloseWindow Or Souris\x <> SourisOrigine\x Or Souris\y <> SourisOrigine\y 
ShowCursor_(1)