Pour mes petits enfants qui rentrent au C.P cette année, j'ai fait ce logiciel pour leur apprendre à calculer mentalement, le programme est fonctionnel, mais je souhaiterais que le bouton valider ne s'affiche que si la grille est pleine.
Si vous pouvez m'aider, ce que je ne doute pas, je ne vous en remercierai jamais assez.
Code : Tout sélectionner
;Carré magique
Enumeration
#Fenetre_principale
EndEnumeration
Enumeration
#Str_HG
#Str_HM
#Str_HD
#Str_GM
#Str_MM
#Str_DM
#Str_GB
#Str_MB
#Str_DB
#Txt_L1
#Txt_L2
#Txt_L3
#Txt_C1
#Txt_C2
#Txt_C3
#Btn_Parametres
#Str_Parametres
#Btn_Ok
#Btn_Valider
#Txt_Avertissement
EndEnumeration
Enumeration
#Police
#Police2
#police3
EndEnumeration
Global Evenement, NombreMagique
LoadFont(#Police, "Microsoft Sans Serif", 120, #PB_Font_Bold)
LoadFont(#Police2, "Microsoft Sans Serif", 20, #PB_Font_Bold)
LoadFont(#Police3, "Microsoft Sans Serif", 10, #PB_Font_Bold)
Procedure Afficher()
SetGadgetText(#Txt_L1, Str(Val(GetGadgetText(#Str_HG)) + Val(GetGadgetText(#Str_HM)) + Val(GetGadgetText(#Str_HD))))
SetGadgetText(#Txt_L2, Str(Val(GetGadgetText(#Str_GM)) + Val(GetGadgetText(#Str_MM)) + Val(GetGadgetText(#Str_DM))))
SetGadgetText(#Txt_L3, Str(Val(GetGadgetText(#Str_GB)) + Val(GetGadgetText(#Str_MB)) + Val(GetGadgetText(#Str_DB))))
SetGadgetText(#Txt_C1, Str(Val(GetGadgetText(#Str_HG)) + Val(GetGadgetText(#Str_GM)) + Val(GetGadgetText(#Str_GB))))
SetGadgetText(#Txt_C2, Str(Val(GetGadgetText(#Str_HM)) + Val(GetGadgetText(#Str_MM)) + Val(GetGadgetText(#Str_MB))))
SetGadgetText(#Txt_C3, Str(Val(GetGadgetText(#Str_HD)) + Val(GetGadgetText(#Str_DM)) + Val(GetGadgetText(#Str_DB))))
EndProcedure
Procedure EntrerNombreMagique()
For i = #Str_HG To #Str_DB
SetGadgetText(i, "")
Next i
SetActiveGadget(#Str_Parametres)
NombreMagique = Val(GetGadgetText(#Str_Parametres))
EndProcedure
Procedure InitCarre()
If NombreMagique
SetGadgetText(#Txt_Avertissement, "Le nombre magique est " + NombreMagique)
Protected NHM = Random(NombreMagique/3,1)
Protected NMG = Random(NombreMagique/3,1)
Protected NGB = Random(NombreMagique/3,1)
Protected NDB = Random(NombreMagique/3,1)
If NMG + NGB < NombreMagique/2
NMG = Int(Random(NombreMagique/2,NombreMagique/2))
EndIf
SetGadgetText(#Str_HM, Str(NHM))
SetGadgetText(#Str_GM, Str(NMG))
SetGadgetText(#Str_GB, Str(NGB))
SetGadgetText(#Str_DB, Str(NDB))
Else
SetGadgetText(#Txt_Avertissement, "Veuillez choisir un nombre magique, (minimum 3)")
HideGadget(#Str_Parametres, 0)
HideGadget(#Btn_Ok, 0)
EntrerNombreMagique()
EndIf
EndProcedure
Procedure Init_Questionnaire()
If OpenWindow(#Fenetre_principale, 379, 5, 815, 775, "Carre magique", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
SetGadgetFont(#PB_Default, FontID(#Police))
StringGadget(#Str_HG, 145, 130, 180, 180, "", #PB_String_Numeric|#ES_CENTER)
StringGadget(#Str_HM, 330, 130, 180, 180, "", #PB_String_Numeric|#ES_CENTER)
StringGadget(#Str_HD, 515, 130, 180, 180, "", #PB_String_Numeric|#ES_CENTER)
StringGadget(#Str_GM, 145, 315, 180, 180, "", #PB_String_Numeric|#ES_CENTER)
StringGadget(#Str_MM, 330, 315, 180, 180, "", #PB_String_Numeric|#ES_CENTER)
StringGadget(#Str_DM, 515, 315, 180, 180, "", #PB_String_Numeric|#ES_CENTER)
StringGadget(#Str_GB, 145, 500, 180, 180, "", #PB_String_Numeric|#ES_CENTER)
StringGadget(#Str_MB, 330, 500, 180, 180, "", #PB_String_Numeric|#ES_CENTER)
StringGadget(#Str_DB, 515, 500, 180, 180, "", #PB_String_Numeric|#ES_CENTER)
TextGadget(#Txt_L1, 70, 205, 60, 60, "", #PB_Text_Center)
TextGadget(#Txt_L2, 70, 400, 60, 60, "", #PB_Text_Center)
TextGadget(#Txt_L3, 70, 585, 60, 60, "", #PB_Text_Center)
TextGadget(#Txt_C1, 220, 70, 60, 60, "", #PB_Text_Center)
TextGadget(#Txt_C2, 400, 70, 60, 60, "", #PB_Text_Center)
TextGadget(#Txt_C3, 575, 70, 60, 60, "", #PB_Text_Center)
ButtonGadget(#Btn_Parametres, 155, 10, 175, 35, "Paramètres")
StringGadget(#Str_Parametres, 335, 10, 95, 35, "", #PB_String_Numeric|#ES_CENTER)
ButtonGadget(#Btn_Ok, 435, 10, 35, 35, "Ok")
ButtonGadget(#Btn_Valider, 480, 10, 175, 35, "Valider")
TextGadget(#Txt_Avertissement, 0, 710, 815, 30, "", #PB_Text_Center|#SS_CENTERIMAGE)
HideGadget(#Str_Parametres, 1)
HideGadget(#Btn_Ok, 1)
;Polices
SetGadgetFont(#Btn_Parametres, FontID(#Police2))
SetGadgetFont(#Btn_Valider, FontID(#Police2))
SetGadgetFont(#Btn_Ok, FontID(#police3))
SetGadgetFont(#Str_Parametres, FontID(#police2))
SetGadgetFont(#Txt_Avertissement, FontID(#Police2))
For i = #Txt_L1 To #Txt_C3
SetGadgetFont(i, FontID(#Police2))
Next i
;Couleurs
SetWindowColor(#Fenetre_principale, $109217)
SetGadgetColor(#Txt_Avertissement, #PB_Gadget_BackColor, GetWindowColor(#Fenetre_principale))
SetGadgetColor(#Txt_Avertissement, #PB_Gadget_FrontColor, $84EFEB)
For i = #Txt_L1 To #Txt_C3
SetGadgetColor(i, #PB_Gadget_BackColor, GetWindowColor(#Fenetre_principale))
SetGadgetColor(i, #PB_Gadget_FrontColor, $84EFEB)
Next i
For i = #Str_HG To #Str_DB
SetGadgetColor(i, #PB_Gadget_BackColor, $84EFEB)
Next i
InitCarre()
EndIf
EndProcedure
Init_Questionnaire()
;- Boucle
Repeat
Evenement = WaitWindowEvent()
Select Evenement
Case #PB_Event_Gadget
Select EventGadget()
Case #Btn_Parametres
HideGadget(#Str_Parametres, 0)
HideGadget(#Btn_Ok, 0)
Case #Str_Parametres
Case #Btn_Ok
NombreMagique = Val(GetGadgetText(#Str_Parametres))
If NombreMagique
SetGadgetText(#Txt_Avertissement, "")
InitCarre()
EndIf
HideGadget(#Str_Parametres, 1)
HideGadget(#Btn_Ok, 1)
Case #Btn_Valider
Afficher()
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Fenetre_principale
CloseWindow(#Fenetre_principale)
Break
EndSelect
EndSelect
ForEver