Page 1 sur 1

Sablier [Resolu]

Publié : dim. 27/mai/2007 16:44
par MetalOS
Salut tous le monde , voila je cherche à faire un petit QCM avec un decompte de 5 seconde entre chaque questions.

Exemple:

Question 1 ?
5
4
3
2
1
(Passage automatique à la question 2)
Question 2 ?
etc...

Si quelqu'un peut m'éclairer sur le sujet, car je ne c pas comment mis prendre. Merci pour vos réponses.

Re: Sablier

Publié : dim. 27/mai/2007 17:46
par Backup
......

Publié : dim. 27/mai/2007 17:55
par minirop
un petit truc comme ceci

Code : Tout sélectionner

SetCursor_(LoadCursor_(NULL, IDC_WAIT))
Delay(5000) ; pause de 5 secondes
SetCursor_(LoadCursor_(NULL, IDC_ARROW))

Publié : dim. 27/mai/2007 18:28
par Backup
minirop a écrit :un petit truc comme ceci

Code : Tout sélectionner

SetCursor_(LoadCursor_(NULL, IDC_WAIT))
Delay(5000) ; pause de 5 secondes
SetCursor_(LoadCursor_(NULL, IDC_ARROW))
seulement pendant 5 seconde, rien ne marche !! ..

alors qu'avec les timer, c'est nickel :D
le gars peut ecrire une reponse ...

Publié : dim. 27/mai/2007 18:29
par brossden
J'ai pondu cela à toute vitesse, c'est à améliorer,mais cela te donne une trame !

Code : Tout sélectionner


  Enumeration
    #Window : #ProgressBar : #Button : #Question : #Reponse
  EndEnumeration
  
  Global Th
  
  Procedure Open_Window_0()
    If OpenWindow(#Window, 305, 80, 600, 300, "Q C M",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      If CreateGadgetList(WindowID(#Window))
        ProgressBarGadget(#ProgressBar, 90, 250, 410, 20, 0, 500)
        ButtonGadget(#Button, 90, 170, 150, 20, "Début du Q.C.M.")
        TextGadget(  #Question,10,10,500,30,"")
        StringGadget(  #Reponse,10,50,500,30,"")
      EndIf
    EndIf
  EndProcedure
  
  Procedure Laps(Param)
    Repeat
      SetGadgetState(#ProgressBar,GetGadgetState(#ProgressBar)+1)
      Delay(10)
      If GetGadgetState(#ProgressBar)=500
        MessageRequester("Questionaire","Temps écoulé")
        SetGadgetState(#ProgressBar,0)
        SetGadgetText(#Button,"Question Suivante" )
        PauseThread(Th)
      EndIf
    ForEver
  EndProcedure

  Open_Window_0()
  
  Th = CreateThread(@Laps(),0)
  PauseThread(Th)
  
  Repeat ; Start of the event loop
    
    Event = WaitWindowEvent() ; This line waits until an event is received from Windows
    GadgetID = EventGadget() ; Is it a gadget event?
    If Event = #PB_Event_Gadget
      If GadgetID = #Button
        If GetGadgetText(#Button)<>"Valider"
          SetGadgetText(#Button,"Valider" )
          ResumeThread(Th)
          n+1
          SetGadgetText(#Question,"Question Numéro : "+Str(n))
          SetGadgetText(#Reponse,"")
          SetActiveGadget(#Reponse)
        Else
          If GetGadgetState(#ProgressBar)=500
            ResumeThread(Th)
          Else
            PauseThread(Th)
           SetGadgetText(#Button,"Détail Réponse" )
            MessageRequester("Traitement Réponse", "Traitement si Réponse Vrai ou Fausse")
            SetGadgetState(#ProgressBar,0)
            SetGadgetText(#Button,"Question Suivante" )
          ;  If Reponse Juste....
          ;  If réponse Fausse ....
          EndIf
        EndIf
      EndIf
    EndIf
  Until Event = #PB_Event_CloseWindow ; End of the event loop
  End


Publié : dim. 27/mai/2007 21:50
par MetalOS
Un grand merci pour vos réponse je v tester tous ca et je vous tien au courant. Merci

Publié : lun. 28/mai/2007 16:55
par Thierryfr
Dobro
tu code avec quel version de PB?

parceque dans une ligne de ton code c'est plutot la version 3.94
If OpenWindow (0, 100, 100, 100, 100, #PB_Window_SystemMenu , "" )
c'est plutot en 4.02 :

If OpenWindow (0, 100, 100, 100, 100, "" ,#PB_Window_SystemMenu )

Publié : lun. 28/mai/2007 19:20
par Backup
Thierryfr a écrit :Dobro
tu code avec quel version de PB?

parceque dans une ligne de ton code c'est plutot la version 3.94
If OpenWindow (0, 100, 100, 100, 100, #PB_Window_SystemMenu , "" )
c'est plutot en 4.02 :

If OpenWindow (0, 100, 100, 100, 100, "" ,#PB_Window_SystemMenu )
ce sont des codes qui sorte de mes archives :D
donc certains sont en v 3.94 :D
mais c'est pas dur de les passer e, v 4.00 :D

Publié : mar. 29/mai/2007 10:30
par MetalOS
J'ais tester ton code brossden est c exactement ce que je cherchais merci à toi, merci a toi aussi dobro ton code m'aidera pour autre chose.

Publié : mar. 29/mai/2007 12:05
par MetalOS
brossden, j'ais donc tester ton code pour essayer de comprendre mais pour passer a une autre question ca ne marche pas il me fait aller a la derniere question directement.

Voici le code pour la gestion de mes question

Code : Tout sélectionner

ElseIf GadgetID = #Button_0
    
      If GetGadgetText(#Button_0)<>"Valider"
          SetGadgetText(#Button_0,"Valider" )
          ResumeThread(Th)
          n+1
          ClearGadgetItemList(#Editor_0)
          AddGadgetItem(#Editor_0,0,Question1$)
          AddGadgetItem(#Editor_0,1,Rep1a$)
          AddGadgetItem(#Editor_0,2,Rep1b$)
          AddGadgetItem(#Editor_0,3,Rep1c$)
          AddGadgetItem(#Editor_0,4,Rep1d$)
        Else
          If GetGadgetState(#ProgressBar_1)=500
            ResumeThread(Th)
          Else
            PauseThread(Th)
           SetGadgetText(#Button_0,"Détail Réponse" )
            SetGadgetState(#ProgressBar_1,0)
            SetGadgetText(#Button_0,"Question Suivante" )
            If GetGadgetState(#CheckBox_2)
               AddGadgetItem(#Editor_1,0,RepV$)
               StatusBarText(#StatusBar_0,1," + 1")
            Else
               AddGadgetItem(#Editor_1,0,RepF$)
               StatusBarText(#StatusBar_0,1," - 1")
            EndIf
            
            
            
            If GetGadgetText(#Button_0)<>"Valider"
          SetGadgetText(#Button_0,"Valider" )
          ResumeThread(Th)
          n+1
          ClearGadgetItemList(#Editor_0)
          AddGadgetItem(#Editor_0,0,Question2$)
          AddGadgetItem(#Editor_0,1,Rep2a$)
          AddGadgetItem(#Editor_0,2,Rep2b$)
          AddGadgetItem(#Editor_0,3,Rep2c$)
          AddGadgetItem(#Editor_0,4,Rep2d$)
        Else
          If GetGadgetState(#ProgressBar_1)=500
            ResumeThread(Th)
          Else
            PauseThread(Th)
           SetGadgetText(#Button_0,"Détail Réponse" )
            SetGadgetState(#ProgressBar_1,0)
            SetGadgetText(#Button_0,"Question Suivante" )
            If GetGadgetState(#CheckBox_2)
               AddGadgetItem(#Editor_1,0,RepV$)
               StatusBarText(#StatusBar_0,1," + 1")
            Else
               AddGadgetItem(#Editor_1,0,RepF$)
               StatusBarText(#StatusBar_0,1," - 1")
            EndIf
            EndIf
            EndIf
            
            
            
            If GetGadgetText(#Button_0)<>"Valider"
          SetGadgetText(#Button_0,"Valider" )
          ResumeThread(Th)
          n+1
          ClearGadgetItemList(#Editor_0)
          AddGadgetItem(#Editor_0,0,Question3$)
          AddGadgetItem(#Editor_0,1,Rep3a$)
          AddGadgetItem(#Editor_0,2,Rep3b$)
          AddGadgetItem(#Editor_0,3,Rep3c$)
          AddGadgetItem(#Editor_0,4,Rep3d$)
        Else
          If GetGadgetState(#ProgressBar_1)=500
            ResumeThread(Th)
          Else
            PauseThread(Th)
           SetGadgetText(#Button_0,"Détail Réponse" )
            SetGadgetState(#ProgressBar_1,0)
            SetGadgetText(#Button_0,"Question Suivante" )
            If GetGadgetState(#CheckBox_2)
               AddGadgetItem(#Editor_1,0,RepV$)
               StatusBarText(#StatusBar_0,1," + 1")
            Else
               AddGadgetItem(#Editor_1,0,RepF$)
               StatusBarText(#StatusBar_0,1," - 1")
            EndIf
            EndIf
            EndIf
      
          EndIf
        EndIf
si quelqu'un peut m'aider car je ne vois pas comment declarer ca autrement.

Publié : mer. 30/mai/2007 13:32
par MetalOS
Je galère avec ce projet :cry:

Publié : mer. 30/mai/2007 15:04
par brossden
MetalOS

Ton Code n'est pas complet et tu as rajouté des gadget alors dur dur de tester, post ton soft entier !

Publié : mer. 30/mai/2007 15:54
par MetalOS
Désoler je me suis planter dans le copier coller voici la source complete (Attention c le bordel dans ma source ) :lol:

Code : Tout sélectionner

InitSound(); on initialise l'environnement son

;-----------Message d'introduction----------------------
Intro1$ = "Bienvenue sur QCM ."
Intro2$ = "Cliquer sur le boutton QUESTION SUIVANTE pour commencer le test."
;-----------Fin Message d'introduction------------------

;-----------Début des Questions-------------------------
Question1$ = "1 "
  Rep1a$ = "Réponse A "
  Rep1b$ = "Réponse B "
  Rep1c$ = "Réponse C "
  Rep1d$ = "Réponse D "
  
Question2$ = "2"
  Rep2a$ = "Réponse A "
  Rep2b$ = "Réponse B "
  Rep2C$ = "Réponse C "
  Rep2D$ = "Réponse D "
  
Question3$ = "3 "
  Rep3a$ = "Réponse A "
  Rep3b$ = "Réponse B "
  Rep3c$ = "Réponse C "
  Rep3d$ = "Réponse D "
  
Question4$ = "4 "
  Rep4a$ = "Réponse A "
  Rep4b$ = "Réponse B "
  Rep4c$ = "Réponse C "
  Rep4c$ = "Réponse D "
  
  
RepV$ = "Réponse juste."
RepF$ = "Réponse fausse."
;-----------Fin des Questions---------------------------

;- Window Constants
;
Enumeration
  #Window_1
EndEnumeration

;- MenuBar Constants
;
Enumeration
  #MenuBar_2
EndEnumeration

Enumeration
  #MENU_4
  #MENU_5
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Image_0
  #ProgressBar_0
  #Frame3D_0
  #Editor_0
  #Frame3D_1
  #CheckBox_0
  #CheckBox_1
  #CheckBox_2
  #CheckBox_3
  #Frame3D_2
  #Editor_1
  #Button_0
  #Frame3D_3
  #String_0
  #Text_0
  #Button_2
  #String_1
  #ListIcon_0
  #Button_3
  #Image_2
  #Text_1
  #Text_2
  #Editor_3
  #Button_4
  #ProgressBar_1
  #SOn
EndEnumeration

;- StatusBar Constants
;
Enumeration
  #StatusBar_0
EndEnumeration


;- Fonts
Global FontID1
FontID1 = LoadFont(1, "Georgia", 8)
Global FontID2
FontID2 = LoadFont(2, "Georgia", 10)
Global FontID3
FontID3 = LoadFont(3, "Georgia", 12, #PB_Font_Bold)
Global FontID4
FontID4 = LoadFont(4, "Georgia", 12, #PB_Font_Underline)
Global FontID5
FontID5 = LoadFont(5, "Georgia", 24)
;- Image Plugins
UseJPEGImageDecoder()

;- Image Globals
Global Image0
Global Image1
Global Th

;- Catch Images
Image0 = CatchImage(0, ?Image0)
Image1 = CatchImage(1, ?Image1)

;- Images
DataSection
Image0:
  IncludeBinary "D:\Divers\Sources Logiciel InfoProject\QCM\logo.bmp"
Image1:
  IncludeBinary "D:\Divers\Sources Logiciel InfoProject\QCM\sst.jpg"
EndDataSection

Procedure Laps(Param)
    Repeat
      SetGadgetState(#ProgressBar_1,GetGadgetState(#ProgressBar_1)+1)
      Delay(100)
      If LoadSound(#Son, "c:\WINDOWS\system32\oobe\images\clickerx.wav") ; on va chercher le son
       PlaySound(#Son , 0); on joue le son
       EndIf
      If GetGadgetState(#ProgressBar_1)=500
        MessageRequester("Questionaire","Temps écoulé")
        SetGadgetState(#ProgressBar_1,0)
        SetGadgetText(#Button_0,"Question Suivante" )
        PauseThread(Th)
      EndIf
    ForEver
  EndProcedure

Procedure Open_Window_1()
  If OpenWindow(#Window_1, 871, 293, 563, 456, "QCM.",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_BorderLess | #PB_Window_ScreenCentered | #PB_Window_WindowCentered )
    If CreateMenu(#MenuBar_2, WindowID(#Window_1))
      MenuTitle("Fichier")
      MenuItem(#MENU_4, "Quitter")
      EndIf

      If CreateStatusBar(#StatusBar_0, WindowID(#Window_1))
          AddStatusBarField(50)
          StatusBarText(#StatusBar_0,0," Points :",#PB_StatusBar_Raised)
          AddStatusBarField(50)
          AddStatusBarField(900)
        EndIf
        

        If CreateGadgetList(WindowID(#Window_1))
          Frame3DGadget(#Frame3D_0, 5, 5, 550, 180, "Question :")
          SetGadgetFont(#Frame3D_0, FontID1)
          EditorGadget(#Editor_0, 15, 25, 530, 145 ,#PB_Editor_ReadOnly)
          Frame3DGadget(#Frame3D_1, 5, 195, 550, 70, "Réponse :")
          SetGadgetFont(#Frame3D_1, FontID1)
          CheckBoxGadget(#CheckBox_0, 25, 225, 90, 15, "Réponse A", #PB_CheckBox_Right | #PB_CheckBox_Center)
          SetGadgetFont(#CheckBox_0, FontID2)
          CheckBoxGadget(#CheckBox_1, 160, 225, 85, 15, "Réponse B", #PB_CheckBox_Right | #PB_CheckBox_Center)
          SetGadgetFont(#CheckBox_1, FontID2)
          CheckBoxGadget(#CheckBox_2, 300, 225, 85, 15, "Réponse C", #PB_CheckBox_Right | #PB_CheckBox_Center)
          SetGadgetFont(#CheckBox_2, FontID2)
          CheckBoxGadget(#CheckBox_3, 450, 225, 85, 15, "Réponse D", #PB_CheckBox_Right | #PB_CheckBox_Center)
          SetGadgetFont(#CheckBox_3, FontID2)
          Frame3DGadget(#Frame3D_2, 5, 290, 550, 110, "Correction :")
          SetGadgetFont(#Frame3D_2, FontID1)
          EditorGadget(#Editor_1, 10, 310, 540, 80 ,#PB_Editor_ReadOnly)
          ButtonGadget(#Button_0, 440, 270, 115, 20, "Lancer le QCM")
          SetGadgetFont(#Button_0, FontID1)
          ProgressBarGadget(#ProgressBar_1, 102, 418, 460, 18, 0, 500)
          

          
        EndIf
      EndIf
EndProcedure

Open_Window_1()

AddGadgetItem(#Editor_0, 0,Intro1$)
AddGadgetItem(#Editor_0, 1,Intro2$)

Th = CreateThread(@Laps(),0)
  PauseThread(Th)

Repeat ; Start of the event loop
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  
  GadgetID = EventGadget() ; Is it a gadget event?
  
  EventType = EventType() ; The event type
  
  ;You can place code here, and use the result as parameters for the procedures
  
  
  If Event = #PB_Event_Menu
    
    MenuID = EventMenu()
    
    If MenuID = #MENU_4
      Debug "GadgetID: #MENU_4"
       End
    EndIf
    
  EndIf
  
  
  If Event = #PB_Event_Gadget
    
    If GadgetID = #Image_0
      
    ElseIf GadgetID = #ProgressBar_0
      
    ElseIf GadgetID = #Editor_0
      
    ElseIf GadgetID = #CheckBox_0
      
    ElseIf GadgetID = #CheckBox_1
      
    ElseIf GadgetID = #CheckBox_2
      
    ElseIf GadgetID = #CheckBox_3
      
    ElseIf GadgetID = #Editor_1
      
    ElseIf GadgetID = #Button_0
    
      If GetGadgetText(#Button_0)<>"Valider"
          SetGadgetText(#Button_0,"Valider" )
          ResumeThread(Th)
          n+1
          ClearGadgetItemList(#Editor_0)
          AddGadgetItem(#Editor_0,0,Question1$)
          AddGadgetItem(#Editor_0,1,Rep1a$)
          AddGadgetItem(#Editor_0,2,Rep1b$)
          AddGadgetItem(#Editor_0,3,Rep1c$)
          AddGadgetItem(#Editor_0,4,Rep1d$)
        Else
          If GetGadgetState(#ProgressBar_1)=500
            ResumeThread(Th)
          Else
            PauseThread(Th)
           SetGadgetText(#Button_0,"Détail Réponse" )
            SetGadgetState(#ProgressBar_1,0)
            SetGadgetText(#Button_0,"Question Suivante" )
            If GetGadgetState(#CheckBox_2)
               AddGadgetItem(#Editor_1,0,RepV$)
            Else
               AddGadgetItem(#Editor_1,0,RepF$)
            EndIf
            
            If GetGadgetText(#Button_0)<>"Valider"
          SetGadgetText(#Button_0,"Valider" )
          ResumeThread(Th)
          n+1
          ClearGadgetItemList(#Editor_0)
          AddGadgetItem(#Editor_0,0,Question2$)
          AddGadgetItem(#Editor_0,1,Rep2a$)
          AddGadgetItem(#Editor_0,2,Rep2b$)
          AddGadgetItem(#Editor_0,3,Rep2c$)
          AddGadgetItem(#Editor_0,4,Rep2d$)
        Else
          If GetGadgetState(#ProgressBar_1)=500
            ResumeThread(Th)
          Else
            PauseThread(Th)
           SetGadgetText(#Button_0,"Détail Réponse" )
            SetGadgetState(#ProgressBar_1,0)
            SetGadgetText(#Button_0,"Question Suivante" )
            If GetGadgetState(#CheckBox_2)
               AddGadgetItem(#Editor_1,0,RepV$)
            Else
               AddGadgetItem(#Editor_1,0,RepF$)
            EndIf
            
            If GetGadgetText(#Button_0)<>"Valider"
          SetGadgetText(#Button_0,"Valider" )
          ResumeThread(Th)
          n+1
          ClearGadgetItemList(#Editor_0)
          AddGadgetItem(#Editor_0,0,Question3$)
          AddGadgetItem(#Editor_0,1,Rep3a$)
          AddGadgetItem(#Editor_0,2,Rep3b$)
          AddGadgetItem(#Editor_0,3,Rep3c$)
          AddGadgetItem(#Editor_0,4,Rep3d$)
        Else
          If GetGadgetState(#ProgressBar_1)=500
            ResumeThread(Th)
          Else
            PauseThread(Th)
           SetGadgetText(#Button_0,"Détail Réponse" )
            SetGadgetState(#ProgressBar_1,0)
            SetGadgetText(#Button_0,"Question Suivante" )
            If GetGadgetState(#CheckBox_2)
               AddGadgetItem(#Editor_1,0,RepV$)
            Else
               AddGadgetItem(#Editor_1,0,RepF$)
            EndIf
      EndIf
      EndIf
      EndIf
      EndIf
          EndIf
        EndIf
        
        
    ElseIf GadgetID = #String_0
      
    ElseIf GadgetID = #Button_2
      
    ElseIf GadgetID = #String_1
      
    ElseIf GadgetID = #ListIcon_0
      
    ElseIf GadgetID = #Button_3
      
    ElseIf GadgetID = #Image_2
      
    ElseIf GadgetID = #Editor_3
      
    ElseIf GadgetID = #Button_4
      
    EndIf
    
  EndIf
  
Until Event = #PB_Event_CloseWindow ; End of the event loop

End
;

Publié : jeu. 31/mai/2007 9:21
par brossden
Ma solution :

Nota :

Le questionnaire est ici integré au programme ce qui n'est pas simple à modifier, il serait plus judicieux à mon avis de créer un fichier contenant les différents champs pour chaque question ce qui me semble-t'il serait plus pratique pour celui qui crée les questions mais bon... , dans un premier temps !


Code : Tout sélectionner



InitSound(); on initialise l'environnement son
UseJPEGImageDecoder()
;-----------Message d'introduction----------------------
Intro1$ = "Bienvenue sur QCM ."
Intro2$ = "Cliquer sur le boutton Lancer QCM pour commencer le test."
;-----------Fin Message d'introduction------------------

;-----------Questions / Réponses-------------------------
Structure Champs
  Libel.s : PropA.s : PropB.s : PropC.s : PropD.s : Reponse.s : Solution.s
EndStructure
;- Globals
Global FontID1= LoadFont(1, "Georgia", 8) ,FontID2 = LoadFont(2, "Georgia", 10)
Global FontID3 = LoadFont(3, "Georgia", 12, #PB_Font_Bold) ,FontID4 = LoadFont(4, "Georgia", 12, #PB_Font_Underline)
Global FontID5 = LoadFont(5, "Georgia", 24) ,Image0, Image1, Th, Note, Nbr, NewList Quest.Champs()

;-----------Création questionnaire---------------------------

AddElement(Quest())
Quest()\Libel = "Quelle est la couleur du cheval blanc d'Henri IV  ?"
Quest()\PropA = "A - Gris " : Quest()\PropB = "B - Blanc"  :Quest()\PropC = "C - Noir " : Quest()\PropD = "D - Baie "
Quest()\Reponse = "B"
Quest()\Solution = "La réponse est dans la question !!"

AddElement(Quest())
Quest()\Libel = "Quelle est la vitesse de la lumière ?"
Quest()\PropA = "A -  10 000 Km/s" :Quest()\PropB = "B - 150 000 Kms" :Quest()\PropC = "C - 300 000 Km/s" :Quest()\PropD = "D - 500 000 Km/s"
Quest()\Reponse = "C"
Quest()\Solution = "La Bonne réponse est 300 000 Kilomètres par seconde"

AddElement(Quest())
Quest()\Libel = "Quelle infraction occasionne un retrait de point ?"
Quest()\PropA = "A - Dépassement vitesse limite " : Quest()\PropB = "B - Téléphoner au Volant"
Quest()\PropC = "C - Oubli de la ceinture de sécurité" :Quest()\PropD = "D - Taux d'alcoolémie > 0.5 g/l"
Quest()\Reponse = "ABCD"
Quest()\Solution = "Toutes ces infractions sont passibles d'un retrait de point(s) !!"

AddElement(Quest())
Quest()\Libel = "Quelle est la couleur du cheval gris d'Henri IV "
Quest()\PropA = "A - Gris " : Quest()\PropB = "B - Blanc" : Quest()\PropC = "C - Noir " : Quest()\PropD = "D - Baie "
Quest()\Reponse = "A"
Quest()\Solution = "La réponse est dans La question !!"

;- Repère dela fin du questinnaire !!
AddElement(Quest())
Quest()\Libel = "Fin"

;-----------Fin du Questionnaire---------------------------

;- Constantes

Enumeration
  #Window_1 : #MenuBar_2 : #MENU_4 : #MENU_5 : #Image_0 : #ProgressBar_0 : #Frame3D_0
  #Editor_0 : #Frame3D_1 : #CheckBox_0 : #CheckBox_1 : #CheckBox_2 : #CheckBox_3 : #Frame3D_2
  #Editor_1 : #Button_0 : #Frame3D_3 : #String_0 : #Text_0 : #Button_2 : #String_1 : #ListIcon_0
  #Button_3 : #Image_2 : #Text_1 : #Text_2 : #Editor_3 : #Button_4 : #ProgressBar_1 : #SOn : #StatusBar_0
EndEnumeration

;- Catch Images
Image0 = CatchImage(0, ?Image0) : Image1 = CatchImage(1, ?Image1)

;- Images
DataSection
Image0:
;IncludeBinary "D:\Divers\Sources Logiciel InfoProject\QCM\logo.bmp"
Image1:
;IncludeBinary "D:\Divers\Sources Logiciel InfoProject\QCM\sst.jpg"
EndDataSection

Procedure Questionne()
  SetGadgetState(#CheckBox_0,0) : SetGadgetState(#CheckBox_1,0)
  SetGadgetState(#CheckBox_2,0) : SetGadgetState(#CheckBox_3,0)
  ClearGadgetItemList(#Editor_0) : ClearGadgetItemList(#Editor_1)
  AddGadgetItem(#Editor_0,-1,Quest()\Libel)
  AddGadgetItem(#Editor_0,-1,"")
  AddGadgetItem(#Editor_0,-1,Quest()\PropA) : AddGadgetItem(#Editor_0,-1,Quest()\PropB)
  AddGadgetItem(#Editor_0,-1,Quest()\PropC) : AddGadgetItem(#Editor_0,-1,Quest()\PropD)
EndProcedure

Procedure Reponse()
  Rep.s=""
  Nbr+1
  If GetGadgetState(#CheckBox_0) : Rep.s+"A" :EndIf
  If GetGadgetState(#CheckBox_1) : Rep.s+"B" :EndIf
  If GetGadgetState(#CheckBox_2) : Rep.s+"C" :EndIf
  If GetGadgetState(#CheckBox_3) : Rep.s+"D" :EndIf
  ClearGadgetItemList(#Editor_1)
  If Rep=Quest()\Reponse
    AddGadgetItem(#Editor_1,-1,"BRAVO ! Bonne réponse")
    Note+1
  Else
    AddGadgetItem(#Editor_1,-1,"FAUX!")
    AddGadgetItem(#Editor_1,-1,"Soyez plus attentif :")
    AddGadgetItem(#Editor_1,-1,"")
    AddGadgetItem(#Editor_1,-1,Quest()\Solution)
  EndIf
    StatusBarText(#StatusBar_0,1,Str(Note)+ "/" +Str(Nbr));,#PB_StatusBar_Raised)
EndProcedure

Procedure Laps(Param)
  Repeat
    SetGadgetState(#ProgressBar_1,GetGadgetState(#ProgressBar_1)+10)
    Delay(100)
    If LoadSound(#SOn, "c:\WINDOWS\system32\oobe\images\clickerx.wav") ; on va chercher le son
      PlaySound(#SOn , 0); on joue le son
    EndIf
    If GetGadgetState(#ProgressBar_1)=500
      Reponse()
      MessageRequester("Questionaire","Temps écoulé")
      SetGadgetState(#ProgressBar_1,0)
      SetGadgetText(#Button_0,"Question Suivante" )
      PauseThread(Th)
    EndIf
  ForEver
EndProcedure

Procedure Open_Window_1()
  If OpenWindow(#Window_1, 871, 293, 563, 456, "QCM.",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_BorderLess | #PB_Window_ScreenCentered | #PB_Window_WindowCentered )
    If CreateMenu(#MenuBar_2, WindowID(#Window_1))
      MenuTitle("Fichier")
      MenuItem(#MENU_4, "Quitter")
    EndIf
    If CreateStatusBar(#StatusBar_0, WindowID(#Window_1))
      AddStatusBarField(50)
      StatusBarText(#StatusBar_0,0," Points :",#PB_StatusBar_Raised)
      AddStatusBarField(50)
      StatusBarText(#StatusBar_0,1,"")
      AddStatusBarField(900)
    EndIf
    If CreateGadgetList(WindowID(#Window_1))
      Frame3DGadget(#Frame3D_0, 5, 5, 550, 180, "Question :")
      SetGadgetFont(#Frame3D_0, FontID1)
      EditorGadget(#Editor_0, 15, 25, 530, 145 ,#PB_Editor_ReadOnly)
      Frame3DGadget(#Frame3D_1, 5, 195, 550, 70, "Réponse :")
      SetGadgetFont(#Frame3D_1, FontID1)
      CheckBoxGadget(#CheckBox_0, 25, 225, 90, 15, "Réponse A", #PB_CheckBox_Right | #PB_CheckBox_Center)
      SetGadgetFont(#CheckBox_0, FontID2)
      CheckBoxGadget(#CheckBox_1, 160, 225, 85, 15, "Réponse B", #PB_CheckBox_Right | #PB_CheckBox_Center)
      SetGadgetFont(#CheckBox_1, FontID2)
      CheckBoxGadget(#CheckBox_2, 300, 225, 85, 15, "Réponse C", #PB_CheckBox_Right | #PB_CheckBox_Center)
      SetGadgetFont(#CheckBox_2, FontID2)
      CheckBoxGadget(#CheckBox_3, 450, 225, 85, 15, "Réponse D", #PB_CheckBox_Right | #PB_CheckBox_Center)
      SetGadgetFont(#CheckBox_3, FontID2)
      Frame3DGadget(#Frame3D_2, 5, 290, 550, 110, "Correction :")
      SetGadgetFont(#Frame3D_2, FontID1)
      EditorGadget(#Editor_1, 10, 310, 540, 80 ,#PB_Editor_ReadOnly)
      ButtonGadget(#Button_0, 440, 270, 115, 20, "Lancer le QCM")
      SetGadgetFont(#Button_0, FontID1)
      ProgressBarGadget(#ProgressBar_1, 102, 418, 460, 18, 0, 500)
    EndIf
  EndIf
EndProcedure

Open_Window_1()
AddGadgetItem(#Editor_0, -1,Intro1$)
AddGadgetItem(#Editor_0, -1,Intro2$)
FirstElement(Quest())
Th = CreateThread(@Laps(),0)
PauseThread(Th)

Repeat ; Start of the event loop
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  GadgetID = EventGadget() ; Is it a gadget event?
  If Event = #PB_Event_Menu
    MenuID = EventMenu()
    If MenuID = #MENU_4
      Debug "GadgetID: #MENU_4"
      End
    EndIf
  EndIf
  If Event = #PB_Event_Gadget
    If GadgetID = #Button_0
      If Quest()\Libel="Fin"
        MessageRequester("Note", "Votre Note est de :"+Str(Note)+" /4  soit : "+Str(Note*5)+" sur 20" )
        End
      EndIf
      If GetGadgetText(#Button_0)<>"Valider"
        SetGadgetText(#Button_0,"Valider" )
        ResumeThread(Th)
        n+1
        Questionne()
      Else
        If GetGadgetState(#ProgressBar_1)=500
          ResumeThread(Th)
        Else
          PauseThread(Th)
          SetGadgetText(#Button_0,"Détail Réponse" )
          SetGadgetState(#ProgressBar_1,0)
          SetGadgetText(#Button_0,"Question Suivante" )
          Reponse()
          NextElement(Quest.Champs())
        EndIf
      EndIf
    EndIf
  EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End



Publié : jeu. 31/mai/2007 19:25
par MetalOS
Merci Brossden pour ton aide, je v etudier ta source pour bien comprendre. Un grand merci à toi.