Page 1 sur 1

[Résolu] Variable qui ne se réinitialise pas

Publié : mer. 13/janv./2016 21:26
par Micoute
Bonsoir à tous,

j'ai un soucis, car quand je valide la première réponse, le programme valide les autre question avec la même réponse et je ne vois pas où est l'erreur.

Pouvez-vous m'aider, car il ne faisait pas ça avant, je vous en remercie par anticipation.

Code : Tout sélectionner

;Capitales.pb
; TODO prévoir un bouton pour revenir au menu
;Thèmes :
;Capitales des nouvelles régions Françaises
;Capitales européennes
;Allemagne
;Royaume-uni
;Belgique
;Irlande
;Luxembourg
;Danemark
;Pays-bas
;Suède
;Espagne
;Portugal

; On peut valider avec le bouton "Valider" ou la touche "entrée"
; On peut quitter avec le bouton "Quitter" ou la touche "Echap"

Global.s ChefLieu, Region, Capitale, Pays

Enumeration Fenetre
  #Fenetre_principale
EndEnumeration

Enumeration Gadgets
  #Titre
  #Question
  #tChefLieu
  #tIndication
  #Reponse
  #Bouton_Ok
  #Bouton_Quitter
  #Bouton_Menu
  #Barre_Etat
EndEnumeration

Enumeration sprites
  #sprite
EndEnumeration

Enumeration Polices
  #Police
  #Police1
EndEnumeration

Declare.s RepeterCar(Quantite.i,Caractere.s)
Declare.s RepeterChaine(Chaine.s, Multiplicateur.i)
Declare Bonne_reponse()
Declare Mauvaise_reponse()
Declare.s Reponses()
Declare Questionnaire()
Declare Tirer_au_sort()

Global NewList Question_Deja_Posee()
Global x, Bonne_Reponse, Compteur, Niveau
Global Index = 0, Oui = 1, Non = 0, ListeTerminee = Non, Total, Nb_Questions
Global Choix, Reponse.s, grepondu$, rep1$, Texte$

Global Police = LoadFont(#Police, "Arial"  ,  15, #PB_Font_Bold)
Global Police1 = LoadFont(#Police1, "Carolingia"  ,  20, #PB_Font_Bold)

UseJPEGImageDecoder()
UsePNGImageDecoder()

Procedure RemplirTableau()  
  ;Paramètres divers pour le jeu
  If Choix = 1 ;Régions françaises
    Total = 11
    Nb_Questions = 12
  ElseIf Choix = 2 ; capitales européennes  
    Total = 26
    Nb_Questions = 27
  ElseIf Choix = 3 ; lands allemands
    Total = 14
    Nb_Questions = 15
  ElseIf Choix = 4 ; royaume-uni
    Total = 3
    Nb_Questions = 4
  ElseIf Choix = 5 ;Belgique
    Total = 10
    Nb_Questions = 11
  ElseIf Choix = 6 ;Irlande
    Total = 3
    Nb_Questions = 4
  ElseIf Choix = 7 ;Luxembourg
    Total = 2
    Nb_Questions = 3
  ElseIf Choix = 8 ;Danemark
    Total = 5
    Nb_Questions = 6
  ElseIf Choix = 9 ;Pays bas
    Total = 11
    Nb_Questions = 12
  ElseIf Choix = 10 ;Suède
    Total = 24
    Nb_Questions = 25
  ElseIf Choix = 11 ;Espagne
    Total = 48
    Nb_Questions = 49
  ElseIf Choix = 12 ;Portugal
    Total = 4
    Nb_Questions = 5
  EndIf
  
  Global Dim indice.s(Total,1)
  
  While ListeTerminee = Non
      
      Read.s Region
      Read.s ChefLieu
      If Region = "STOP" And ChefLieu = "STOP"
        ListeTerminee = Oui
      Else  
        ChefLieu  = UCase(ChefLieu)
        Region    = UCase(Region)
        indice(index, 0) = Region
        indice(index, 1) = ChefLieu
      EndIf
      Index + 1
    Wend

EndProcedure

Procedure Menu()
  Protected Ligne = 10, Colonne
  #LargEcr = 800
  #HautEcr = 600
  
  ; Initialiser le sprite et le clavier du système et un écran 800x600, 32 bits
  If InitSprite() = 0 Or InitKeyboard() = 0 Or OpenScreen(#LargEcr,#HautEcr,32,"") = 0
    MessageRequester("Erreur!", "Impossible d'initialiser l'environnement", #PB_MessageRequester_Ok)
    End
  EndIf
  
  ; Dimensionner notre TableauNom
  Global Dim TableauNom.s(11)
  
  ; Attribuer nos valeurs au tableau
  TableauNom(0) = "A - régions françaises"
  TableauNom(1) = "B - union européenne"
  TableauNom(2) = "C - régions allemandes"
  TableauNom(3) = "D - royaume-uni"
  TableauNom(4) = "E - Belgique"
  TableauNom(5) = "F - Irlande"
  TableauNom(6) = "G - Luxembourg"
  TableauNom(7) = "H - Danemark"
  TableauNom(8) = "I - Pays-bas"
  TableauNom(9) = "J - Suède"
  TableauNom(10) = "K - Espagne"
  TableauNom(11) = "L - Portugal"
  
  Global CouleurNettoyage
  
  ; Maintenant charger le sprite
  ;LoadSprite(#sprite, "carte_UE_annees_adhesion.png", #PB_Sprite_AlphaBlending)
  CouleurNettoyage = $FFFFFF
  
  ClearScreen(CouleurNettoyage)  ; vider la mémoire tampon de sortie en vert
  
  ;ZoomSprite(#sprite, 800, 600)
  ;DisplayTransparentSprite(#sprite, 0, 0)
  StartDrawing(ScreenOutput())
  
  BackColor(CouleurNettoyage)
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawingFont(Police1)
  
  ; Afficher le texte à l'écran demandant à l'utilisateur l'entrée
  Texte$ = "CAPITALES D'EUROPE"
  Ligne + TextHeight(" ")
  Colonne = (#LargEcr-TextWidth(Texte$))/2
  DrawText(Colonne,Ligne, Texte$, $0)
  DrawingMode(#PB_2DDrawing_Transparent)
  Ligne = 150
  For x = 0 To 11
  Texte$ = TableauNom(x)
  Ligne + TextHeight(" ")
  Colonne = 300 ;(#LargEcr-TextWidth(Texte$))/2
  DrawText(Colonne, Ligne, Texte$,$0)
  Next x
  StopDrawing()
  
  FlipBuffers()    ; basculer les tampons pour montrer à l'utilisateur la demande
  
  ; Initialiser une variable de type chaîne et la définir comme vide
  Global.s Reponse = ""
  
  ; Maintenant, dire à PB d'attendre jusqu'à ce qu'une touche soit enfoncée avant d'aller plus loin
  While Reponse = ""
    ; Appeler PB pour examiner la fonction clavier pour voir s'il y a une activité du clavier
    ExamineKeyboard()
    ; S'il ya une activité, attribuer à n'importe quelle touche qui a été pressée, notre variable Reponse.s
    Reponse = UCase(KeyboardInkey())
  Wend
  
  ClearScreen(CouleurNettoyage)  ; vider la mémoire tampon de sortie en vert
                                 ; Commencer à dessiner dans le tampon de sortie
  
  ;DisplayTransparentSprite(#sprite, 0, 0)
  StartDrawing(ScreenOutput())
  DrawingFont(Police1)
  DrawingMode(#PB_2DDrawing_Transparent)
  
  BackColor(CouleurNettoyage)
  FrontColor(0)
  
  ; vérifier pour voir si l'utilisateur entre un nombre entre 1 et 6 ou non
    Ligne = 200
  If Reponse = "A"
    Texte$ = "Tu as choisi les régions françaises !"
    ; si c'est le cas, alors écrire le texte à ce sujet
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  ElseIf Reponse = "B"
    Texte$ = "Tu as choisi les capitales européennes !"
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  ElseIf Reponse = "C"
    Texte$ = "Tu as choisi les lands allemands !"
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  ElseIf Reponse = "D"
    Texte$ = "Tu as choisi le royaume-uni !"
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  ElseIf Reponse = "E"
    Texte$ = "Tu as choisi la Belgique !"
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  ElseIf Reponse = "F"
    Texte$ = "Tu as choisi l'Irlande !"
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  ElseIf Reponse = "G"
    Texte$ = "Tu as choisi le Luxembourg !"
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  ElseIf Reponse = "H"
    Texte$ = "Tu as choisi le Danemark !"
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  ElseIf Reponse = "I"
    Texte$ = "Tu as choisi les Pays-bas !"
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  ElseIf Reponse = "J"
    Texte$ = "Tu as choisi la Suède !"
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  ElseIf Reponse = "K"
    Texte$ = "Tu as choisi l'Espagne !"
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  ElseIf Reponse = "L"
    Texte$ = "Tu as choisi le portugal !"
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  Else
    Texte$ = "Tu N'AS PAS fait de choix, ce sera donc:"
    ; sinon, juste lui dire qu'il n'a pas entré un numéro de question
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
    
    Ligne + TextHeight(" ")
    Texte$ = "les régions françaises ! "
    DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
    Ligne + TextHeight(" ")
  EndIf
  Ligne + TextHeight(" ")
  Texte$ = "Appuie sur une >touche fléchée< pour continuer."
  DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  Ligne + TextHeight(" ")
  Texte$ = "ou la >touche Echap< pour annuler."
  DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  
  StopDrawing()     
  
  FlipBuffers()      ; basculer le tampon pour montrer le résultat à l'utilisateur
  
  ; attendre qu'une touche soit pressée
  Repeat 
    ExamineKeyboard()
    If KeyboardReleased(#PB_Key_Down) Or 
       KeyboardReleased(#PB_Key_Up) Or 
       KeyboardReleased(#PB_Key_Left) Or 
       KeyboardReleased(#PB_Key_Right) Or 
       KeyboardReleased(#PB_Key_Escape)
      Resultat = 1
    EndIf  
  Until Resultat = 1
  
  Choix = Asc(Reponse)-64 ;parce que Asc("A") - 64 = 1

  If Choix > 12 Or Choix < 1
    Choix = 1
  EndIf  
  
  CloseScreen()
    
  If Choix = 1
    Restore Prefectures
    RemplirTableau()
  ElseIf Choix = 2
    Restore Capitales_europeenne
    RemplirTableau()
  ElseIf Choix = 3
    Restore regions_allemandes
    RemplirTableau()
  ElseIf Choix = 4
    Restore Royaume_uni
    RemplirTableau()
  ElseIf Choix = 5
    Restore Belgique
    RemplirTableau()
  ElseIf Choix = 6
    Restore Irlande
    RemplirTableau()
  ElseIf Choix = 7
    Restore luxembourg
    RemplirTableau()
  ElseIf Choix = 8
    Restore Danemark
    RemplirTableau()
  ElseIf Choix = 9
    Restore PaysBas
    RemplirTableau()
  ElseIf Choix = 10
    Restore Suede
    RemplirTableau()
  ElseIf Choix = 11
    Restore Espagne
    RemplirTableau()
  ElseIf Choix = 12
    Restore Portugal
    RemplirTableau()
  EndIf
  
  ProcedureReturn Choix
EndProcedure

Procedure Questionnaire()
  OpenWindow(#Fenetre_principale, 30,30, 760, 220, "Question n°"+Str(Compteur), 
             #PB_Window_ScreenCentered | #PB_Window_BorderLess)
  StickyWindow(#Fenetre_principale, 1)
  SetWindowColor(#Fenetre_principale,$D5EE72)
  TextGadget(#Titre, 0, 10, WindowWidth(#Fenetre_principale), 30, "Question n°"+Str(Compteur), #PB_Text_Center)
  If Choix = 1
    TextGadget(#Question, 0, 55, WindowWidth(#Fenetre_principale), 30, "Quelle est la capitale de la région "+indice(Bonne_Reponse, 0), 
               #PB_Text_Center)
    TextGadget(#tIndication, 0, 80, WindowWidth(#Fenetre_principale), 30, Left(indice(Bonne_Reponse, 1),1) +
                                                                          " " + RepeterChaine("- ",Len(indice(Bonne_Reponse,1))-2) +
                                                                          LCase(Right(indice(Bonne_Reponse, 1),1)),#PB_Text_Center)
  ElseIf Choix = 2
    If LCase(Left(indice(Bonne_Reponse, 0), 1)) = "a" Or LCase(Left(indice(Bonne_Reponse, 0), 1)) = "e" Or LCase(Left(indice(Bonne_Reponse, 0), 1)) = "i" Or
       LCase(Left(indice(Bonne_Reponse, 0), 1)) = "o" Or LCase(Left(indice(Bonne_Reponse, 0), 1)) = "u"
      Texte$ = "de l'"
    ElseIf LCase(Left(indice(Bonne_Reponse, 0), 10)) = "republique" Or LCase(indice(Bonne_Reponse, 0)) = "belgique" Or LCase(indice(Bonne_Reponse, 0)) = "suede" Or 
           LCase(indice(Bonne_Reponse, 0)) = "hongrie" Or LCase(indice(Bonne_Reponse, 0)) = "lettonie" Or LCase(indice(Bonne_Reponse, 0)) = "france" Or
           LCase(indice(Bonne_Reponse, 0)) = "grece" Or LCase(indice(Bonne_Reponse, 0)) = "slovaquie" Or LCase(indice(Bonne_Reponse, 0)) = "finlande" Or
           LCase(indice(Bonne_Reponse, 0)) = "slovenie" Or LCase(indice(Bonne_Reponse, 0)) = "roumanie" Or LCase(indice(Bonne_Reponse, 0)) = "bulgarie" Or
           LCase(indice(Bonne_Reponse, 0)) = "pologne"
      Texte$ = "de la "
    ElseIf LCase(indice(Bonne_Reponse, 0)) = "chypre" Or LCase(indice(Bonne_Reponse, 0)) = "malte"
      Texte$ = "de "
    ElseIf LCase(indice(Bonne_Reponse, 0)) = "pays-bas"
      Texte$ = "des "
    Else
      Texte$ = "du "
    EndIf  
    TextGadget(#Question, 0, 55, WindowWidth(#Fenetre_principale), 30, "Quelle est la capitale "+ Texte$ + indice(Bonne_Reponse, 0), 
               #PB_Text_Center)
    TextGadget(#tIndication, 0, 80, WindowWidth(#Fenetre_principale), 30, Left(indice(Bonne_Reponse, 1),1) +
                                                                          " " + RepeterChaine("- ",Len(indice(Bonne_Reponse,1))-2) +
                                                                          LCase(Right(indice(Bonne_Reponse, 1),1)),#PB_Text_Center)
  ElseIf Choix = 3
    Texte$ = "du land "
    TextGadget(#Question, 0, 55, WindowWidth(#Fenetre_principale), 30, "Quelle est la capitale "+ Texte$ + indice(Bonne_Reponse, 0), 
               #PB_Text_Center)
    TextGadget(#tIndication, 0, 80, WindowWidth(#Fenetre_principale), 30, Left(indice(Bonne_Reponse, 1),1) +
                                                                          " " + RepeterChaine("- ",Len(indice(Bonne_Reponse,1))-2) +
                                                                          LCase(Right(indice(Bonne_Reponse, 1),1)),#PB_Text_Center)
  ElseIf Choix = 4
    Texte$ = "de la nation "
    TextGadget(#Question, 0, 55, WindowWidth(#Fenetre_principale), 30, "Quelle est la capitale "+ Texte$ + indice(Bonne_Reponse, 0), 
               #PB_Text_Center)
    TextGadget(#tIndication, 0, 80, WindowWidth(#Fenetre_principale), 30, Left(indice(Bonne_Reponse, 1),1) +
                                                                          " " + RepeterChaine("- ",Len(indice(Bonne_Reponse,1))-2) +
                                                                          LCase(Right(indice(Bonne_Reponse, 1),1)),#PB_Text_Center)
  ElseIf Choix = 5
    Texte$ = "de la "
    TextGadget(#Question, 0, 55, WindowWidth(#Fenetre_principale), 30, "Quelle est la capitale "+ Texte$ + indice(Bonne_Reponse, 0), 
               #PB_Text_Center)
    TextGadget(#tIndication, 0, 80, WindowWidth(#Fenetre_principale), 30, Left(indice(Bonne_Reponse, 1),1) +
                                                                          " " + RepeterChaine("- ",Len(indice(Bonne_Reponse,1))-2) +
                                                                          LCase(Right(indice(Bonne_Reponse, 1),1)),#PB_Text_Center)
    
  ElseIf Choix = 6 Or Choix = 7 Or Choix = 8 Or Choix = 9 Or Choix = 10 Or Choix = 11
    Texte$ = "de la province "
    TextGadget(#Question, 0, 55, WindowWidth(#Fenetre_principale), 30, "Quelle est la capitale "+ Texte$ + indice(Bonne_Reponse, 0), 
               #PB_Text_Center)
    TextGadget(#tIndication, 0, 80, WindowWidth(#Fenetre_principale), 30, Left(indice(Bonne_Reponse, 1),1) +
                                                                          " " + RepeterChaine("- ",Len(indice(Bonne_Reponse,1))-2) +
                                                                          LCase(Right(indice(Bonne_Reponse, 1),1)),#PB_Text_Center)
  ElseIf Choix = 12
    Texte$ = "de la région "
    TextGadget(#Question, 0, 55, WindowWidth(#Fenetre_principale), 30, "Quelle est la capitale "+ Texte$ + indice(Bonne_Reponse, 0), 
               #PB_Text_Center)
    TextGadget(#tIndication, 0, 80, WindowWidth(#Fenetre_principale), 30, Left(indice(Bonne_Reponse, 1),1) +
                                                                          " " + RepeterChaine("- ",Len(indice(Bonne_Reponse,1))-2) +
                                                                          LCase(Right(indice(Bonne_Reponse, 1),1)),#PB_Text_Center)
  EndIf
  StringGadget(#Reponse, (WindowWidth(#Fenetre_principale)/2) - 100, 105, 200, 30, "")
  ButtonGadget(#Bouton_Ok, (WindowWidth(#Fenetre_principale)/2) - 40, 150, 80, 30, "Valider")
  ButtonGadget(#Bouton_Quitter, WindowWidth(#Fenetre_principale) - 90, 10, 80, 30, "Quitter")
  ;ButtonGadget(#Bouton_Menu, 10, 10, 80, 30, "Menu")
  
  If CreateStatusBar(#Barre_Etat, WindowID(#Fenetre_principale))
    AddStatusBarField(370)
    StatusBarText(#Barre_Etat,0, "Note: "+Str(Niveau)+"/20")
  EndIf 
  
  
  SetGadgetColor(#Titre, #PB_Gadget_BackColor, GetWindowColor(#Fenetre_principale))
  SetGadgetFont(#Titre, FontID(#Police))
  SetGadgetColor(#Question, #PB_Gadget_BackColor, GetWindowColor(#Fenetre_principale))
  SetGadgetFont(#Question, FontID(#Police))
  SetGadgetFont(#Reponse, FontID(#Police))
  SetGadgetFont(#tIndication, FontID(#Police))
  SetGadgetColor(#tIndication, #PB_Gadget_BackColor, GetWindowColor(#Fenetre_principale))
  SetGadgetFont(#Bouton_Ok, FontID(#Police))
  SetGadgetFont(#Bouton_Quitter, FontID(#Police))
  ;SetGadgetFont(#Bouton_Menu, FontID(#Police))
  
  AddKeyboardShortcut(#Fenetre_principale, #PB_Shortcut_Return, #Bouton_Ok) ;pour valider avec la touche entrée
  AddKeyboardShortcut(#Fenetre_principale, #PB_Shortcut_Escape, #Bouton_Quitter) ;pour sortir en pressant échap
  
  SetActiveGadget(#Reponse)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        ;Debug indice(Bonne_Reponse,1) + " " + rep1$
        Select EventGadget()
          Case #Bouton_Ok
            grepondu$="oui"
          Case #Bouton_Quitter
            CloseWindow(#Fenetre_principale)
            End
          Case #Bouton_Menu
            Choix = 0
            Menu()
        EndSelect   
      Case #PB_Event_Menu
        Select EventMenu()
          Case #Bouton_Ok
            grepondu$="oui"
          Case #Bouton_Quitter
            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+(20 / Nb_Questions)
  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 Reponses()
  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 RepeterChaine(Chaine.s, Multiplicateur.i)
  ; répète une chaîne un nombre donné de fois
  Protected Resultat.s
  
  If Multiplicateur > 0
    Protected Longueur_chaine.i, Nouvelle_longueur.i, i.i
    Protected *Pointeur_resultat
    
    Longueur_chaine = Len(Chaine)
    Nouvelle_longueur = Multiplicateur *Longueur_chaine
    
    Resultat = Space(Nouvelle_longueur)
    *Pointeur_resultat = @Resultat
    
    For x = 1 To Multiplicateur
      PokeS(*Pointeur_resultat, Chaine)
      If i < Multiplicateur
        CompilerIf #PB_Processor_x64
          *Pointeur_resultat + (Longueur_chaine * 2)
        CompilerElse
          *Pointeur_resultat + Longueur_chaine
        CompilerEndIf
      EndIf
    Next x
  Else
    Resultat = ""
  EndIf
  
  ProcedureReturn Resultat
  
EndProcedure


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

DataSection
  Prefectures:
  Data.s "Nord-Pas-de-Calais-Picardie","Lille"
  Data.s "Ile de France", "Paris"
  Data.s "Champagne-Ardennes-Lorraine-Alsace", "Strasbourg"
  Data.s "Bourgogne-Franche-Comté", "Dijon"
  Data.s "Centre", "Orléans"
  Data.s "Auvergne-Rhône-Alpes", "Lyon"
  Data.s "Provence-Alpes-Côtes d'azur", "Marseille"
  Data.s "Midi-Pyrénées-Languedoc-Roussillon", "Toulouse"
  Data.s "Poitou-Charente-Limousin-Aquitaine", "Bordeaux"
  Data.s "Pays de la Loire", "Nantes"
  Data.s "Bretagne", "Rennes"
  Data.s "Normandie", "Rouen"
  Data.s "STOP", "STOP"
  Capitales_europeenne:
  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 "Slovenie", "Ljubljana"
  Data.s "Royaume-Uni", "Londres"
  Data.s "Luxembourg", "Luxembourg"
  Data.s "Espagne", "Madrid"
  Data.s "Chypre", "Nicosie"
  Data.s "France", "Paris"
  Data.s "Republique Tcheque", "Prague"
  Data.s "Lettonie", "Riga"
  Data.s "Italie", "Rome"
  Data.s "Bulgarie", "Sofia"
  Data.s "Suede", "Stockholm"
  Data.s "Estonie", "Talinn"
  Data.s "Pologne", "Varsovie"
  Data.s "Autriche", "Vienne"
  Data.s "Lituanie", "Vilnius"
  Data.s "STOP", "STOP"
  regions_allemandes:
  Data.s "Bade-Wurtenberg", "Stuttgart"
  Data.s "Basse-Saxe", "Hanovre"
  Data.s "Bavière", "Munich"
  Data.s "Berlin", "Berlin"
  Data.s "Brandebourg", "Potsdam"
  Data.s "Brême", "Brême"
  Data.s "Hambourg", "Hambourg"
  Data.s "Hesse", "Wiesbaden"
  Data.s "Mecklembourg-Poméranie-Occidentale", "Schwerin"
  Data.s "Rhénanie-Palatinat", "Mayence"
  Data.s "Sarre", "Sarrebruck"
  Data.s "Saxe", "Dresde"
  Data.s "Saxe-Anhalt", "Magdebourg"
  Data.s "Schleswig-Holstein", "Kiel"
  Data.s "Thuringe", "Erfurt"
  Data.s "STOP", "STOP"
  Royaume_uni:
  Data.s "Angleterre", "Londres"
  Data.s "Ecosse", "Edimbourg"
  Data.s "Pays de galles", "Cardiff"
  Data.s "Irlande du Nord", "Belfast"
  Data.s "STOP", "STOP"
  Belgique:
  Data.s "Wallonie Brabant", "Wavre"
  Data.s "Wallonie Hainaut", "Mons"
  Data.s "Wallonie Liège", "Liège"
  Data.s "Wallonie Luxembourg", "Mons"
  Data.s "Wallonie Namur", "Namur"
  Data.s "Flandre Anvers", "Anvers"
  Data.s "Flandre Brabant", "Louvain"
  Data.s "Flandre occidentale", "Bruges"
  Data.s "Flandre orientale", "Gand"
  Data.s "Flandre Limbourg", "Hassell"
  Data.s "Belgique", "Bruxelles"
  Data.s "STOP", "STOP"
  Irlande:
  Data.s "Leinster", "Dublin"
  Data.s "Munster", "Cork"
  Data.s "Connacht", "Galway"
  Data.s "Ulster", "Belfast"
  Data.s "STOP", "STOP"
  Luxembourg:
  Data.s "Diekirch", "Diekirch"
  Data.s "Grevenmacher", "Grevenmacher"
  Data.s "Luxembourg", "Luxembourg"
  Data.s "STOP", "STOP"
  Danemark:
  Data.s "Jutland du nord", "Aalborg"
  Data.s "Jutland central", "Viborg"
  Data.s "Danemark du sud", "Vejle"
  Data.s "Hovedstaden", "Hillerod"
  Data.s "Slealland", "Soro"
  Data.s "Danemark", "Copenhague"
  Data.s "STOP", "STOP"
  PaysBas:
  Data.s "Brabant du nord", "Bois-le-Duc"
  Data.s "Drenthe", "Assen"
  Data.s "Flevoland", "Lelystad"
  Data.s "Fise", "Leeuwarden"
  Data.s "Groningue", "Groningue"
  Data.s "Gueldre", "Amhem"
  Data.s "Hollande méridionale", "La Haye"
  Data.s "Hollande septentrionale", "Haarlem"
  Data.s "Limbourg", "Maastricht"
  Data.s "Overijssel", "Zwolle"
  Data.s "Utrecht", "Utrecht"
  Data.s "Zélande", "Middelbourg"
  Data.s "STOP", "STOP"
  Suede:
  Data.s "Bleking", "Karlskrona"
  Data.s "Bohuslaen", "Göteborg"
  Data.s "Botnie septentrionale", "Lulea"
  Data.s "Botnie occidentale", "Umea"
  Data.s "Dalécarlie", "Falun"
  Data.s "Gothlande", "Visbi"
  Data.s "Hallande", "Halmstad"
  Data.s "Lempterland", "Östersund"
  Data.s "Ostrogothie", "Linköping"
  Data.s "Scanie", "Helsingborg"
  Data.s "Sudermanie", "Nyköping"
  Data.s "Wermelande", "Karlstad"
  Data.s "Westmanie", "Västeras"
  Data.s "Angermanie", "Hämösand"
  Data.s "Dalie", "Amai"
  Data.s "Gestriclande", "Gävle"
  Data.s "Helsingie", "Söderhamm"
  Data.s "Herdalie", ""
  Data.s "Laponie", "Kiruna"
  Data.s "Madelpadie", "Sundsvall"
  Data.s "Néricie", "Örebro"
  Data.s "OElande", "Borgholm"
  Data.s "Smaulande", "Jönköping"
  Data.s "Uplande", "Stockholm"
  Data.s "Westrogothie", "Göteborg"
  Data.s "STOP", "STOP"
  Espagne:
  Data.s "Alava", "Vitoria-Gasteiz"
  Data.s "Albacete", "Albacete"
  Data.s "Alicante", "Alicante"
  Data.s "Almeria", "Almeria"
  Data.s "Asturies", "Oviedo"
  Data.s "Avila", "Avila"
  Data.s "Badajoz", "Badajoz"
  Data.s "Iles Baléares", "Palma de Majorque"
  Data.s "Barcelone", "Barcelone"
  Data.s "Biscaye", "Bilbao"
  Data.s "Burgos", "Burgos"
  Data.s "Caceres", "Caceres"
  Data.s "Cadix", "Cadix"
  Data.s "Cantabrie", "Santander"
  Data.s "Castellon", "Castellon de la Plana"
  Data.s "Ciudad Real", "Ciudad Real"
  Data.s "Cordoue", "Cordoue"
  Data.s "La Corogne", "La Corogne"
  Data.s "Cuenca", "Cuenca"
  Data.s "Gérone", "Gérone"
  Data.s "Grenade", "Grenade"
  Data.s "Guadalajara", "Guadalejara"
  Data.s "Guipuscoa", "Saint-Sébastien"
  Data.s "Huelva", "Huelva"
  Data.s "Huesca", "Huesca"
  Data.s "Jaen", "Jaen"
  Data.s "Leon", "Leon"
  Data.s "Lérida", "Lleida"
  Data.s "Madrid", "Madrid"
  Data.s "Malaga", "Malaga"
  Data.s "Murcie", "Murcie"
  Data.s "Navarre", "Pampelune"
  Data.s "Ourense", "Ourense"
  Data.s "Palencia", "Palencia"
  Data.s "Las Palmas", "Las Palmas de Gran Canaria"
  Data.s "Pontevedra", "Pontevedra"
  Data.s "La rioja", "Logroño"
  Data.s "Salamanque", "Salamanque"
  Data.s "Santa Cruz de ténérife", "Santa Cruz de Ténérife"
  Data.s "Saragosse", "Saragosse"
  Data.s "Ségovie", "Ségovie"
  Data.s "Séville", "Séville"
  Data.s "Soria", "Soria"
  Data.s "Tarragone", "Tarragone"
  Data.s "Teruel", "Teruel"
  Data.s "Tolède", "Tolède"
  Data.s "Valence", "Valence"
  Data.s "Valladolid", "Valladolid"
  Data.s "Zamora", "Zamora"
  Data.s "STOP", "STOP"
  Portugal:
  Data.s "Nord", "Porto"
  Data.s "Centre", "Coimbra"
  Data.s "Lisbonne", "Lisbonne"
  Data.s "Alentejo", "Evora"
  Data.s "Algarve", "Fara"
  Data.s "STOP", "STOP"
EndDataSection

Re: Variable qui ne se réinitialise pas

Publié : mer. 13/janv./2016 23:00
par cage
Initialiser la variable grepondu$ au début de la boucle

Code : Tout sélectionner

  Repeat
    grepondu$="non"  ; <== rajouté
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        ;Debug indice(Bonne_Reponse,1) + " " + rep1$
        Select EventGadget()
          Case #Bouton_Ok
            grepondu$="oui"
          Case #Bouton_Quitter
            CloseWindow(#Fenetre_principale)
            End
          Case #Bouton_Menu
            Choix = 0
            Menu()
        EndSelect   
      Case #PB_Event_Menu
        Select EventMenu()
          Case #Bouton_Ok
            grepondu$="oui"
          Case #Bouton_Quitter
            CloseWindow(#Fenetre_principale)
            End 
        EndSelect 
    EndSelect
  Until grepondu$="oui"

Re: Variable qui ne se réinitialise pas

Publié : mer. 13/janv./2016 23:13
par nico
Ton code est vraiment ardu, je pense qu'il aurait pu être beaucoup plus simple.

Pense a réinitialiser ta variable grepondu$ à non sinon le test après la première réponse est toujours vrai.

Code : Tout sélectionner

  Until grepondu$="oui"
  
  grepondu$="non" ; ligne à ajouter

Re: Variable qui ne se réinitialise pas

Publié : jeu. 14/janv./2016 10:20
par Micoute
Merci infiniment cage et nico, maintenant je sais pourquoi ça ne le faisait pas avant, c'est parce que la variable n'était pas déclarée et quand elle est devenue globale, elle est devenue persistante.