é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