je souhaiterais créer pour mes petits-enfants, un jeu d'éveil ou par exemple il faut qu'il redonne son bébé à chaque maman animal, mais ça peut parfaitement être un autre exemple.
En fait, ce que je souhaite faire, c'est chaque image source ne doit être acceptée qu'à l'image cible prévue à cet effet, hors je ne sais pas comment faire, et c'est pourquoi je viens m'éclairer de votre savoir collégial et je vous en remercie par avance pour l'aide que vous allez m'apporter.
Code : Tout sélectionner
#Fenetre_principale = 0
Enumeration Images
#ImgSrc_1
#ImgSrc_2
#ImgSrc_3
#ImgSrc_4
#ImgSrc_5
#ImgCbl_1
#ImgCbl_2
#ImgCbl_3
#ImgCbl_4
#ImgCbl_5
EndEnumeration
Enumeration Gadgets
#ImageSource_1
#ImageSource_2
#ImageSource_3
#ImageSource_4
#ImageSource_5
#ImageCible_1
#ImageCible_2
#ImageCible_3
#ImageCible_4
#ImageCible_5
EndEnumeration
Declare CreerImageSource(ImgSrc, Largeur, Hauteur, IdSrc)
Declare CreerImageCible(ImgCbl, Largeur, Hauteur, IdCble)
Declare Programme_principal()
Programme_principal()
Procedure CreerImageSource(ImgSrc, Largeur, Hauteur, IdSrc)
CreateImage(ImgSrc, Largeur, Hauteur)
If StartDrawing(ImageOutput(IdSrc))
;Fond de l'image source
Box(0, 0, Largeur, Hauteur, $FFFFFF)
For i = 45 To 1 Step -1
Circle(Largeur / 2, Hauteur/2, i, Random($FFFFFF))
Next i
StopDrawing()
EndIf
EndProcedure
Procedure CreerImageCible(ImgCbl, Largeur, Hauteur, IdCble)
CreateImage(ImgCbl, Largeur, Hauteur)
If StartDrawing(ImageOutput(IdCble))
;Fond de l'image cible
Box(0, 0, Largeur, Hauteur, $FFFFFF)
StopDrawing()
EndIf
EndProcedure
Procedure Programme_principal()
If OpenWindow(#Fenetre_principale, 0, 0, 1020, 310, "Glisser & Déposer", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
; Créer quelques images pour la démonstration de l'image
;
CreerImageSource(#ImageSource_1, 200, 136, #ImgSrc_1)
CreerImageSource(#ImageSource_2, 200, 136, #ImgSrc_2)
CreerImageSource(#ImageSource_3, 200, 136, #ImgSrc_3)
CreerImageSource(#ImageSource_4, 200, 136, #ImgSrc_4)
CreerImageSource(#ImageSource_5, 200, 136, #ImgSrc_5)
CreerImageCible(#ImageCible_1, 200, 136, #ImgCbl_1)
CreerImageCible(#ImageCible_2, 200, 136, #ImgCbl_2)
CreerImageCible(#ImageCible_3, 200, 136, #ImgCbl_3)
CreerImageCible(#ImageCible_4, 200, 136, #ImgCbl_4)
CreerImageCible(#ImageCible_5, 200, 136, #ImgCbl_5)
; Créer et remplir les gadgets sources
;
ImageGadget(#ImageSource_1, 10, 10, 200, 140, ImageID(#ImgSrc_1))
ImageGadget(#ImageSource_2, 210, 10, 200, 140, ImageID(#ImgSrc_2))
ImageGadget(#ImageSource_3, 410, 10, 200, 140, ImageID(#ImgSrc_3))
ImageGadget(#ImageSource_4, 610, 10, 200, 140, ImageID(#ImgSrc_4))
ImageGadget(#ImageSource_5, 810, 10, 200, 140, ImageID(#ImgSrc_5))
; Créer les gadgets cibles
;
ImageGadget(#ImageCible_1, 10, 160, 200, 140, ImageID(#ImgCbl_1))
ImageGadget(#ImageCible_2, 210, 160, 200, 140, ImageID(#ImgCbl_2))
ImageGadget(#ImageCible_3, 410, 160, 200, 140, ImageID(#ImgCbl_3))
ImageGadget(#ImageCible_4, 610, 160, 200, 140, ImageID(#ImgCbl_4))
ImageGadget(#ImageCible_5, 810, 160, 200, 140, ImageID(#ImgCbl_5))
; Activez maintenant le transfert sur les gadgets cibles
;
EnableGadgetDrop(#ImageCible_1, #PB_Drop_Image, #PB_Drag_Copy)
EnableGadgetDrop(#ImageCible_2, #PB_Drop_Image, #PB_Drag_Copy)
EnableGadgetDrop(#ImageCible_3, #PB_Drop_Image, #PB_Drag_Copy)
EnableGadgetDrop(#ImageCible_4, #PB_Drop_Image, #PB_Drag_Copy)
EnableGadgetDrop(#ImageCible_5, #PB_Drop_Image, #PB_Drag_Copy)
Repeat
Evenement = WaitWindowEvent()
; Événement DragStart sur les gadgets sources, initie un glisser-déposer
;
If Evenement = #PB_Event_Gadget And EventType() = #PB_EventType_DragStart
Select EventGadget()
Case #ImageSource_1
DragImage(ImageID(#ImgSrc_1))
Case #ImageSource_2
DragImage(ImageID(#ImgSrc_2))
Case #ImageSource_3
DragImage(ImageID(#ImgSrc_3))
Case #ImageSource_4
DragImage(ImageID(#ImgSrc_4))
Case #ImageSource_5
DragImage(ImageID(#ImgSrc_5))
EndSelect
; Événement d'abandon sur les gadgets cibles, reçoivent les données déposées
;
ElseIf Evenement = #PB_Event_GadgetDrop
Select EventGadget()
Case #ImageCible_1
If EventDropImage(#ImgCbl_1)
SetGadgetState(#ImageCible_1, ImageID(#ImgCbl_1))
EndIf
Case #ImageCible_2
If EventDropImage(#ImgCbl_2)
SetGadgetState(#ImageCible_2, ImageID(#ImgCbl_2))
EndIf
Case #ImageCible_3
If EventDropImage(#ImgCbl_3)
SetGadgetState(#ImageCible_3, ImageID(#ImgCbl_3))
EndIf
Case #ImageCible_4
If EventDropImage(#ImgCbl_4)
SetGadgetState(#ImageCible_4, ImageID(#ImgCbl_4))
EndIf
Case #ImageCible_5
If EventDropImage(#ImgCbl_5)
SetGadgetState(#ImageCible_5, ImageID(#ImgCbl_5))
EndIf
EndSelect
EndIf
Until Evenement = #PB_Event_CloseWindow
EndIf
End
EndProcedure