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)