Page 1 sur 1

Les adjectifs démonstratifs

Publié : lun. 22/oct./2018 9:07
par Micoute
Bonjour à tous,

toujours pour l'éducation de mes petits-enfants, depuis la dernière rentrée je crée des petits programmes ludiques et j'ai pensé à ceux qui sont papas ou mamans et à leurs enfants.

C'est pourquoi, pour ceux que ça intéresse, je les partage avec vous.

Code : Tout sélectionner

; Les adjectifs démonstratifs ce, cet, cette ou ces

EnableExplicit

Enumeration Fenetre
  #Fenetre_principale
EndEnumeration

Enumeration Gadgets
  #Cmb_1
  #Cmb_2
  #Cmb_3
  #Cmb_4
  #Cmb_5
  #Cmb_6
  #Cmb_7
  #Cmb_8
  #Cmb_9
  #Cmb_10
  #Str_Score
  #Str_Titre
  #Str_1
  #Str_2
  #Str_3
  #Str_4
  #Str_5
  #Str_6
  #Str_7
  #Str_8
  #Str_10
  #Str_11
  #Str_12
  #Str_13
  #Str_14
  #Str_15
  #Str_16
  #Str_17
  #Str_18
  #Str_Signature
  #Btn_Quitter
  #Btn_Suivant
EndEnumeration

Enumeration Polices
  #Police_12_Gras
  #Police
EndEnumeration

#Nb_Donnees = 7
#Nb_Serie = 6

Global Evenement, i, j, Serie = 1, Score = 0, Points.s = "", Dim Prefixe.s(#Nb_Donnees), Dim Adjectif.s(#Nb_Donnees), Dim Suffixe.s(#Nb_Donnees), Dim Reponse.s(#Nb_Donnees), Dim Verif.b(#Nb_Donnees)

LoadFont(#Police_12_Gras, "Arial Nova", 12, #PB_Font_Bold|#PB_Font_HighQuality)
LoadFont(#Police, "Arial Nova", 12)
SetGadgetFont(#PB_Default, FontID(#Police))

Declare Programme_principal()
Declare Lire_Donnees(Serie)

Lire_Donnees(Serie)

Procedure Lire_Donnees(Serie)
  Select Serie
    Case 1
      Restore S1
    Case 2
      Restore S2
    Case 3
      Restore S3
  EndSelect
  
  i = 0
  While i <= #Nb_Donnees
    Read$ Prefixe(i)
    Read$ Adjectif(i)
    Read$ Suffixe(i)
    Reponse(i) = Adjectif(i)
    Verif(i) = #False
    i + 1
  Wend
  
  RandomizeArray(Adjectif())
  
  Programme_principal()
EndProcedure  

Procedure Suivant()
  Select EventType()
    Case #PB_EventType_LeftClick
      If Serie < #Nb_Serie
        Serie + 1
        
        j = 0
        i = #Str_1
        While i <= #Str_8
          HideGadget(i, 0)
          i + 1
          j + 1
        Wend
        
        Lire_Donnees(Serie)
      Else
        HideGadget(#Btn_Suivant, #True)  
      EndIf
  EndSelect    
EndProcedure

Procedure Compliment(Note.b = 0)
  If Note = #True
    Score + 10
    MessageRequester("Bien", "C'est une excellente réponse"+#CRLF$+#CRLF$+"Ton score est de " + Score + " points", #PB_MessageRequester_Info)
  Else
    Score - 5
    MessageRequester("Pas glop !!!", "Réponse complètement fausse"+#CRLF$+"Regarde ta réponse"+#CRLF$+"et clique sur le bouton Ok"+#CRLF$+"pour redonner une nouvelle réponse"+#CRLF$+#CRLF$+"Tu as perdu 5 points, ton score est de " + Score, #PB_MessageRequester_Info)
  EndIf
  
  If Score <= 0
    Points = " POINT"
  Else
    Points = " POINTS"
  EndIf 
  
  SetGadgetText(#Str_Score, "SCORE : " + Str(Score) + Points)
EndProcedure

Procedure Valider()
  If Verif(EventGadget()) = #False
    Select EventGadget()
      Case #Cmb_1 To #Cmb_10
        If GetGadgetText(EventGadget()) = Reponse(EventGadget())
          Verif(EventGadget()) = #True
          Compliment(#True)
        Else
          Compliment(#False)
        EndIf
    EndSelect
  EndIf
EndProcedure

Procedure Quitter()
  Select EventType()
    Case #PB_EventType_LeftClick
      CloseWindow(#Fenetre_principale)
      End
  EndSelect    
EndProcedure

Procedure Programme_principal()
  If OpenWindow(#Fenetre_principale, 0, 0, 670, 460, "Les adjectifs démonstratifs", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
    
    StringGadget(#Str_Titre, 20, 20, 630, 30, "Les adjectifs démonstratifs ce, cet, cette ou ces ?", #ES_CENTER)
    StringGadget(#Str_1, 20,  60, 150, 30, "",#ES_RIGHT) : ComboBoxGadget(#Cmb_1, 180,  60, 100, 30) : StringGadget(#Str_11, 290,  60, 360, 30, "")
    StringGadget(#Str_2, 20, 100, 150, 30, "",#ES_RIGHT) : ComboBoxGadget(#Cmb_2, 180, 100, 100, 30) : StringGadget(#Str_12, 290, 100, 360, 30, "")
    StringGadget(#Str_3, 20, 140, 150, 30, "",#ES_RIGHT) : ComboBoxGadget(#Cmb_3, 180, 140, 100, 30) : StringGadget(#Str_13, 290, 140, 360, 30, "")
    StringGadget(#Str_4, 20, 180, 150, 30, "",#ES_RIGHT) : ComboBoxGadget(#Cmb_4, 180, 180, 100, 30) : StringGadget(#Str_14, 290, 180, 360, 30, "")
    StringGadget(#Str_5, 20, 220, 150, 30, "",#ES_RIGHT) : ComboBoxGadget(#Cmb_5, 180, 220, 100, 30) : StringGadget(#Str_15, 290, 220, 360, 30, "")
    StringGadget(#Str_6, 20, 260, 150, 30, "",#ES_RIGHT) : ComboBoxGadget(#Cmb_6, 180, 260, 100, 30) : StringGadget(#Str_16, 290, 260, 360, 30, "")
    StringGadget(#Str_7, 20, 300, 150, 30, "",#ES_RIGHT) : ComboBoxGadget(#Cmb_7, 180, 300, 100, 30) : StringGadget(#Str_17, 290, 300, 360, 30, "")
    StringGadget(#Str_8, 20, 340, 150, 30, "",#ES_RIGHT) : ComboBoxGadget(#Cmb_8, 180, 340, 100, 30) : StringGadget(#Str_18, 290, 340, 360, 30, "")
    
    StringGadget(#Str_Signature, 20, 420, 630, 30, "Ce logiciel a été conçu et réalisé par Micoute", #ES_CENTER)
    StringGadget(#Str_Score, 250, 380, 170, 30, "", #ES_CENTER)
    ButtonGadget(#Btn_Quitter, 20, 380, 150, 30, "Quitter")
    ButtonGadget(#Btn_Suivant, 500, 380, 150, 30, "Suivant")
    
    ;Affectations
    j = 0
    i = #Str_1
    While i <= #Str_8
      SetGadgetText(i, Prefixe(j))
      If Prefixe(j) = ""
        HideGadget(i, 1)
      EndIf  
      i + 1
      j + 1
    Wend
    
    i = #Cmb_1
    While i <= #Cmb_8
      j = 0
      While j <= #Nb_Donnees
        AddGadgetItem(i, -1, Adjectif(j))
        j + 1
      Wend
      i + 1
    Wend
    
    j = 0
    i = #Str_11
    While i <= #Str_18
      SetGadgetText(i, Suffixe(j))
      i + 1
      j + 1
    Wend
    
    SetGadgetText(#Str_Score, "SCORE : " + Str(Score) + " POINT")
    
    ;Polices
    SetGadgetFont(#Str_Titre, FontID(#Police_12_Gras))
    SetGadgetFont(#Str_Signature, FontID(#Police_12_Gras))
    SetGadgetFont(#Btn_Quitter, FontID(#Police_12_Gras))
    SetGadgetFont(#Btn_Suivant, FontID(#Police_12_Gras))
    
    ;événements liés
    BindGadgetEvent(#Btn_Quitter, @Quitter())
    BindGadgetEvent(#Btn_Suivant, @Suivant())
    
  EndIf
EndProcedure

Repeat
  Evenement = WaitWindowEvent()
  Select Evenement
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Cmb_1 To #Cmb_10
          Valider()
      EndSelect
  EndSelect
ForEver

DataSection
  S1:
  Data$ "", "ce", " panneau indique qu'il faut s'arrêter",
        "", "cette", "pomme est tombée de ",
        "", "cet", " arbre",
        "", "ce", "cartable et ",
        "", "cette", "trousse sont à moi.",
        "Répondez à ", "cette", " question",
        "", "ces", " oranges et",
        "", "ce", " citron feront un bon jus"
  S2:
  Data$ "", "ce", " rire est très comunicatif !",
        "", "ce", " terrain et ",
        "", "cette", " maison sont à mon grand-père.",
        "J'ai ramassé ", "ces", " prunes dans",
        "", "ce", " jardin.",
        "Après ", "cette", " barrière et",
        "", "ces", " grandes fleurs, c'est chez moi",
        "", "cette", " endive a un goût amer."
  S3:
  Data$ "", "cet", " arrosoir me sert beaucoup dans le jardin",
        "J'ai récupéré", "cette", " amende en stationnant sur",
        "", "ce", " boulevard",
        "", "cet", " accent est l'accent québécois",
        "C'est avec", "ces", " chèvres que je fais",
        "", "ce", " bon fromage.",
        "", "ce", " livre est passionnant.",
        "", "cette", " scène a été tournée à Paris."
  S4:
  Data$ "Je vous ai préparé", "ce", " bon gâteau",
        "J'aimerai acheter", "cet" ," appartement.",
        "J'aime beaucoup", "ce", " séjour dans",
        "", "cet", " hôtel !",
        "Après", "cette", " journée en plein air, je suis fatigué.",
        "En automne, les feuilles de", "ces", " arbres envahissent",
        "", "cette", " rue",
        "Avec toute", "cette", " neige qui tombe, on ne pourra pas sortir"
  S5:
  Data$ "C'est dans", "cet", " hôpital que travaille",
        "", "cette", " infirmière",
        "À ton avis,", "ces", " clés sont à qui ?",
        "Il faut que", "cet", " enfant se repose bien",
        "", "cette", " nuit.",
        "J'ai percé", "ce", " tuyau avec",
        "", "cette", " aiguille.",
        "Range", "ces", " crayons dans ta trousse."
  S6:
  Data$ "Le boulanger dans", "ce", " magasin fait un très bon pain.",
        "Avec", "ces", " planches et",
        "", "ces", " clous, je vais fabriquer un composteur",
        "Dans", "cette", " soupe, j'ai mis des poireaux et des carottes.",
        "Et", "ces", " carottes, c'est des légumes de mon jardin.",
        "Dans", "ce", " verger, on trouve des pommes et des poires.",
        "C'est dans", "cette", " usine que l'on fabrique",
        "", "cet", " outil de précision."
EndDataSection

Re: Les adjectifs démonstratifs

Publié : lun. 22/oct./2018 12:16
par Ar-S
Salut.
Je fais 1 essai : Cet Arbre => il me dit faux...
Donc soit tu disablegadget les gadgets excepté le 1er puis le suivant etc de façon à ce que l'utilisateur répondre dans l'ordre. Soit tu fais en sorte que les réponses puissent être données dans le désordre (ce qui serait plus logique si l'enfant hésite pour une réponse).

Re: Les adjectifs démonstratifs

Publié : lun. 22/oct./2018 14:48
par Micoute
Je sais d'où viens l'erreur, car tu n'as pas fait l'exercice dans l'ordre où je l'avais prévu et le test deviens faux car il est mal fait,
je devrais tester l'évènement qui s'est produit et pas la condition.

voici la procédure Valider() corrigée:

Code : Tout sélectionner

Procedure Valider()
  If Verif(EventGadget()) = #False
    Select EventGadget()
      Case #Cmb_1 To #Cmb_10
        If GetGadgetText(EventGadget()) = Reponse(EventGadget())
          Verif(EventGadget()) = #True
          Compliment(#True)
        Else
          Compliment(#False)
        EndIf
    EndSelect
  EndIf
EndProcedure

Re: Les adjectifs démonstratifs

Publié : lun. 22/oct./2018 15:10
par Ar-S
Il te faut tester plus sérieusement tes programmes mon bon Micoute.
J'ai remplacé Valider() par ta correction. 1er test
Je mets "Cette" à la phrase 1 => Erreur de tableau hors limite.

Je te le redis : Mets des DEBUG à outrance quand tu codes.

Re: Les adjectifs démonstratifs

Publié : lun. 22/oct./2018 15:18
par Micoute
Chez moi, ça fonctionne très bien et j'ai fait les 6 séries.

Re: Les adjectifs démonstratifs

Publié : lun. 22/oct./2018 15:33
par Ar-S
Alors post le code fonctionnel en entier sur le 1er topic.

Remarque : tu pourrais utiliser les MAP plutot que de t'embeter avec des datas et des tableaux.
1 map suffit. ça te simplifierait la vie.

Petit exemple en mode console.

Code : Tout sélectionner

; Les adjectifs démonstratifs ce, cet, cette ou ces

NewMap Reponse.s()

Reponse("xxx panneau indique qu'il faut s'arrêter") = "ce"
Reponse("J'ai récupéré xxx clé") = "cette"
Reponse("sur xxx chemins je me sens si bien") = "ces"
Reponse("xxx arbre est magnifique") = "cet"


ResetMap(Reponse()) 

OpenConsole()
PrintN("Complète par ce, cet, cette, ces etc... : ")
ForEach Reponse()
  PrintN (MapKey(reponse()))
  Reponse.s = Input()
  If Reponse.s = Reponse()
    Score + 1
  EndIf
Next

PrintN ("Ton score est de " + Str(score))
If score < 4
  PrintN ("tu as fait " +Str(4-score) + " erreur(s)")
Else
  PrintN ("tu as tout juste ! Bravo !")
EndIf
PrintN("")
Print("Presse ENTREE pour quitter")
Input()
End


Re: Les adjectifs démonstratifs

Publié : lun. 22/oct./2018 15:55
par Micoute
Voilà qui est fait.

Re: Les adjectifs démonstratifs

Publié : lun. 22/oct./2018 16:37
par Noos88
Bonjour Micoute
Nous avons eu pratiquement la même idée ce week-end, j'ai montrée la programmation (simple) à ma fille de 8 ans, elle voulais créer un jeux d'un pendu.
https://drive.google.com/file/d/1B1VzKQ ... sp=sharing
Ne vous moqué pas des images créer c'est ma fille qu'il les as créer.

Bonne journée

Re: Les adjectifs démonstratifs

Publié : lun. 22/oct./2018 16:48
par SPH
j'ai trouvé ca mignon :lol: :wink:

Re: Les adjectifs démonstratifs

Publié : mar. 23/oct./2018 7:13
par Micoute
Mais c'est magnifique.