Les adjectifs démonstratifs

Programmation d'applications complexes
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Les adjectifs démonstratifs

Message 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
Dernière modification par Micoute le lun. 22/oct./2018 15:50, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Les adjectifs démonstratifs

Message 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).
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Les adjectifs démonstratifs

Message 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
Dernière modification par Micoute le lun. 22/oct./2018 15:15, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Les adjectifs démonstratifs

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Les adjectifs démonstratifs

Message par Micoute »

Chez moi, ça fonctionne très bien et j'ai fait les 6 séries.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Les adjectifs démonstratifs

Message 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

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Les adjectifs démonstratifs

Message par Micoute »

Voilà qui est fait.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Noos88
Messages : 59
Inscription : lun. 14/juin/2010 19:16
Localisation : Belrupt (Vosges)

Re: Les adjectifs démonstratifs

Message 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
Avatar de l’utilisateur
SPH
Messages : 4722
Inscription : mer. 09/nov./2005 9:53

Re: Les adjectifs démonstratifs

Message par SPH »

j'ai trouvé ca mignon :lol: :wink:
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Les adjectifs démonstratifs

Message par Micoute »

Mais c'est magnifique.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre