Code : Tout sélectionner
; Initialisations
If InitSprite() = 0
MessageRequester("Erreur","Le DirectX 7 ne peut pas être initilaisé.",#MB_ICONERROR) : End
EndIf
;- Declarations
; Constantes
Enumeration
#Taille_Reelle
#Lancer
#Taille
#Enregistrer
#Quitter
EndEnumeration
; Structures
Structure RGB
R.l
G.l
B.l
EndStructure
; Listes
; Buffer
; Variables
Occurences.l
Global Plage.RGB,Couleurs.RGB,Couleurs2.RGB,Taille.point
Taille\X = 950 : Taille\Y = 650
Plage\R = 20 : Plage\G = 20 : Plage\B = 20
Couleurs\R = 0 : Couleurs\G = 0 : Couleurs\B = 0
Couleurs2\R = 255 : Couleurs2\G = 0 : Couleurs2\B = 0
Points.l = RGB(195, 93, 106)
; Création Fenêtre & Menus & Gadgets
OpenWindow(0,0,0,Taille\X/1.2,Taille\Y/1.2,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered,"Dessin...")
OpenWindowedScreen(WindowID(0),0,0,Taille\X/1.2,Taille\Y/1.2,0,0,0)
CreateMenu(0,WindowID(0))
MenuItem(#Lancer,"Lancer")
MenuItem(#Enregistrer,"Enregistrer")
MenuItem(#Quitter,"Quitter")
Procedure Couleurs(Selection.l)
Select Selection
Case 0
Rouge.l = Couleurs\R + (Random(Plage\R) - Plage\R)/2
If Rouge > 255 : Rouge = 255 : EndIf
If Rouge < 0 : Rouge = 0 : EndIf
Vert.l = Couleurs\G + (Random(Plage\G) - Plage\G)/2
If Vert > 255 : Vert= 255 : EndIf
If Vert < 0 : Vert = 0 : EndIf
Bleu.l = Couleurs\B + (Random(Plage\B) - Plage\B)/2
If Bleu > 255 : Bleu = 255 : EndIf
If Bleu < 0 : Bleu = 0 : EndIf
Case 1
Rouge.l = Couleurs2\R + (Random(Plage\R) - Plage\R)/2
If Rouge > 255 : Rouge = 255 : EndIf
If Rouge < 0 : Rouge = 0 : EndIf
Vert.l = Couleurs2\G + (Random(Plage\G) - Plage\G)/2
If Vert > 255 : Vert= 255 : EndIf
If Vert < 0 : Vert = 0 : EndIf
Bleu.l = Couleurs2\B + (Random(Plage\B) - Plage\B)/2
If Bleu > 255 : Bleu = 255 : EndIf
If Bleu < 0 : Bleu = 0 : EndIf
EndSelect
ProcedureReturn RGB(Rouge,Vert,Bleu)
EndProcedure
Procedure Dessin(DR.l,DC.l)
X.l : Y.l : Largeur.l : Hauteur.l : RayonX.l : RayonY.l : Choix.l
Select Random(2)
Case 0
X = Random(Taille\X)
Y = Random(Taille\Y)
Largeur = Random(Taille\X/DR)
If Largeur < 3 : Largeur = 3 : EndIf
Hauteur = Random(Taille\Y/DR)
If Hauteur < 3 : Hauteur = 3 : EndIf
Choix = Random(2)
Select Choix
Case 0
StartDrawing(SpriteOutput(#Taille_Reelle))
Box(X,Y,Largeur,Hauteur,Couleurs(0))
Box(X + 2,Y + 2,Largeur - 4,Hauteur - 4,Couleurs(1))
StopDrawing()
Default
StartDrawing(SpriteOutput(#Taille_Reelle))
Box(X,Y,Largeur,Hauteur,Couleurs(1))
Box(X + 2,Y + 2,Largeur - 4,Hauteur - 4,Couleurs(0))
StopDrawing()
EndSelect
Default
X = Random(Taille\X)
Y = Random(Taille\Y)
RayonX = Random(Taille\X/(DC + Random(5)))
If RayonX < 3 : RayonX = 3 : EndIf
RayonY = Random(Taille\Y/(DC + Random(5)))
If RayonY < 3 : RayonY = 3 : EndIf
Choix = Random(2)
Select Choix
Case 0
StartDrawing(SpriteOutput(#Taille_Reelle))
Ellipse(X,Y,RayonX,RayonY,Couleurs(0))
Ellipse(X,Y,RayonX - 2,RayonY - 2,Couleurs(1))
StopDrawing()
Default
StartDrawing(SpriteOutput(#Taille_Reelle))
Ellipse(X,Y,RayonX,RayonY,Couleurs(1))
Ellipse(X,Y,RayonX - 2,RayonY - 2,Couleurs(0))
StopDrawing()
EndSelect
EndSelect
EndProcedure
Repeat
Select WindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Menu
Select EventMenuID()
Case #Lancer
MessageRequester("Dessin...","Choisissez la première couleur.")
Code.l = ColorRequester()
Couleurs\R = Red(Code)
Couleurs\G = Green(Code)
Couleurs\B = Blue(Code)
MessageRequester("Dessin...","Choisissez la deuxième couleur.")
Code.l = ColorRequester()
Couleurs2\R = Red(Code)
Couleurs2\G = Green(Code)
Couleurs2\B = Blue(Code)
MessageRequester("Dessin...","Choisissez la couleur des points.")
Points = ColorRequester()
CreateSprite(#Taille_Reelle,Taille\X,Taille\Y)
StartDrawing(SpriteOutput(#Taille_Reelle))
Box(0,0,Taille\X,Taille\Y,Couleurs(01))
StopDrawing()
Occurences = Random(150) + 50
For i = 0 To Occurences
Dessin(3,8)
Next i
SaveSprite(#Taille_Reelle,"Temp.bmp")
LoadImage(#Taille,"Temp.bmp")
DeleteFile("Temp.bmp")
ResizeImage(#Taille,Taille\X/1.2,Taille\Y/1.2)
StartDrawing(ScreenOutput())
DrawImage(ImageID(),0,0)
StopDrawing()
FlipBuffers()
Occurences = Random(80) + 10
For i = 0 To Occurences
Dessin(10,20)
Next i
SaveSprite(#Taille_Reelle,"Temp.bmp")
LoadImage(#Taille,"Temp.bmp")
DeleteFile("Temp.bmp")
ResizeImage(#Taille,Taille\X/1.2,Taille\Y/1.2)
StartDrawing(ScreenOutput())
DrawImage(ImageID(),0,0)
StopDrawing()
FlipBuffers()
For Y = 0 To Taille\Y Step 80
For X = 0 To Taille\X Step 10
For i = 0 To 15
XX = X + Random(40) - 20
YY = Y + Random(60) - Random(60)
If XX < 1 : XX = 1 : EndIf
If XX > Taille\X : XX = Taille\X : EndIf
If YY < 1 : YY = 1 : EndIf
If YY > Taille\Y : YY = Taille\Y : EndIf
StartDrawing(SpriteOutput(#Taille_Reelle))
Plot(XX - 1,YY - 1,Points)
StopDrawing()
For ii = 0 To 1
XX = X + Random(40) - 20
YY = Y + Random(20) - Random(10)
If XX < 1 : XX = 1 : EndIf
If XX > Taille\X : XX = Taille\X : EndIf
If YY < 1 : YY = 1 : EndIf
If YY > Taille\Y : YY = Taille\Y : EndIf
StartDrawing(SpriteOutput(#Taille_Reelle))
Plot(XX - 1,YY - 1,Points)
StopDrawing()
Next ii
Next i
Next X
Next Y
SaveSprite(#Taille_Reelle,"Temp.bmp")
LoadImage(#Taille,"Temp.bmp")
DeleteFile("Temp.bmp")
ResizeImage(#Taille,Taille\X/1.2,Taille\Y/1.2)
StartDrawing(ScreenOutput())
DrawImage(ImageID(),0,0)
StopDrawing()
FlipBuffers()
Case #Enregistrer
SaveSprite(#Taille_Reelle,SaveFileRequester("Eregistrer","","BMP | *.BMP",0))
Case #Quitter
Break
EndSelect
EndSelect
Delay(10)
ForEver
End
; IDE Options = PureBasic v3.94 (Windows - x86)