Page 1 sur 2

Grille Boutons pour jeux..

Publié : ven. 07/déc./2012 21:31
par kernadec
bonjour
petit essai de panneau boutons pour divers jeux.

Cordialement
[réédit] ajout suppressions multiples :D
avec :idea: boutons style tee shirt hippie époque woodstock

ps: code mis à jour avec le test mines de graph100

Code : Tout sélectionner

UsePNGImageDecoder():UseJPEGImageDecoder()
If LoadImage(6, "c:\purebasic\Examples\3D\Data\Textures\MRAMOR6X6.jpg")
  ResizeImage(6,25,25) : Else : CreateImage(6,25,25,32) : EndIf
Enumeration : #Win : #image1 : EndEnumeration 
#flag=#PB_Window_SystemMenu | #PB_Window_ScreenCentered
Procedure grille(a,total)
  If a=1
    For i=1 To 225                          ; efface tous les boutons du boom
      If IsGadget(i) : FreeGadget(i) : EndIf
    Next i
    StartDrawing(WindowOutput(#win))
    If total=>215 : affiche$= " T'ES TROP FORT  "
      Else : affiche$= " GAME OVER" : EndIf
    DrawText(150,180,Str(total)+affiche$,#Black,RGB(250,250,80)) : Delay(1500)
    DrawText(150,180,Str(total)+affiche$,RGB(250,250,80),RGB(250,250,80))
    StopDrawing()
  EndIf
  For u=0 To 350 Step 25 : c1+2                 ; position des boutons
    For uu=0 To 350  Step 25 : c2+2
      StartDrawing(ImageOutput(#image1))
      DrawingMode(#PB_2DDrawing_Gradient)      
      BackColor(RGB(Random(255), Random(255), Random(255)))
      FrontColor(RGB(Random(255), Random(255), Random(255)))
      BoxedGradient(0, 0, 25, 25) : Circle(12, 12, 13)
      BackColor(RGB(Random(255), Random(255), Random(255)))
      FrontColor(RGB(Random(255), Random(255), Random(255)))
      BoxedGradient(2, 2, 21, 21) : Circle(12, 12, 7) : StopDrawing()
      ButtonImageGadget(b+1,uu+c2,u+c1,25,25, ImageID(#image1)) : b+1
    Next uu : c2=0 : 
  Next u
EndProcedure
CreateImage(#image1,25,25,32) : CreateImage(5,25,25,32) ;image noir pour mines
OpenWindow(#Win, 0, 0, 407, 407, "Pseudo Démineur",#flag)
SetWindowColor(#Win,RGB(250,250,80)) : grille(0,0) : Dim boom(9)
For i=1 To 9 : boom(i)=Random(224)+1 : Next i ;debut du jeu emplacement des mines
Repeat 
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow : End
    Case #PB_Event_Gadget
      n=Random(6)
      For z=0 To 9             ; test si boom et nouveau champ des mines
        If boom(z)=EventGadget() : n=-1
          If IsGadget(boom(z)) : SetGadgetAttribute(boom(z),#PB_Button_Image, ImageID(6)) 
        EndIf: Break:EndIf
      Next z	
      If n=-1
        For i=0 To 9     ; Affiche les bombes drapeaux damiers avec version PB5
          If IsGadget(boom(i)) : SetGadgetAttribute(boom(i),#PB_Button_Image, ImageID(6)) 
          EndIf
        Next i
        If total<215 : m1$="Fin de la Partie" : m2$=": Pour Gagner il faut Jouer!"
          MessageRequester(m1$,Str(total)+m2$,#PB_MessageRequester_Ok)
        EndIf : grille(1,total) : total=0 
        For w=0 To 9 : boom(w)=Random(224)+1 : Next w : 
      EndIf
      If n<>-1
        flag = #True
        For i=0 To 9                     ;test si c'est une mine
          If boom(i)=EventGadget()
            flag = #False:Break
          EndIf
        Next i
        
        If flag And IsGadget(EventGadget()) : FreeGadget(EventGadget()) : total+1 : EndIf
        
        If n<5 : j = 0
        ElseIf n=5 : j = 10
        Else : j = 30
        EndIf
        
        For o=1 To j                        ;supprime j cases
          h=Random(224)+1
          flag = #True
          For i=0 To 9 :                     ;test si c'est une mine
            If boom(i)=h :flag = #False : o - 1: Break
            EndIf
          Next i
          
          If flag : If IsGadget(h) : FreeGadget(h) : total+1 :Else : o-1 : EndIf : EndIf
          If total >= 215 : Break : EndIf
        Next o
      EndIf
  EndSelect
ForEver

Re: Grille Boutons pour jeux..

Publié : sam. 08/déc./2012 9:54
par Kwai chang caine
Cool !!!
La premiere fois, j'ai du tomber sur une mine, y'avait marqué "GUAME AUVEUR" :(
Mais j'ai rééssayé, et la seconde j'suis arrivé a tout vider, incroyable, je gagne presque jamais aux jeux 8O Peut etre un bug alors !! :lol:
Par contre y'a aucun message, style :"Oooouuuaaahh KCC t'es le meilleur de dedans le monde !!" ou "tu es le phoenix des hotes de ces bois" enfiin un truc sobre qui te dit que t'as gagné quoi !!! :mrgreen:
En tout cas merci, pour le partage et le voyage ches les bicknits :D

Re: Grille Boutons pour jeux..

Publié : sam. 08/déc./2012 10:47
par kernadec
bonjour KCC
merci pour le retour :roll:
je pense avoir réglé le problème des bombes effacée par un mauvais test
ça va être moins facile... :mrgreen:
merci KCC et weekend

Cordialement

Re: Grille Boutons pour jeux..

Publié : sam. 08/déc./2012 14:53
par kernadec
bonjour
voilà je comprend pas, aujourd'hui je suis a coté de la plaque
avec ce code, je n'arrive pas a voir ou est mon erreur... :(
avec les tests des effacements multiples,
j'ai des mines qui passe à la trappe,
vraiment là... ça fait deux bonnes heures que je cherche 8O
j'y suis plus, je vais me promener car y a des jours c'est pas ça...j'suis dègue :?

Cordialement
ps: j'ai mis un code avec vue des mines en noir.. dans le 1er post

Re: Grille Boutons pour jeux..

Publié : dim. 09/déc./2012 1:05
par graph100
Tu utilises la mauvaise méthode de détection des mines.
Il ne faut pas regarder si la case est différentes de la mine testée, car une mine est différente d'une autre. donc tu peux la supprimer.

J'ai fait une correction du code.
Et aussi, avec la méthode actuelle, tu peux avoir moins de 10 mine. Car tu ne testes pas si tu mets une mine sur une ancienne mine...

Pour Dim boom(9), moi j'utiliserai plutôt une liste chainée, et des foreachboom() / next.

Code : Tout sélectionner

Enumeration : #Win : #image1 : EndEnumeration 
#flag=#PB_Window_SystemMenu | #PB_Window_ScreenCentered
Procedure grille(a,total)
	If a=1
		For i=1 To 225                          ; efface tous les boutons du boom
			If IsGadget(i) : FreeGadget(i) : EndIf
		Next i
		StartDrawing(WindowOutput(#win))
		If total=>215 : affiche$= " T'EST TROP FORT  "
			Else : affiche$= " GAME OVER" : EndIf
		DrawText(150,180,Str(total)+affiche$,#Black,RGB(250,250,80)) : Delay(1500)
		DrawText(150,180,Str(total)+affiche$,RGB(250,250,80),RGB(250,250,80))
		StopDrawing()
	EndIf
	For u=0 To 350 Step 25 : c1+2                 ; position des boutons
		For uu=0 To 350  Step 25 : c2+2
			StartDrawing(ImageOutput(#image1))
			DrawingMode(#PB_2DDrawing_Gradient)      
			BackColor(RGB(Random(255), Random(255), Random(255)))
			FrontColor(RGB(Random(255), Random(255), Random(255)))
			BoxedGradient(0, 0, 25, 25) : Circle(12, 12, 13)
			BackColor(RGB(Random(255), Random(255), Random(255)))
			FrontColor(RGB(Random(255), Random(255), Random(255)))
			BoxedGradient(2, 2, 21, 21) : Circle(12, 12, 7)
			StopDrawing()
			ButtonImageGadget(b+1,uu+c2,u+c1,25,25, ImageID(#image1)) : b+1
		Next uu : c2=0
	Next u
EndProcedure
CreateImage(#image1,25,25,32) : CreateImage(5,25,25,32) ;image noir pour mines
OpenWindow(#Win, 0, 0, 407, 407, "Pseudo Démineur",#flag)
SetWindowColor(#Win,RGB(250,250,80)) : grille(0,0) : Dim boom(9)
For i=1 To 9 : boom(i)=Random(224)+1
	SetGadgetAttribute(boom(i),#PB_Button_Image, ImageID(5)) ; avec vue des mines en noir
Next i                                          ;debut du jeu et emplacement des mines
Repeat 
	Select WaitWindowEvent()
		Case #PB_Event_CloseWindow : End
		Case #PB_Event_Gadget
			n=Random(6)
			For i=0 To 9             ; test si boom et nouvel emplacement des mines
				If EventGadget()=boom(i) : grille(1,total) : n=-1 : total=0
					For i=0 To 9 : boom(i)=Random(224)+1 
						SetGadgetAttribute(boom(i),#PB_Button_Image, ImageID(5)) ; avec vue des mines en noir
					Next i : Break 
				EndIf
			Next i
			If n<>-1
				flag = #True
				For i=0 To 9                     ;test si c'est une mine
					If boom(i)=EventGadget()
						flag = #False:Break
					EndIf
				Next i
				
				If flag And IsGadget(EventGadget()) : FreeGadget(EventGadget()) : total+1 : EndIf
				
				If n<5 : j = 0
				ElseIf n=5 : j = 10
				Else : j = 30
				EndIf
				
				For o=1 To j                        ;supprim j cases
					h=Random(224)+1
					flag = #True
					For i=0 To 9 :                     ;test si c'est une mine
						If boom(i)=h :flag = #False : o - 1: Break
						EndIf
					Next i
					
					If flag : If IsGadget(h) : FreeGadget(h) : total+1 :Else : o-1 : EndIf : EndIf
					If total >= 215 : Break : EndIf
				Next o
			EndIf
	EndSelect
ForEver

Re: Grille Boutons pour jeux..

Publié : dim. 09/déc./2012 8:15
par kernadec
bonjour graph100
Cool!!!, Merci pour pour ton aide. :D

Je sais qu'il a des chances pour avoir moins de 10 mines avec le tableau aléatoire.
C'est pour cela que le test est mis à => 215..... :mrgreen: c'est Gagné

mon système de test était erroné, j'avais des fuites de pétards "mouillés",
quelquefois on se complique la vie tout bêtement. :?
mais c'est grâce à nos erreurs que l'on progresse. :)

Encore Merci

Je sais pas encore si je dois le publié en punch, car un démineur!!
et c'est pas très original rapport aux règles imposées.


Cordialement

Re: Grille Boutons pour jeux..

Publié : dim. 09/déc./2012 19:20
par graph100
kernadec a écrit :Je sais pas encore si je dois le publié en punch, car un démineur!!
et c'est pas très original rapport aux règles imposées.
Ben, un space invaders non plus :lol: par contre, un démineur ou tu n'as pas les moyens de voir les bombes (car si c'est bien compris, c'est plus ou moins ça, c'est pas courant :mrgreen:

Re: Grille Boutons pour jeux..

Publié : dim. 09/déc./2012 19:32
par Kwai chang caine
Bah oui, GRAPH a raison, j'y connait fifre en jeu, mais j'ai pas compris un truc (Ca va t'étonner hein :mrgreen:)
Dans le premier code, j'ai sauté dans la "joie et la negresse"
Dans les autres, y'avait un big panneau au dessus de chaque mine "ATTENTION MINE" avec une big fleche 8O
Alors j'ai pas sauté, je n'ai pas compris l’intérêt si on sait ou faut pas cliquer :oops:

Re: Grille Boutons pour jeux..

Publié : dim. 09/déc./2012 20:55
par kernadec
bonjour
KCC.. :mrgreen: :lol: merci pour le retour
Facile, pour cacher les pétards cocher les deux lignes "avec commentaire vue des mines" .
mais je sais que tu l'as vu :wink:

Mais au départ, je me faisais un panneau de boutons..
et puis l'idée du démineur est venue comme ça,
sans prendre vraiment cela au sérieux..
ça aurait pu être une bataille navale, un morpion, etc....
avec ce panneau de boutons on peut faire plein de trucs

hier, je me suis énervé pour ce test, vraiment chiant quand on n'y est pas.. :?

ensuite je n'avais pas percuté non plus l'importance
de montrer les bombes à la fin du jeu.. :? :D

je vous rappel le titre de la fenêtre du code "Pseudo Démineur" :lol:

merci à vous pour les commentaires.

Cordialement

Re: Grille Boutons pour jeux..

Publié : dim. 09/déc./2012 21:18
par Kwai chang caine
Merci de tes "explicages" :D
avec ce panneau de boutons on peut faire plein de trucs
Un accordeon peut etre :mrgreen:
Image

Bon ...je crois que c'est mieux si je sort :oops:

Image

En tout cas il est joli et cool ton jeu
Merci surtout à toi pour ce partage 8)

Re: Grille Boutons pour jeux..

Publié : dim. 09/déc./2012 22:14
par kernadec
mais non reste Kcc, tu est trop gentil...

je viens de mettre à jour mon code en début de post.
avec vue de l'emplacement et des bombes quand on clic sur l'une d'elles.
Un accordéon peut être :mrgreen:
merci pour ton humour :mrgreen: Kcc

sinon des trucs fun comme ça... avec Boules de NOEL :mrgreen:

code mis à jour.
Cordialement

Code : Tout sélectionner

chemin$="C:\purebasic\"  ;definition du chemin de l'image et pour la sauvegarde des fichiers

UsePNGImageDecoder() : UseJPEGImageDecoder():UsePNGImageEncoder()
If LoadImage(6, chemin$+"Examples\3D\Data\Textures\MRAMOR6X6.jpg")
  ResizeImage(6,25,25) : Else : CreateImage(6,25,25,32) : EndIf
Enumeration : #Win : #image1 : EndEnumeration 
Structure psy : num.l : cb1.l : cf1.l : cb2.l : cf2.l : EndStructure
#flag=#PB_Window_SystemMenu|#PB_Window_ScreenCentered : Global Dim paw.psy(225)
Procedure grille(a,total)
  If a=1
    For i=1 To 225                          ; efface tous les boutons du boom
      If IsGadget(i) : FreeGadget(i) : EndIf
    Next i
    StartDrawing(WindowOutput(#win))
    If total=>215 : affiche$= " PURE DELIRE!!!  "
      Else : affiche$= " GAME OVER" : EndIf
    DrawText(150,180,Str(total)+affiche$,#Black,RGB(250,250,80)) : Delay(1500)
    DrawText(150,180,Str(total)+affiche$,RGB(250,250,80),RGB(250,250,80))
    StopDrawing()
  EndIf
  For u=0 To 350 Step 25 : c1+2                 ; position des boutons
    For uu=0 To 350  Step 25 : c2+2 
      StartDrawing(ImageOutput(#image1))
      DrawingMode(#PB_2DDrawing_Gradient)
      paw(1+b)\cb1=RGB(Random(255),Random(255),Random(255)):BackColor(RGB(Red(paw(1+b)\cb1),Green(paw(1+b)\cb1),Blue(paw(1+b)\cb1)))
      paw(1+b)\cf1=RGB(Random(255),Random(255),Random(255)):FrontColor(RGB(Red(paw(1+b)\cf1),Green(paw(1+b)\cf1),Blue(paw(1+b)\cf1)))
      BoxedGradient(0, 0, 25, 25) : Circle(12, 12, 13)
      paw(1+b)\cb2=RGB(Random(255),Random(255),Random(255)):BackColor(RGB(Red(paw(1+b)\cb2),Green(paw(1+b)\cb2),Blue(paw(1+b)\cb2)))
      paw(1+b)\cf2=RGB(Random(255),Random(255),Random(255)):FrontColor(RGB(Red(paw(1+b)\cf2),Green(paw(1+b)\cf2),Blue(paw(1+b)\cf2)))
      BoxedGradient(2, 2, 21, 21) : Circle(12, 12, 7)
      StopDrawing()
      ButtonImageGadget( b+1,uu+c2,u+c1,25,25, ImageID(#image1)) : b+1
    Next uu : c2=0
  Next u
EndProcedure
Procedure.s patchwork(event)
  If event >0
    StartDrawing(ImageOutput(5))
    DrawingMode(#PB_2DDrawing_Gradient)
    BackColor(RGB(Red(paw(Event)\cb1),Green(paw(Event)\cb1),Blue(paw(Event)\cb1)))
    FrontColor(RGB(Red(paw(Event)\cf1),Green(paw(Event)\cf1),Blue(paw(Event)\cf1)))
    BoxedGradient(0, 0, 300, 300) : Circle(150, 150, 290)
    BackColor(RGB(Red(paw(Event)\cb2),Green(paw(Event)\cb2),Blue(paw(Event)\cb2)))
    FrontColor(RGB(Red(paw(Event)\cf2),Green(paw(Event)\cf2),Blue(paw(Event)\cf2)))
    BoxedGradient(23, 25, 250,250) : Circle(150, 150, 145)
    SetGadgetAttribute(300,#PB_Button_Image, ImageID(5))
    StopDrawing()
  EndIf
  a$="If OpenWindow(0, 0, 0, 300,300,"+Chr(34)+"BoxedGradient Exemple"+Chr(34)+", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)"
  b$="If CreateImage(0,300,300) And StartDrawing(ImageOutput(0)) : Box(0, 0, 300,300, $FFFFFF)"
  c$="DrawingMode(#PB_2DDrawing_Gradient)" 
  d$="BackColor(RGB("+Str(Red(paw(Event)\cb1))+","+Str(Green(paw(Event)\cb1))+","+Str(Blue(paw(Event)\cb1))+"))"  
  e$="FrontColor(RGB("+Str(Red(paw(Event)\cf1))+","+Str(Green(paw(Event)\cf1))+","+Str(Blue(paw(Event)\cf1))+"))"  
  f$="BoxedGradient(0, 0, 300, 300) : Circle(150, 150, 280)"
  g$="BackColor(RGB("+Str(Red(paw(Event)\cb2))+","+Str(Green(paw(Event)\cb2))+","+Str(Blue(paw(Event)\cb2))+"))" 
  h$="FrontColor(RGB("+Str(Red(paw(Event)\cf2))+","+Str(Green(paw(Event)\cf2))+","+Str(Blue(paw(Event)\cf2))+"))"  
  i$="BoxedGradient(23, 25, 250,250) : Circle(150, 150, 140)"
  j$="StopDrawing() : ButtonImageGadget(0, 98, 98, 104,104,ResizeImage(0,100,100)) : EndIf"
  k$="Repeat : Event = WaitWindowEvent() : Until Event = #PB_Event_CloseWindow : EndIf"
  l$="Texte code des couleurs copié dans le Presse Papier"
  ClearGadgetItems(0)
  AddGadgetItem (0,-1,l$)
  AddGadgetItem (0,-1,d$)  
  AddGadgetItem (0,-1,e$) 
  AddGadgetItem (0,-1,f$)
  AddGadgetItem (0,-1,g$)  
  AddGadgetItem (0,-1,h$)  
  AddGadgetItem (0,-1,i$)
  txt$=a$+Chr(10)+b$+Chr(10)+c$+Chr(10)+d$+Chr(10)+e$+Chr(10)+f$+Chr(10)+g$+Chr(10)+h$+Chr(10)+i$+Chr(10)+j$+Chr(10)+k$
  SetClipboardText(txt$)
  ProcedureReturn txt$
EndProcedure               

CreateImage(#image1,25,25,32) : CreateImage(5,300,300,32) 
OpenWindow(#Win, 0, 0, 705, 407, "Pseudo Démineur",#flag)
SetWindowColor(#Win,RGB(250,250,80)) : grille(0,0) : Dim boom(9)
ListViewGadget(0,406, 302, 298, 102):DisableGadget(0,1)
ButtonImageGadget(300,405,0,300,300, ImageID(5)) : patchwork(Random(224)+1)

For i=0 To 9 : boom(i)=Random(224)+1 :Next i         ;debut du jeu et emplacement des mines
Repeat 
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow : End
    Case #PB_Event_Gadget
      If EventGadget()<>300
        n=Random(6)
        For z=0 To 9             ; test si boom et nouvel emplacement des mines
          If boom(z)=EventGadget():code$=patchwork(EventGadget()): : n=-1
            If IsGadget(boom(z))
              SetGadgetAttribute(boom(z),#PB_Button_Image, ImageID(6)) ; avec vue des mines en noir
            EndIf
            Break
          EndIf
        Next z   
        If n=-1
          For i=0 To 9
            If IsGadget(boom(i))   ; Affiche les bombes drapeaux damiers avec version PB5
              SetGadgetAttribute(boom(i),#PB_Button_Image, ImageID(6)) ; avec vue des mines en noir
            EndIf
          Next i
          If total<215                                        
            MessageRequester("Fin de la Partie",Str(total)+" : Essaye Encore !",#PB_MessageRequester_Ok)
          EndIf
          : grille(1,total) : total=0
          For w=0 To 9 : boom(w)=Random(224)+1 : Next w 
        EndIf
        
        If n<>-1
          flag = #True
          For i=0 To 9                         ;test si c'est une mine
            If boom(i)=EventGadget()
              flag = #False:Break
            EndIf
          Next i
          
          If flag And IsGadget(EventGadget()) : FreeGadget(EventGadget()) : total+1 
            code$=patchwork(EventGadget())
          EndIf
          
          If n<5 : j = 0
          ElseIf n=5 : j = 10
          Else : j = 30
          EndIf
          
          For o=1 To j                         ;supprime j cases
            h=Random(224)+1
            flag = #True
            For i=0 To 9 :                     ;test si c'est une mine
              If boom(i)=h :flag = #False : o - 1: Break
              EndIf
            Next i
            
            If flag : If IsGadget(h) : FreeGadget(h) : total+1 :Else : o-1 : EndIf : EndIf
            If total >= 215 : Break : EndIf
          Next o
        EndIf
      Else
        For num=1 To 200   ; 200 = nombres sauvegardes 
          If ReadFile(0,chemin$+"iconebouton_"+Str(num)+".png")
            CloseFile(0) ; test si le fichier existe
          Else
            SaveImage(5,chemin$+"iconebouton_"+Str(num)+".png",#PB_ImagePlugin_PNG)
            If CreateFile(1,chemin$+"iconebouton_code_"+Str(num)+".pb")
              WriteStringN(1,code$)   ; sauvegarde code bouton couleur
              CloseFile(1) 
            EndIf
            Break     ; sauvegarde avec incrémenation du nom
          EndIf
        Next num
      EndIf
  EndSelect
ForEver

Re: Grille Boutons pour jeux..

Publié : lun. 10/déc./2012 15:25
par Kwai chang caine
Kernadec y va pas etre content :(
KCC il a KC sont joli code en cliquant sur le gros rond a droite :oops:

Re: Grille Boutons pour jeux..

Publié : lun. 10/déc./2012 18:24
par kernadec
merci du retour Kcc
:oops: mince je n'avais pas testé ce truc, je suis vraiment à coté de mes pompes.
peut être la vieillesse, car tu as mis les portrait avec les age
eh ben j'ai constaté que je suis de la génération des mecs qui jouent dans du père noël est une ordure..
clavier , blanc, l' hermite, 8O ça me rajeuni pas.... :lol:

pour le bug j'ai mis une imagegadget comme ça plus de bouton.
et d'ailleurs... je sais même pas ce qui m'as pris de mettre un bouton image :?

code mis à jour

bonne soirée
Cordialement

Re: Grille Boutons pour jeux..

Publié : mar. 11/déc./2012 11:15
par Kwai chang caine
Ouaih t'as raison !! quand je les vois tout plein de rides..ça me deprime :(
La vie elle est courte et longue à la fois

Pour ton jeu, nickel, j'ai cliqué partout, et j'suis pas arrivé a gagner :mrgreen:
Pas facile de ne pas tomber sur une mine :?
Y'a que le message qui m'a surpris...."Pour gagner il faut jouer" 8O
"J'm'ai dit dans moi-meme" qu'est ce que je fais la....j'suis à la mine ??? :lol:
Quoi que pour un démineur .... :mrgreen:

Merci Kernadec 8)

Re: Grille Boutons pour jeux..

Publié : mar. 11/déc./2012 12:00
par kernadec
bonjour Kcc
"pour Gagner il faut jouer"
oui une "lapalissade" :mrgreen:

pour le dernier code... suite au bug que tu m'as retourné.
Alors j'avais corrigé avec un imagegadget.

ensuite :roll: je me suis souvenu que j'avais prévu un bouton Image
pour créer une sauvegarde de l' image.
que depuis j'avais oublié avec mes tests ratés qui m'avaient pris la tête.

Alors voilà, j'ai remis le bouton image et avec un clic sur celui ci,
il sauve une image en PNG directement dans le répertoire chemin
défini en début de code avec un nom : "iconebouton_XXX.PNG"

au cas ou une combinaison de couleurs nous intéresserait.

Cordialement