Code : Tout sélectionner
; --------------------------------------------------
; - Auteur : Garzul -
; - Date : 4 Juin 2005 -
; - Type de programme : Panel d'effets -
; - Version de PB : PureBasic v3.92 -
; --------------------------------------------------
; - Initialisation de l'écran
InitSprite() : InitKeyboard()
OpenScreen(1024,768,32,"Compilation d'effets")
; - Variables globales
Global Amplitude,VitChange,x,y,rayon,Red,Green,Blue,AffichRayon,Selection,Enleve_Clear
; - Définition des variables
x = 0
y = 40
Rayon = 10
Red = 0
Blue = 0
Green = 0
AffichRayon = 0
Amplitude = 0
VitChange = 2
Selection = 1
Enleve_Clear = 0
; - Timer
Debut = GetTickCount_()
; - Procedure d'interaction avec le programme
Procedure Interaction()
; - Changement d'amplitude
If KeyboardPushed(#PB_Key_Left)
Amplitude + VitChange
ElseIf KeyboardPushed(#PB_Key_Right)
Amplitude - VitChange
ElseIf KeyboardReleased(#PB_Key_Up)
VitChange + 1
ElseIf KeyboardReleased(#PB_Key_Down)
VitChange - 1
EndIf
; - Test limite
If Amplitude < 0
Amplitude = 0
ElseIf VitChange < 0
VitChange = 0
EndIf
; - Test Choix effets
If KeyboardReleased(#PB_Key_1)
; - On affiche l'effet 1 si on appui sur 1 , et on réinitialise les variables utiliser avant !
Selection = 1
Red = 0
Blue = 0
Green = 0
Rayon = 2
Amplitude = 0
VitChange = 2
x = 0
y = 40
EndIf
If KeyboardReleased(#PB_Key_2)
; - On affiche l'effet 2 si on appui sur 2 , et on réinitialise les variables utiliser avant !
Selection = 2
Red = 0
Blue = 0
Green = 0
Rayon = 2
Amplitude = 0
VitChange = 2
x = 0
y = 40
EndIf
If KeyboardReleased(#PB_Key_3)
; - On affiche l'effet 3 si on appui sur 3 , et on réinitialise les variables utiliser avant !
Selection = 3
Red = 0
Blue = 0
Green = 0
Rayon = 2
Amplitude = 0
VitChange = 2
x = 0
y = 40
EndIf
If KeyboardReleased(#PB_Key_4)
; - On affiche l'effet 4 si on appui sur 4 , et on réinitialise les variables utiliser avant !
Selection = 4
Red = 0
Blue = 0
Green = 0
Rayon = 2
Amplitude = 0
VitChange = 2
x = 0
y = 40
EndIf
If KeyboardReleased(#PB_Key_5)
; - On affiche l'effet 5 si on appui sur 5 , et on réinitialise les variables utiliser avant !
Selection = 5
Red = 0
Blue = 0
Green = 0
Rayon = 2
Amplitude = 0
VitChange = 2
x = 0
y = 40
EndIf
If KeyboardReleased(#PB_Key_6)
; - On affiche l'effet 6 si on appui sur 6 , et on réinitialise les variables utiliser avant !
Selection = 6
Red = 0
Blue = 0
Green = 0
Rayon = 2
Amplitude = 0
VitChange = 2
x = 0
y = 40
EndIf
If KeyboardReleased(#PB_Key_7)
Enleve_Clear = 1
EndIf
If KeyboardReleased(#PB_Key_8)
Enleve_Clear = 0
EndIf
EndProcedure
; - Procédure d'affichage du texte
Procedure AfficheTexte()
StartDrawing(ScreenOutput())
Locate(820,0)
DrawingMode(1)
FrontColor(20,255,0)
DrawText("Vitesse de changement : " + Str(VitChange))
Locate(820,20)
DrawText("Amplitude : "+Str(Amplitude))
Locate(820,40)
DrawText("Effet numéro : "+Str(Selection))
FrontColor(100,255,255)
Locate(0,0)
DrawText("Up / Down = Changer vitesse, Left / Right = Amplitude de l'effet, Changer d'effets = 1,2,3,4,5,6")
Locate(0,20)
DrawText("ClearScreen On = 7 | Off = 8")
StopDrawing()
EndProcedure
; - Procédure d'affichage de l'effet numéro 1
Procedure DrawEffet1()
StartDrawing(ScreenOutput())
For Angle = 0 To 700 Step 2
Red = 255
Green = Angle/3
LineXY(x,y + Angle,x + Angle,y + Cos(Sqr(Angle)+Sqr(Rayon))*Sqr(Amplitude) + Angle,RGB(Red,Green,Blue))
Next Angle
StopDrawing()
EndProcedure
; - Procédure d'affichage de l'effet numéro 2
Procedure DrawEffet2()
StartDrawing(ScreenOutput())
DrawingMode(1|4)
FrontColor(0,200,255)
Locate(4,90)
DrawText("Line Effect : ")
Box(0,88,85,20,RGB(255,0,0))
For Angle = 0 To 700
Red = 255
Green = 255
Box(x + Angle,100 + y + Sin(Sqr(Angle)*Sqr(Amplitude)) - Cos(Sqr(Angle)+Sqr(Amplitude)) * 2 ,1,1,RGB(Red,Green*Angle/3,Blue))
Box(x + Angle,150 + y + Cos(Sqr(Angle)+Sqr(Amplitude)) * 4,1,1,RGB(Red*Angle/3,Green,Blue))
Box(x + Angle,220 + y + Sin(Sqr(Angle)*Sqr(Amplitude)) * Sqr(Angle) ,1,1,RGB(Red,Green*Angle/3,Blue))
Box(x + Angle,600 + y + Sin(Sqr(Angle)*Sqr(Amplitude)) * Sqr(Amplitude*Sqr(Angle)) ,1,1,RGB(Red,Green*Angle/3,Blue))
LineXY(x,400 + y,x + Angle,400 + y + Sqr(Amplitude) * Cos(Angle+Amplitude) * Sin(Angle + Amplitude),RGB(Red*Angle/3,Green,Blue*Angle/3))
Box(x + Angle,300 + y + Sin(Sqr(Angle)*Sqr(Amplitude)) * Sqr(Amplitude) ,1,1,RGB(Red,Green*Angle/3,Blue))
Next Angle
StopDrawing()
EndProcedure
; - Procédure d'affichage de l'effet numéro 3
Procedure DrawEffet3()
StartDrawing(ScreenOutput())
For Angle = 0 To 700 Step 2
Red = 255
Green = Angle/3
; LineXY(x,y + Angle,x + Angle,y * Cos(Sqr(Angle)+Cos(Sqr(Amplitude))) + Angle,RGB(Red,Green,Blue))
LineXY(x,y + Angle,x + Angle,y * Cos(Sqr(angle+Amplitude)) + Angle,RGB(Red,Green*Angle/3,Blue))
Next Angle
StopDrawing()
EndProcedure
; - Procédure d'affichage de l'effet numéro 4
Procedure DrawEffet4()
StartDrawing(ScreenOutput())
For Angle = 0 To 700 Step 2
Red = 255
Box(x + Angle,y * Cos(Sqr(angle+Amplitude)+Angle) + Angle,1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,100+y * Cos(Sqr(angle+Amplitude)+Angle) + Angle,1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,200+y * Cos(Sqr(angle+Amplitude)+Angle) + Angle,1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,300+y * Cos(Sqr(angle+Amplitude)+Angle) + Angle,1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,400+y * Cos(Sqr(angle+Amplitude)+Angle) + Angle,1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,500+y * Cos(Sqr(angle+Amplitude)+Angle) + Angle,1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,600+y * Cos(Sqr(angle+Amplitude)+Angle) + Angle,1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,700+y * Cos(Sqr(angle+Amplitude)+Angle) + Angle,1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(600+x + Angle,y * Cos(Sqr(angle)+Angle+Sqr(amplitude)) + Angle,1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(400+x + Angle,y * Cos(Sqr(angle)+Angle+Sqr(Amplitude)) + Angle,1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Next Angle
StopDrawing()
EndProcedure
; - Procédure d'affichage de l'effet numéro 5
Procedure DrawEffet5()
StartDrawing(ScreenOutput())
For Angle = 0 To 700 Step 2
Red = 255
Box(x + Angle,y + Cos(Sqr(Amplitude*Cos(Angle/2))),1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,150+y * Cos(Sqr(Amplitude*Cos(Angle/2))),1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,200+y + Cos(Sqr(Amplitude)*Amplitude/Angle),1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,300+y + Cos(Sqr(Amplitude))/Angle*Amplitude,1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,400+y + Cos(Sqr(Amplitude/Sqr(Cos(Angle/2)))*Amplitude/Sqr(Angle)),1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,500+y + Sqr(Angle*Cos(Amplitude+Angle)),1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,600+y + Sqr(Amplitude*Cos(Angle)),1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Box(x + Angle,700+y + Sqr(Amplitude)+Sqr(Angle),1,1,RGB(Red*Angle/3,Green*Angle/3,Blue))
Next Angle
StopDrawing()
EndProcedure
; - Procédure d'affichage de l'effet numéro 6
Procedure DrawEffet6()
StartDrawing(ScreenOutput())
For Angle = 0 To 700 Step 2
Red = 100
Green = 255
Circle(x + Angle,100+y * Cos(Sqr(Amplitude)+Sqr(Angle)),20,RGB(Red,Green*Angle/3,Blue*Angle/3))
Circle(x + Angle,250+y * Cos(Sqr(Amplitude+Angle)),20,RGB(Red,Green*Angle/3,Blue))
Circle(x + Angle,350+y * Cos(Sqr(Cos(Amplitude+Angle))),20,RGB(Red,Green*Angle/3,Blue))
Circle(x + Angle,450+y + Cos(Angle*Sqr(Amplitude+*cos(Angle/2))),20,RGB(Red*Angle/3,Green*Angle/3,Blue))
Circle(x + Angle,600+y * Cos(Angle*Sqr(Amplitude*Angle)),20,RGB(Red,Green*Angle/3,Blue))
Next Angle
StopDrawing()
EndProcedure
; - Procédure du Timer
Procedure Timer()
Vitesse = Pendant*180/1000-Pendant+1
Apres = GetTickCount_()
Apres - Debut = Pendant
EndProcedure
; - La boucle
Repeat
; - Initialisation de l'écran
ExamineKeyboard()
If Enleve_Clear = 0
ClearScreen(0,0,0)
EndIf
; - Affichage des procédures
Timer()
Interaction()
AfficheTexte()
If Selection = 1
DrawEffet1()
ElseIf Selection = 2
DrawEffet2()
ElseIf Selection = 3
DrawEffet3()
ElseIf Selection = 4
DrawEffet4()
ElseIf Selection = 5
DrawEffet5()
ElseIf Selection = 6
DrawEffet6()
EndIf
; - On flip , on quitte si touche appuyé
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End
Vous pouvez compiler et l'executer .