Page 1 sur 1

Idée de programme d'éducation : les capitales de l'union

Publié : lun. 14/déc./2015 14:32
par Micoute
Bonjour à tous,

étant à cours d'idée, j'ai fabriqué pour mes petits-enfants, ce logiciel histoire de réviser les capitales des pays de l'union européenne.

Je le poste au cas où certains seraient intéressés par l'idée, parce qu'on peut l'appliquer à n'importe quoi

Code : Tout sélectionner

;Capitales des pays de l'Union Européenne
Define.s Capitale, Pays 

Enumeration
 #Fenetre_principale
 #Question
 #tIndication
 #Reponse
 #Bouton_Ok
 #Barre_Etat
 #Police
EndEnumeration

#Total = 26
#Nb_Questions = 20

Declare.s RepeterCar(Quantite.i,Caractere.s)
Declare Bonne_reponse()
Declare Mauvaise_reponse()
Declare.s Notation()
Declare Questionnaire()
Declare Tirer_au_sort()

Global Dim indice.s(#Total,1)
Global NewList Question_Deja_Posee()
Global x, Bonne_Reponse, Compteur, Niveau

Global Police = LoadFont(#Police, "Arial"  ,  12, #PB_Font_Bold)

Restore Donnees
For index = 0 To 26
 
 Read.s Pays
 Read.s Capitale
 Capitale  = UCase(Capitale)
 Pays    = UCase(Pays)
 indice(index, 0) = Pays
 indice(index, 1) = Capitale
 
 ;Debug RSet(Str(index + 1),2,"0") + " " + indice(index, 0)+" "+indice(index, 1)
Next index

Procedure Questionnaire()
 OpenWindow(#Fenetre_principale, 30,30, 550, 190, "Question n°"+Str(Compteur), 
            #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget )
 StickyWindow(#Fenetre_principale, 1)
 SetWindowColor(#Fenetre_principale,$D6D7FF)
 Texte$ = "Quelle est la capitale de"
 Select Left(indice(Bonne_Reponse, 0), 1) 
   Case "A", "E", "I", "O", "U", "Y"
     Texte$ + " l'"
   Default
     Texte$ + " la "
 EndSelect
 If LCase(indice(Bonne_Reponse, 0)) = "pays-bas"
   Texte$ = "Quelle est la capitale des "
 ElseIf LCase(indice(Bonne_Reponse, 0)) = "danemark" Or 
        LCase(indice(Bonne_Reponse, 0)) = "portugal" Or 
        LCase(indice(Bonne_Reponse, 0)) = "royaume-uni" Or 
        LCase(indice(Bonne_Reponse, 0)) = "luxembourg" 
   Texte$ = "Quelle est la capitale du "
 ElseIf LCase(indice(Bonne_Reponse, 0)) = "malte" Or
        LCase(indice(Bonne_Reponse, 0)) = "chypre"
   Texte$ = "Quelle est la capitale de "   
 EndIf
 Texte$ + indice(Bonne_Reponse, 0)
 TextGadget(#Question, 10, 10, 540, 24, Texte$, #PB_Text_Center)
 TextGadget(#tIndication, 10, 35, 540, 24, Left(indice(Bonne_Reponse, 1),1)+
                                           RepeterCar(Len(indice(Bonne_Reponse,1))-2,"-")+
                                           LCase(Right(indice(Bonne_Reponse, 1),1)),#PB_Text_Center)
 StringGadget(#Reponse, 175, 60, 200, 24,"")
 ButtonGadget(#Bouton_Ok, 240, 110, 70, 30, "Valider")
 
 If CreateStatusBar(#Barre_Etat, WindowID(#Fenetre_principale))
  AddStatusBarField(370)
  StatusBarText(#Barre_Etat,0, "Note: "+Str(Niveau)+"/20")
 EndIf 
 
 SetGadgetColor(#Question, #PB_Gadget_BackColor, $D6D7FF)
 SetGadgetFont(#Question, FontID(#Police))
 SetGadgetFont(#Reponse, FontID(#Police))
 SetGadgetFont(#tIndication, FontID(#Police))
 SetGadgetColor(#tIndication, #PB_Gadget_BackColor, $D6D7FF)
 SetGadgetFont(#Bouton_Ok, FontID(#Police))
 
 SetActiveGadget(#Reponse)
 Repeat
  Select WaitWindowEvent()
   Case #PB_Event_Gadget
    Select EventGadget()
     Case #Bouton_Ok
      grepondu$="oui"
    EndSelect 
   Case #PB_Event_CloseWindow
    Select EventWindow()
     Case #Fenetre_principale
      CloseWindow(#Fenetre_principale)
      End
    EndSelect
  EndSelect
 Until grepondu$="oui"
 
 rep1$=GetGadgetText(#Reponse) 
 
 If UCase(rep1$)=UCase(indice(Bonne_Reponse, 1))
  AddElement(Question_Deja_Posee())
  Question_Deja_Posee()= Bonne_Reponse
  Niveau+1
 Else  
  Mauvaise_reponse()
 EndIf
 
 If Niveau=0
  ;MessageRequester("Pfff...", "Essaie de faire mieux." + #LF$ + "Ce n'est quand même pas si dur.", #MB_ICONQUESTION)
 Else
  If Niveau < 2
   Texte$ = Str(Niveau)+" bonne réponse"
  Else
   Texte$ = Str(Niveau)+" bonnes réponses"
  EndIf
  ;MessageRequester("Score","Tu as " + Texte$ + " sur "+Str(#Nb_Questions))
 EndIf 
EndProcedure

Procedure Tirer_au_sort()  
 Bonne_Reponse = Random(#Total)
  
 ForEach Question_Deja_Posee()
  If Question_Deja_Posee() = Bonne_Reponse
   Tirer_au_sort()
  EndIf
 Next 
EndProcedure

Procedure Bonne_reponse()
 MessageRequester("Cool", "Trop fort !", #MB_OK)
EndProcedure

Procedure Mauvaise_reponse()
 MessageRequester("Désolé", "la réponse, c'était "+indice(Bonne_Reponse, 1)+
                            #LF$+
                            "Retiens-le pour la pochaine fois !", #MB_OK)
EndProcedure

Procedure.s Notation()
 Protected Texte.s
 Select niveau
  Case 0
   Texte = "Tu n'as répondu à aucune question"
  Case 1 To 3
   Texte = " nul"
  Case 4 To 8
   Texte = " médiocre"
  Case 9 To 12
   Texte = " moyen"
  Case 13 To 15
   Texte = " assez bon"
  Case 16 To 18
   Texte = " très bon"
  Case 19 To 20
   Texte = " excellent"
 EndSelect
 MessageRequester("Bilan", "Ta note est de "+Str(niveau)+"/20"+#LF$+#LF$+ "Résulat : "+Texte)
EndProcedure

Procedure.s RepeterCar(Quantite.i,Caractere.s)
 ProcedureReturn ReplaceString(Space(Quantite), " ", Caractere)
EndProcedure

Select MessageRequester("Question", "Veux-tu tester tes capacités dans ce questionnaire ?", #PB_MessageRequester_YesNo)
 Case #IDYES
  ;-debut du Questionnaire
  For Compteur = 1 To #Nb_Questions
   Tirer_au_sort()   
   Questionnaire()
  Next 
  Notation()
 Case #IDNO
  MessageRequester("A bientôt","Reviens quand même tester tes compétences plus tard!")
  End
EndSelect

DataSection
  Donnees:
  Data.s "Pays-Bas","Amsterdam"
  Data.s "Grece", "Athenes"
  Data.s "Allemagne", "Berlin"
  Data.s "Slovaquie", "Bratislava"
  Data.s "Belgique", "Bruxelles"
  Data.s "Roumanie", "Bucarest"
  Data.s "Hongrie", "Budapest"
  Data.s "Danemark", "Copenhague"
  Data.s "Irlande", "Dublin"
  Data.s "Finlande", "Helsinki"
  Data.s "Malte", "La Valette"
  Data.s "Portugal", "Lisbonne"
  Data.s "Slovénie", "Ljubljana"
  Data.s "Royaume-Uni", "Londres"
  Data.s "Luxembourg", "Luxembourg"
  Data.s "Espagne", "Madrid"
  Data.s "Chypre", "Nicosie"
  Data.s "France", "Paris"
  Data.s "République Thèque", "Prague"
  Data.s "Lettonie", "Riga"
  Data.s "Italie", "Rome"
  Data.s "Bulgarie", "Sofia"
  Data.s "Suède", "Stockholm"
  Data.s "Estonie", "Talinn"
  Data.s "Pologne", "Varsovie"
  Data.s "Autriche", "Vienne"
  Data.s "Lituanie", "Vilnius"
EndDataSection