Idée de concours, aide pour la communauté

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Idée de concours, aide pour la communauté

Message 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 ?
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message 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 ...
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

Personne d'autre n'est intéressé ? 8O
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message 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.
"Qui baise trop bouffe un poil." P. Desproges
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message 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.
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

exactement :D
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message 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
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

J'aime bien le truc avec les caractères, c'est dommage qu'on ait pas le temps de lire :)
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message 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.
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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)
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message 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)
:)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message 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) 

Répondre