Page 1 sur 1

[Résolu] Revenir au départ d'un programme

Publié : lun. 18/janv./2016 11:51
par Micoute
Bonjour à tous,

dans le contexte de mon programme "Capitales", j'aimerais savoir comment on peut relancer un programme de façon interne pour changer de rubrique dans le menu.

Je vous remercie par anticipation.

Re: Revenir au départ d'un programme

Publié : lun. 18/janv./2016 12:17
par Ar-S
Sans voir ton projet pas évident de te répondre cette fois..
Normalement tu crées une proce pour initialiser ton programme.

Re: Revenir au départ d'un programme

Publié : lun. 18/janv./2016 14:27
par Marc56
@Micoute: tu devrais mettre toutes les questions qui concernent le même projet dans le même topic pour que ceux qui t'aident puissent voir l'historique (et le code initial en premier, que tu peux mettre à jour) :wink:

Re: Revenir au départ d'un programme

Publié : lun. 18/janv./2016 16:41
par Micoute
Oui, c'est une très bonne idée, mais mon programme évolue et possède maintenant des images et des sons, il faudra donc que je mette les mises à jours et les fichiers annexes.

Pour mon problème de relancement, j'ai juste ajouter un MessageRequester et ça fonctionne très bien.

Re: Revenir au départ d'un programme

Publié : mar. 19/janv./2016 12:33
par microdevweb
Relancer un programme es cours d'exécution, je ne penses pas que cela soit possible. Par contre si tu place le moteur principal de ton programme dans une procédure, tu peux sans problème appeler la procédure depuis n'importe quel endroit. Procédure qui en appelle une autre qui mettra à jour ton menu. Si tu ajoute des option à ton menu tu sera obligé de fermer et réouvrir la fenêtre à nouveau

Re: Revenir au départ d'un programme

Publié : mar. 19/janv./2016 15:39
par Micoute
Ok, c'est noté.

Re: Revenir au départ d'un programme

Publié : mer. 20/janv./2016 14:35
par JohnJohnsonSHERMAN
Si tu veux relancer totalement ton programme, il existe une solution toute simple :

Code : Tout sélectionner

RunProgram(NomDeTonProg$)
End
Et voilà, c´est tout !

Re: Revenir au départ d'un programme

Publié : mer. 20/janv./2016 16:36
par TazNormand
@JohnJohnsonSHERMAN : ta méthode lance une autre instance du programme, rien à voir avec la demande de Micoute.

@Micoute : tu dois repenser ta logique, on ne relance pas un programme, on revient à un niveau précédent ou initial dans la logique de celui-ci.

De manière simpliste, ton programme tourne dans une boucle principale, et chaque action (menu/bouton) appelle une procédure. Si tu veux relancer, tu dois prévoir la possibilité de quitter la procédure en cours, ce qui te ramène à l'état précédent de ton programme, et qui permet également d'appeler à nouveau cette procédure.

Tu imagines si dans Word/Excel après avoir imprimé/sauvegardé (par exemple) il fallait quitter pour revenir au mode "édition" ?

Re: Revenir au départ d'un programme

Publié : sam. 23/janv./2016 11:15
par JohnJohnsonSHERMAN
@Taz : en effet ca lance une seconde instance du prog (tout en fermant la premiére), mais au moins ca fait le travail demandé, tous les fichiers, les menus et autres éléments qui auraient été modifiés sont de ce fait rechargés... je le fais avec le Shermavigator, et ca marche trés bien d´ailleurs.
@Micoute : Aprés ca dépend de ce que tu veux faire exatement, s´il s´agit simplement de relancer un élément pour y appliquer des modifications, on peut peut etre aussi juste le détruire puis le recréer juste aprés, ou alors le modifier si cela est possible. En tout as avec un redémarrage total du prog a partir d´une autre instance, la au moins t´est sur que tout les éléments seront actualisés...

Edit : Difficile aussi de savoir préciséement ce qu´il faut sans connaissance du projet... peut tu nous en dire plus a son sujet? (A moins que tu ne veule garder la surprise ;) ))

Re: Revenir au départ d'un programme

Publié : sam. 23/janv./2016 12:07
par Micoute
Bonjour à tous,

finalement, j'ai simplifié avec un MessageRequester.

Je joins le code qui comporte beaucoup de commentaires pour qu'il fonctionne sans musique et sans carte, ni drapeau pour qu'il soit malgré tout fonctionnel. Je suis sûr qu'on peut encore l'améliorer.

Code : Tout sélectionner

;Capitales 2.pb

;Thèmes
;Capitales européennes
;France
;Allemagne
;Royaume-uni
;Belgique
;Irlande
;Luxembourg
;Danemark
;Pays-bas
;Suède
;Espagne
;Portugal
;Italie
;Autriche
;Grèce
;Slovaquie
;Pologne
;Hongrie
;Tchéquie
;Finlande
;Chypre

; On peut quitter avec le bouton "Quitter" ou la touche "Echap"
; On peut revenir au menu avec le bouton "Menu"


Global.s ChefLieu, Region

Enumeration Fenetre
  #Fenetre_principale
EndEnumeration

Enumeration Gadgets
  #Ctn
  #Cvs
  #Cvs2
  #Cvs3
  #Titre
  #Question
  #tChefLieu
  #tIndication
  #Bouton_Ok
  #Bouton_Quitter
  #Bouton_Menu
  #Bonne_Reponse
  #Mauvaise_Reponse_1
  #Mauvaise_Reponse_2
EndEnumeration

Enumeration sprites
  #sprite
  #Drapeau
  #Carte
EndEnumeration

Enumeration Musiques
  #Son
EndEnumeration  

Enumeration Polices
  #Police
  #Police1
  #Police2
  #Police3
EndEnumeration

Enumeration Images
  #Image
EndEnumeration  

#LargEcr = 800
#HautEcr = 600 

Declare RemplirTableau()
Declare Menu()
Declare Musique()
Declare Aide()
Declare Questionnaire()
Declare Tirer_au_sort()
Declare Bonne_reponse()
Declare Mauvaise_reponse()
Declare.s Reponses()
Declare PlacerBoutons()
Declare.s RepeterChaine(Chaine.s, Multiplicateur.i)
Declare Rejouer()
Declare Init()

Global NewList Question_Deja_Posee()
Global x, X1, X2, X3, Bonne_Reponse, Mauvaise_Reponse1, Mauvaise_Reponse2, Compteur, Niveau.f, CouleurNettoyage, Hasard
Global Index = 0, Oui = 1, Non = 0, ListeTerminee = Non, Total, Nb_Questions
Global Choix, Reponse.s, Texte$, largEcr, HautEcr, MonDrapeau, MaCarte
Global Fichier$
Global Police = LoadFont(#Police, "Arial",  15, #PB_Font_Bold)
Global Police1 = LoadFont(#Police1, "Arial",  20, #PB_Font_Bold)
Global Police2 = LoadFont(#Police2, "Calibri", 10)
Global Police3 = LoadFont(#Police3, "Calibri", 30)

ExamineDesktops()
largEcr = DesktopWidth(0)
HautEcr = DesktopHeight(0)


UseOGGSoundDecoder()
UseJPEGImageDecoder()
UsePNGImageDecoder()

;==========================================================================================================
;Procédures

Procedure RemplirTableau()
  Total = 0
  Nb_Questions = 0
  ListeTerminee = Non
  
  ;Paramètres divers pour le jeu
  If Choix = 1 ; capitales européennes  
    Restore Capitales_europeenne
    Total = 26
    Nb_Questions = 27
  ElseIf Choix = 2 ;Régions françaises
    Restore Prefectures
    Total = 11
    Nb_Questions = 12
  ElseIf Choix = 3 ; lands allemands
    Restore regions_allemandes
    Total = 14
    Nb_Questions = 15
  ElseIf Choix = 4 ; royaume-uni
    Restore Royaume_uni
    Total = 3
    Nb_Questions = 4
  ElseIf Choix = 5 ;Belgique
    Restore Belgique
    Total = 10
    Nb_Questions = 11
  ElseIf Choix = 6 ;Irlande
    Restore Irlande
    Total = 3
    Nb_Questions = 4
  ElseIf Choix = 7 ;Luxembourg
    Restore luxembourg
    Total = 2
    Nb_Questions = 3
  ElseIf Choix = 8 ;Danemark
    Restore Danemark
    Total = 5
    Nb_Questions = 6
  ElseIf Choix = 9 ;Pays bas
    Restore PaysBas
    Total = 11
    Nb_Questions = 12
  ElseIf Choix = 10 ;Suède
    Restore Suede
    Total = 23
    Nb_Questions = 24
  ElseIf Choix = 11 ;Espagne
    Restore Espagne
    Total = 48
    Nb_Questions = 49
  ElseIf Choix = 12 ;Portugal
    Restore Portugal
    Total = 4
    Nb_Questions = 5
  ElseIf Choix = 13 ; Italie
    Restore Italie
    total = 19
    Nb_Questions = 20
  ElseIf Choix = 14 ; Autriche
    Restore Autriche
    Total = 8
    Nb_Questions = 9
  ElseIf Choix = 15 ; Grèce
    Restore Grece
    Total = 135
    Nb_Questions = 136
  ElseIf Choix = 16 ;Slovaquie
    Restore Slovaquie
    Total = 7
    Nb_Questions = 8
  ElseIf Choix = 17 ;Pologne
    Restore Pologne
    Total = 16
    Nb_Questions = 16
  ElseIf Choix = 18 ;Hongrie
    Restore Hongrie
    Total = 18
    Nb_Questions = 19
  ElseIf Choix = 19 ; Tchéquie
    Restore Tchequie
    Total = 13
    Nb_Questions = 14
  ElseIf Choix = 20 ; Finlande
    Restore Finlande
    Total = 18
    Nb_Questions = 19
  ElseIf Choix = 21
    Restore Chypre
    Total = 5
    Nb_Questions = 6
  EndIf
  
  ;Dimensionner notre tableau indice()
  Global Dim indice.s(Total,1)
  
  While ListeTerminee = Non
    
    ;Lire les données du tableau
    Read.s Region
    Read.s ChefLieu
    If Region = "STOP" And ChefLieu = "STOP"
      ListeTerminee = Oui
    Else  
      ChefLieu  = UCase(ChefLieu)
      Region    = UCase(Region)
      ;Attribuer les valeurs au tableau
      indice(index, 0) = Region
      indice(index, 1) = ChefLieu
    EndIf
    ;Incrémenter l'index du tableau
    Index + 1
  Wend
  
EndProcedure

Procedure Menu()
  Protected Ligne = 10, Colonne 
  
  CouleurNettoyage = $FFFFFF
  
  ; Initialiser le sprite et le clavier du système et un écran #LargEcr x #HautEcr, 32 bits
  If InitSprite() = 0 Or InitKeyboard() = 0 Or OpenScreen(#LargEcr,#HautEcr,32,"") = 0 Or InitSound() = 0
    MessageRequester("Erreur!", "Impossible d'initialiser l'environnement", #PB_MessageRequester_Ok)
    End
  EndIf
  
  ;Musique menu
;  MaMusiqueMenu = CatchSound(#Son, ?Musique_Menu, ?Fin_Musique_Menu - ?Musique_Menu)
;  SoundVolume(#son, 50)
;  PlaySound(#Son, #PB_Sound3D_Loop)
  
  ; Dimensionner notre tableau TableauNom
  Global Dim TableauNom.s(20)
  
  ; Attribuer nos valeurs au tableau
  TableauNom(0) = "A - union européenne"
  TableauNom(1) = "B - France"
  TableauNom(2) = "C - Allemagne"
  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"
  TableauNom(12) = "M - Italie"
  TableauNom(13) = "N - Autriche"
  TableauNom(14) = "O - Grèce"
  TableauNom(15) = "P - Slovaquie"
  TableauNom(16) = "Q - Pologne"
  TableauNom(17) = "R - Hongrie"
  TableauNom(18) = "S - Tchéquie"
  TableauNom(19) = "T - Finlande"
  TableauNom(20) = "U - Chypre"
  
  ; Maintenant charger le sprite
;  CatchSprite(#sprite, ?Carte_UE_adhesion, #PB_Sprite_AlphaBlending)
  
  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 10
    Texte$ = TableauNom(x)
    Ligne + TextHeight(" ")
    Colonne = 150
    DrawText(Colonne, Ligne, Texte$,$0)
  Next x
  Ligne = 150
  For x = 11 To 20
    Texte$ = TableauNom(x)
    Ligne + TextHeight(" ")
    Colonne = 450
    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 = 250
  If Reponse = "A"
    Texte$ = "Tu as choisi les capitales européennes !"
    ; si c'est le cas, alors écrire le texte à ce sujet
  ElseIf Reponse = "B"
    Texte$ = "Tu as choisi les régions françaises !"
  ElseIf Reponse = "C"
    Texte$ = "Tu as choisi les lands allemands !"
  ElseIf Reponse = "D"
    Texte$ = "Tu as choisi le royaume-uni !"
  ElseIf Reponse = "E"
    Texte$ = "Tu as choisi la Belgique !"
  ElseIf Reponse = "F"
    Texte$ = "Tu as choisi l'Irlande !"
  ElseIf Reponse = "G"
    Texte$ = "Tu as choisi le Luxembourg !"
  ElseIf Reponse = "H"
    Texte$ = "Tu as choisi le Danemark !"
  ElseIf Reponse = "I"
    Texte$ = "Tu as choisi les Pays-bas !"
  ElseIf Reponse = "J"
    Texte$ = "Tu as choisi la Suède !"
  ElseIf Reponse = "K"
    Texte$ = "Tu as choisi l'Espagne !"
  ElseIf Reponse = "L"
    Texte$ = "Tu as choisi le Portugal !"
  ElseIf Reponse = "M"
    Texte$ = "Tu as choisi l'Italie !"
  ElseIf Reponse = "N"
    Texte$ = "Tu as choisi l'Autriche !"
  ElseIf Reponse = "O"
    Texte$ = "Tu as choisi la Grèce !"
  ElseIf Reponse = "P"
    Texte$ = "Tu as choisi la Slovaquie !"
  ElseIf Reponse = "Q"
    Texte$ = "Tu as choisi la Pologne !"
  ElseIf Reponse = "R"
    Texte$ = "Tu as choisi la Hongrie !"
  ElseIf Reponse = "S"
    Texte$ = "Tu as choisi la Tchéquie !"
  ElseIf Reponse = "T"
    Texte$ = "Tu as choisi la Finlande !"
  ElseIf Reponse = "U"
    Texte$ = "Tu as choisi Chypre !"
  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 ! "
  EndIf
  
  DrawText((#LargEcr-TextWidth(Texte$))/2,Ligne, Texte$)
  
  Ligne + TextHeight(" ")
  Texte$ = "Appuie sur une la >BARRE ESPACE< 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$)
  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_Space) Or
       KeyboardReleased(#PB_Key_Escape)
      
      Resultat = 1
    EndIf  
  Until Resultat = 1
  
  Choix = Asc(Reponse)-64 ;parce que Asc("A") - 64 = 1
  
  If Reponse < "@" Or Reponse > "U"
    Choix = 2
  EndIf 
  
  CloseScreen()
  
  RemplirTableau()
  
;  StopSound(#son)
  
  ProcedureReturn Choix
EndProcedure

Procedure Musique()
  ;Musique
;  MaMusique = CatchSound(#Son, ?Musique, ?FinMusique - ?Musique)
;  SoundVolume(#son, 50)
;  PlaySound(#Son, #PB_Sound3D_Loop)
EndProcedure

Procedure Questionnaire()
  OpenWindow(#Fenetre_principale, 0,0, largEcr, HautEcr, "Question n°"+Str(Compteur), #PB_Window_ScreenCentered | #PB_Window_BorderLess)
  OpenWindowedScreen(WindowID(#Fenetre_principale), 0, 0, largEcr, HautEcr)
  
  CouleurNettoyage = $FF7400
  ClearScreen(CouleurNettoyage)  
  
  CanvasGadget(#Cvs2, 0, 720, largEcr, 60) ; Titre
  StartDrawing(CanvasOutput(#Cvs2))
  DrawingFont(FontID(#Police3))
  Box(0, 0, largEcr, HautEcr, CouleurNettoyage)
  DrawText((largEcr-TextWidth(TableauNom(Choix-1)))/2, 10, Mid(TableauNom(Choix-1),5), $00FFFF, CouleurNettoyage)
  StopDrawing() 
  
  ;-Note
  CanvasGadget(#Cvs3, largEcr - 520, HautEcr - 230, 500, 100) ;Note
  StartDrawing(CanvasOutput(#Cvs3))
  Box( 0, 0, 500, 100, CouleurNettoyage)
  DrawingFont(Police1)
  DrawText(10, 10, "Note: "+StrF(Niveau,2)+"/20", $00FFFF, CouleurNettoyage)
  StopDrawing()   
  
  ContainerGadget(#Ctn, (largEcr-800) / 2, HautEcr-210, 800, 200, #PB_Container_Double)
  ButtonGadget(#Titre, 300, 10, GadgetWidth(#Ctn)-560, 30, "Question n°"+Str(Compteur) + "/" + Nb_Questions, #PB_Text_Center)
  If Choix = 1 ;a
    
    ;Question Europe
;    MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Europe)
;    MaCarte = CatchSprite(#Carte, ?Carte_Europe)
    
    If Left(indice(Bonne_Reponse, 0), 1) = "A" Or Left(indice(Bonne_Reponse, 0), 1) = "E" Or Left(indice(Bonne_Reponse, 0), 1) = "I" Or
       Left(indice(Bonne_Reponse, 0), 1) = "O" Or Left(indice(Bonne_Reponse, 0), 1) = "U"
      Texte$ = "de l'"
    ElseIf indice(Bonne_Reponse, 0) = "Chypre" Or indice(Bonne_Reponse, 0) = "Malte"
      Texte$ = "de "
    ElseIf indice(Bonne_Reponse, 0) = "Pays-Bas"
      Texte$ = "des "
    ElseIf indice(Bonne_Reponse, 0) = "Portugal" Or indice(Bonne_Reponse, 0) = "Royaume-Uni" Or indice(Bonne_Reponse, 0) = "Luxembourg"
      Texte$ = "du "
    Else
      Texte$ = "de la "
    EndIf  
    
  ElseIf Choix = 2 ;b
    
    ;Question France
;    MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_France)
;    MaCarte = CatchSprite(#Carte, ?Carte_France)
    
  ElseIf Choix = 3 Or Choix = 14
    If Choix = 3 ;c
      
      ;Question Allemagne
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Allemagne)
;      MaCarte = CatchSprite(#Carte, ?Carte_Allemagne)
      
    ElseIf Choix = 14 ;n
      
      ;Question Autriche
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Autriche)
;      MaCarte = CatchSprite(#Carte, ?Carte_Autriche)
    EndIf
    
    Texte$ = "du land "
    
  ElseIf Choix = 4 ;d
    
    ;Question Royaume uni
;    MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Royaume_Uni)
;    MaCarte = CatchSprite(#Carte, ?Carte_Royaume_Uni)
    Texte$ = "de la nation "
    
  ElseIf Choix = 5 ;e
    
    ;Question Belgique
;    MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Belgique)
;    MaCarte = CatchSprite(#Carte, ?Carte_Belgique)
    Texte$ = "de la "
    
  ElseIf Choix = 6 Or Choix = 7 Or Choix = 8 Or Choix = 9 Or Choix = 10 Or Choix = 11 Or Choix = 15
    If Choix = 6 ;f
      
      ;Question Irlande
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Irlande)
;      MaCarte = CatchSprite(#Carte, ?Carte_Irlande)
      
    ElseIf Choix = 7 ;g
      
      ;Question Luxembourg
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Luxembourg)
;      MaCarte = CatchSprite(#Carte, ?Carte_Luxembourg)
      
    ElseIf Choix = 8 ;h
      
      ;Question Danemark
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Danemark)
;      MaCarte = CatchSprite(#Carte, ?Carte_Danemark)
      
    ElseIf Choix = 9 ;i
      
      ;Question Pays bas
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Pays_Bas)
;      MaCarte = CatchSprite(#Carte, ?Carte_Pays_Bas)
    ElseIf Choix = 10 ;j
      
      ;Question Suède
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Suede)
;      MaCarte = CatchSprite(#Carte, ?Carte_Suede)
      
    ElseIf Choix = 11 ;k
      
      ;Question Espagne
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Espagne)
;      MaCarte = CatchSprite(#Carte, ?Carte_Espagne)
      
    ElseIf Choix = 15 ;o
      
      ;Question Grèce
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Grece)
;      MaCarte = CatchSprite(#Carte, ?Carte_Grece)
    EndIf
    
    Texte$ = "de la province "
    
  ElseIf Choix = 12 Or Choix = 13 Or Choix = 16 Or Choix = 17 Or Choix = 18 Or Choix = 19 Or Choix = 20 Or Choix = 21
    If Choix = 12 ;l
      
      ;Question Portugal
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Portugal)
;      MaCarte = CatchSprite(#Carte, ?Carte_Portugal)
    ElseIf Choix = 13 ;m
      
      ;Question Italie
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Italie)
;      MaCarte = CatchSprite(#Carte, ?Carte_Italie)
    ElseIf Choix = 16 ;p
      
      ;Question Slovaquie
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Slovaquie)
;      MaCarte = CatchSprite(#Carte, ?Carte_Slovaquie)
    ElseIf Choix = 17 ;q
      
      ;Question Pologne
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Pologne)
;      MaCarte = CatchSprite(#Carte, ?Carte_Pologne)
    ElseIf Choix = 18 ;r
      
      ;Question Hongrie
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Hongrie)
;      MaCarte = CatchSprite(#Carte, ?Carte_Hongrie)
    ElseIf Choix = 19 ;s
      
      ;Question Tchéquie
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Tchequie)
;      MaCarte = CatchSprite(#Carte, ?Carte_Tchequie)
    ElseIf Choix = 20 ;t
      
      ;Question Finlande
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Finlande)
;      MaCarte = CatchSprite(#Carte, ?Carte_Finlande)
    ElseIf Choix = 21 ;u
      
      ;Question Chypre
;      MonDrapeau = CatchSprite(#Drapeau, ?Drapeau_Chypre)
;      MaCarte = CatchSprite(#Carte, ?Carte_Chypre)
    EndIf  
    Texte$ = "de la région "
  EndIf
  ;Gadgets communs
  ButtonGadget(#Question, 10, 55, GadgetWidth(#Ctn) - 20, 30, "Quelle est la capitale "+ Texte$ + indice(Bonne_Reponse, 0), #PB_Text_Center)
  ButtonGadget(#Bouton_Quitter, GadgetWidth(#Ctn) - 90, 150, 80, 30, "Quitter")
  ButtonGadget(#Bouton_Menu, 10, 150, 80, 30, "Menu")
  ButtonGadget(#Bonne_Reponse,      X1, 105, 250, 30, Left(indice(Bonne_Reponse, 1), 1) + LCase(Right(indice(Bonne_Reponse, 1), Len(indice(Bonne_Reponse, 1)) - 1)))
  ButtonGadget(#Mauvaise_Reponse_1, X2, 105, 250, 30, Left(indice(Mauvaise_reponse1, 1), 1) + LCase(Right(indice(Mauvaise_Reponse1, 1), Len(indice(Mauvaise_Reponse1, 1)) - 1)))
  ButtonGadget(#Mauvaise_Reponse_2, x3, 105, 250, 30, Left(indice(Mauvaise_reponse2, 1), 1) + LCase(Right(indice(Mauvaise_Reponse2, 1), Len(indice(Mauvaise_Reponse2, 1)) - 1)))
  CloseGadgetList()
  
;  IsSprite(#Drapeau)
;  If MonDrapeau <> 0
;    ZoomSprite(#Drapeau, SpriteWidth(#Drapeau) / 2, SpriteHeight(#Drapeau) / 2)
;    DisplaySprite(#Drapeau, 10,HautEcr-SpriteHeight(#Drapeau) - 10)
;  EndIf  
;  IsSprite(#Carte)
;  If MaCarte <> 0
;    DisplaySprite(#Carte, (largEcr-SpriteWidth(#Carte)) / 2, 10)
;  EndIf  
  
  SetGadgetColor(#Titre, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetFont(#Titre, FontID(#Police))
  SetGadgetColor(#Question, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetFont(#Question, FontID(#Police))
  SetGadgetFont(#tIndication, FontID(#Police))
  SetGadgetFont(#Bouton_Quitter, FontID(#Police))
  SetGadgetFont(#Bouton_Menu, FontID(#Police))
  SetGadgetFont(#Bonne_Reponse, FontID(#Police))
  SetGadgetFont(#Mauvaise_Reponse_1, FontID(#Police))
  SetGadgetFont(#Mauvaise_Reponse_2, FontID(#Police))
  
  AddKeyboardShortcut(#Fenetre_principale, #PB_Shortcut_Escape, #Bouton_Quitter) ;pour sortir en pressant échap
    
  ;-Boucle principale
  Repeat 
    ;grepondu$ = "mal"
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Bouton_Ok
            grepondu$="bien"
          Case #Bouton_Quitter
            CloseWindow(#Fenetre_principale)
            End
          Case #Bouton_Menu
            Rejouer()
          Case #Bonne_Reponse
            grepondu$ = "bien"
          Case #Mauvaise_Reponse_1, #Mauvaise_Reponse_2
            grepondu$ = "mal"
        EndSelect
        
      Case #PB_Event_Menu
        Select EventMenu()
          Case #Bouton_Ok
            grepondu$="bien"
          Case #Bouton_Quitter
            CloseWindow(#Fenetre_principale)
            End
        EndSelect  
    EndSelect
  Until grepondu$="bien" Or grepondu$ = "mal"
  
  
  If grepondu$ = "bien"
  rep1$=GetGadgetText(#Bonne_Reponse) 
    Niveau + (20 / Nb_Questions)
    
    AddElement(Question_Deja_Posee())
    Question_Deja_Posee() = Bonne_Reponse
  EndIf
  
  If grepondu$ = "mal"
    Mauvaise_reponse()
  EndIf
    
EndProcedure

Init()

Procedure Tirer_au_sort()  
  Bonne_Reponse = Random(Total)
  Mauvaise_Reponse1 = Random(Total)
  Mauvaise_Reponse2 = Random(Total)
  
  If Mauvaise_Reponse1 = Bonne_Reponse
    Tirer_au_sort()
  EndIf
  
  If Mauvaise_Reponse2 = Bonne_Reponse
    Tirer_au_sort()
  EndIf
  
  If Mauvaise_Reponse2 = Mauvaise_Reponse1
    Tirer_au_sort()
  EndIf
    
  PlacerBoutons()
  
  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 " + StrF(Niveau) + "/20" + #LF$ + #LF$ + "Résulat : " + Texte)
EndProcedure

Procedure PlacerBoutons()
  Hasard = Random(3, 1)
  
  Select Hasard
    Case 1
      X1 = 10
      X2 = 275
      X3 = 540
    Case 2
      X1 = 275
      X2 = 540
      X3 = 10
    Case 3
      X1 = 540
      X2 = 275
      X3 = 10
  EndSelect  
EndProcedure

Procedure.s RepeterChaine(Chaine.s, Multiplicateur.i)
  ; répète une chaîne un nombre demandé 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

Procedure Rejouer()
  Niveau = 0
  Index = 0
  ListeTerminee = Non
  
  Select MessageRequester("Question", "Veux-tu rejouer ?", #PB_MessageRequester_YesNo)
    Case #IDYES
      If ListSize(Question_Deja_Posee()) > 0
        FreeList(Question_Deja_Posee())
        Global NewList Question_Deja_Posee()
      EndIf
      If ArraySize(indice()) > 0
        FreeArray(indice())
      EndIf
      If ArraySize(TableauNom()) > 0
        FreeArray(TableauNom())
      EndIf  
      If IsWindow(#Fenetre_principale)
        CloseWindow(#Fenetre_principale)
        CloseScreen()
      EndIf
      Init()
    Case #IDNO
      MessageRequester("Capitales", "Merci d'avoir joué, à très bientôt !", #PB_MessageRequester_Ok)
      ExamineDesktops()      
      End
  EndSelect    
EndProcedure

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

DataSection
  ;Europe
  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 "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 Tchè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"
  Data.s "STOP", "STOP"
  ;France
  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"
  ;Allemagne
  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
  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
  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
  Irlande:
  Data.s "Leinster", "Dublin"
  Data.s "Munster", "Cork"
  Data.s "Connacht", "Galway"
  Data.s "Ulster", "Belfast"
  Data.s "STOP", "STOP"
  ;Luxembourg
  Luxembourg:
  Data.s "Diekirch", "Diekirch"
  Data.s "Grevenmacher", "Grevenmacher"
  Data.s "Luxembourg", "Luxembourg"
  Data.s "STOP", "STOP"
  ;Danemark
  Danemark:
  Data.s "Jutland du nord", "Alborg"
  Data.s "Jutland central", "Viborg"
  Data.s "Danemark du sud", "Vejle"
  Data.s "Hovedstaden", "Hillerod"
  Data.s "Sjaelland", "Soro"
  Data.s "Danemark", "Copenhague"
  Data.s "STOP", "STOP"
  ;Pays bas
  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"
  ;Suède
  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
  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
  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"
  ;Italie
  Italie:
  Data.s "Abruzzes", "L'Aquila"
  Data.s "Vallée d'Aoste", "Aoste"
  Data.s "Basilicate", "Potenza"
  Data.s "Calabre", "Cantanzaro"
  Data.s "Campanie", "Naples"
  Data.s "Emilie-Romagne", "Bologne"
  Data.s "Frioul-Vénétie julienne", "Trieste"
  Data.s "Latium", "Rome"
  Data.s "Ligurie", "Gênes"
  Data.s "Lombardie", "Milan"
  Data.s "Marches", "Ancône"
  Data.s "Molise", "Campobasso"
  Data.s "Ombrie", "Pérouse"
  Data.s "Piémont", "Turin"
  Data.s "Pouilles", "Bari"
  Data.s "Sardaigne", "Cagliari"
  Data.s "Sicile", "Palerme"
  Data.s "Toscane", "Florence"
  Data.s "Trentin-Haut-Adige", "Trente"
  Data.s "Vénétie", "Venise"
  Data.s "STOP", "STOP"
  ;Autriche
  Autriche:
  Data.s "Basse-Autriche", "Sankt Pölten"
  Data.s "Burgenland", "Eisenstadt"
  Data.s "Carinthie", "KLagenfurt"
  Data.s "Haute-Autriche", "Linz"
  Data.s "Salzbourg", "Salzbourg"
  Data.s "Styrie", "Graz"
  Data.s "Tyrol", "Innsbruck"
  Data.s "Vienne", "Vienne"
  Data.s "Vorarlberg", "Bregenz"
  Data.s "STOP", "STOP"
  ;Grèce
  Grece:
  ;Nome d'Achaïe 
  Data.s "Aigialeia", "Aigion"
  Data.s "Kalavryta", "Kalavryta"
  Data.s "Patras", "Patras"
  ;Nome d'Étolie-Acarnanie 
  Data.s "Missolonghi", "Missolonghi"
  Data.s "Naupactie", "Naupacte"
  Data.s "Triconis", "Agrinio"
  Data.s "Valtos", "Amfilochia"
  Data.s "Xiromera", "Vonitza"
  ;Arcadie 
  Data.s "Gortynia", "Dimitsana"
  Data.s "Kinouria", "Leonidio"
  Data.s "Mantinée", "Mégapolis"
  ;Nome d'Argolide 
  Data.s "Argos", "Argos"
  Data.s "Hermionide", "Kranidi"
  Data.s "Nauplie", "Nauplie"
  ;Nomarchie d'Athènes
  ;Attique de l'Est 
  Data.s "Attique", "Marathon"
  Data.s "Mésogée", "Koropi"
  Data.s "Lauréotique", "Lavrion"
  ;Attique ouest 
  Data.s "Mégare", "Mégare"
  Data.s "Eleusis", "Eleusis"
  ;Nomarchie du Pirée 
  Data.s "Pirée", "Le Pirée"
  Data.s "Egine", "Egine"
  Data.s "Cythère", "Cythère"
  Data.s "Salamine", "Salamine"
  Data.s "Hydra & Spetses", "Hydra"
  Data.s "Trézénie", "Poros"
  ;Nome de Béotie 
  Data.s "Thèbes", "Thèbes"
  Data.s "Livadia", "Livadia"
  ;Nome de Chalcidique 
  Data.s "Polygyros", "Polygyros"
  Data.s "Arnaia", "Arnaia"
  ;Nome de la Canée
  Data.s "Apokoronas", "Vamos"
  Data.s "Kydonia", "La Canée"
  Data.s "Kissamos", "Kissamos"
  Data.s "Sélino", "Kandanos"
  Data.s "Sfakia", "Chora Sfakion"
  ;Nome de Corfou (Kérkyra) 
  Data.s "Corfou", "Corfou"
  Data.s "Paxos", "Gaios"
  ;Nome des Cyclades 
  Data.s "Kéa", "Kéa"
  Data.s "Naxos", "Naxos"
  Data.s "Tinos", "Tinos"
  Data.s "Andros", "Andros"
  Data.s "Syros", "Ermoupoli"
  Data.s "Paros", "Parikia"
  Data.s "Milos", "Milos"
  Data.s "Amorgos", "Amorgos"
  Data.s "Théra", "Fira"
  ;Nome du Dodécanèse 
  Data.s "Patmos", "Patmos"
  Data.s "Kalymnos", "Kalymnos"
  Data.s "Kos", "Kos"
  Data.s "Rhodes", "Rhodes"
  Data.s "Karpathos", "Karpathos"
  ;Nome d'Élide 
  Data.s "Elidie", "Pyrgos"
  Data.s "Olympie", "Andritsaina"
  ;Nome d'Eubée 
  Data.s "Chalcis", "Chalcis"
  Data.s "Histiée", "Histiée"
  Data.s "Karystie", "Kymi"
  ;Nome d'Évros 
  Data.s "Alexandroupoli", "Alexandroupoli"
  Data.s "Didymotique", "Dydimotique"
  Data.s "Soufli", "Soufli"
  Data.s "Orestiada", "Orestiada"
  Data.s "Samothrace", "Samothrace"
  ;Nome d'Héraklion
  Data.s "Téménos", "Héraklion"
  Data.s "Malevizi", "Agios Myron"
  Data.s "Pediada", "Kasteli"
  Data.s "Kenourgion", "Mires"
  Data.s "Pyrgiotissa", "Vori"
  Data.s "Viannos", "Pefkos"
  Data.s "Moofatsi", "Tylissos"
  ;Nome d'Imathie 
  Data.s "Imathie", "Béroia"
  Data.s "Naoussa", "Naoussa"
  ;Nome de Ioannina 
  Data.s "Dodone", "Ionnina"
  Data.s "Konitsa", "Konitsa"
  Data.s "Metsovo", "Metsovo"
  Data.s "Pogoni", "Delvinaki"
  Data.s "Pangéo", "Eleftheroupolis"
  Data.s "Nestos", "Chrysoupoli"
  Data.s "Thasos", "Thasos"
  ;Céphalonie 
  Data.s "Kranéa", "Argostoli"
  Data.s "Paliki", "Lixouri"
  Data.s "Ithaque", "Ithaque"
  ;Nome de Kilkís 
  Data.s "Kilkis", "Kilkis"
  Data.s "Péonie", "Goumenissa"
  ;Nome de Kozani 
  Data.s "Kozani", "Kozani"
  Data.s "Eordée", "Ptoleaïda"
  Data.s "Voïo", "Siatista"
  ;Nome de Laconie 
  Data.s "Gythio", "Gythio"
  Data.s "Epidaure Limira", "Malaoi"
  Data.s "Lacédémone", "Sparte"
  Data.s "Itylo", "Areopoli"
  ;Nome de Larissa 
  Data.s "Pharsale", "Pharsale"
  Data.s "Agia", "Agia"
  Data.s "Larissa", "Larissa"
  Data.s "Tyrnavos", "Tyrnavos"
  Data.s "Olympe", "Elassona"
  ;Nome de Lasithi
  Data.s "Ierapetra", "Ierapetra"
  Data.s "Sitia", "Sitia"
  Data.s "Mirambélos", "Agios Nikolaos"
  ;Nome de Lesbos 
  Data.s "Lemnos", "Myrina"
  Data.s "Méthymne", "Méthymne"
  Data.s "Mytilène", "Mytilène"
  Data.s "Plomari", "Plomari"
  ;Nome de Magnésie 
  Data.s "Almyros", "Almyros"
  Data.s "Iles Sporades du nord", "Skopelos"
  Data.s "Volos", "Pélion - Volos"
  ;Nome de Messénie 
  Data.s "Kalamata", "Kalamata"
  Data.s "Messène", "Messène"
  Data.s "Pylia", "Pylos"
  Data.s "Triphylie", "Kyparissia"
  ;Nome de Pella 
  Data.s "Almopia", "Aridaia"
  Data.s "Edesse", "Edessa"
  Data.s "Giannitsa", "Giannitsa"
  ;Nome de Phocide 
  Data.s "Doride", "Lidoriki"
  Data.s "Parnasside", "Amfissa"
  ;Nome de Phthiotide 
  Data.s "Phthiotide", "Lamia"
  Data.s "Domokos", "Domokos"
  Data.s "Lokroi", "Atalanti"
  ;Nome de Préveza 
  Data.s "Nicopolis & Parga", "Parga"
  ;Nome de Réthymnon
  Data.s "Rethumna", "Réthymnon"
  Data.s "Agios Vasilioq", "Lampi"
  Data.s "Amari", "Amari"
  Data.s "Mylopotamos", "Perema"
  ;Nome de Rhodope 
  Data.s "Komotini", "Komotini"
  Data.s "Sapes", "Sapes"
  ;Nome de Samos 
  Data.s "Ikaria", "Agios Kyrikos"
  Data.s "Samos", "Samos"
  ;Nome de Serrès 
  Data.s "Serrès", "Serrès"
  Data.s "Visaltia", "Nigrita"
  Data.s "Phylida", "Nea Zichni"
  Data.s "Sindiki", "Sidirokastro"
  ;Nome de Thesprotie 
  Data.s "Filiates", "Filiates"
  Data.s "Thyamis", "Igoumenitsa"
  Data.s "Margariti", "Margariti"
  Data.s "Souli", "Paramythia"
  ;Nome de Thessalonique
  Data.s "Thessalonique", "Thessalonique"
  Data.s "Langadas", "Langadas"
  ;Nome de Trikala
  Data.s "Trikala", "Trikala"
  Data.s "Kalambaka", "Kalambaka"
  Data.s "STOP", "STOP"
  ;Slovaquie
  Slovaquie:
  Data.s "Bratislava", "Bratislava"
  Data.s "Tmava", "Tmava"
  Data.s "Trencin", "Trencin"
  Data.s "Nitra", "Nitra"
  Data.s "Zilina", "Zilina"
  Data.s "Banska Bystrica", "Banska Bystrica"
  Data.s "Presov", "Presov"
  Data.s "Kosice", "Kosice"
  Data.s "STOP", "STOP"
  ;Pologne
  Pologne:
  Data.s "Basse-Silésie", "Wroclaw"
  Data.s "Basses-Carpates", "Rzeazow"
  Data.s "Cujavie-Poméranie ", "Bydgoszcz"
  Data.s "Grande-Pologne ", "Poznan"
  Data.s "Lublin", "Lublin"
  Data.s "Lubusz", "Gorzow Wielkopolski"
  Data.s "Lodz", "Lodz"
  Data.s "Mazovie", "Varsovie"
  Data.s "Opole", "Opole"
  Data.s "Petite-Pologne", "Cracovie"
  Data.s "Podlachie", "Bialystok"
  Data.s "Poméranie", "Gdansk"
  Data.s "Poméranie occidentale", "Szczecin"
  Data.s "Sainte-Croix", "Kielce"
  Data.s "Silésie", "Katowice"
  Data.s "Varmie-Mazurie", "Olsztyn"
  Data.s "STOP", "STOP"
  ;Hongrie
  Hongrie:
  Data.s "Bacs-Kiskun", "Kecskemét"
  Data.s "Baranya", "Pécs"
  Data.s "Békés", "Békéscsaba"
  Data.s "Borsod-Abauj-Zemplén", "Miskolc"
  Data.s "Csongrad", "Szeged"
  Data.s "Fejér", "Székesfehérvar"
  Data.s "Győr-Moson-Sopron", "Gyor"
  Data.s "Hajdu-Bihar", "Debrecen"
  Data.s "Heves", "Eger"
  Data.s "Jasz-Nagykun-Szolnok", "Szolnok"
  Data.s "Komárom-Esztergom", "Tatabanya"
  Data.s "Nógrád", "Salgotarjan"
  Data.s "Pest", "Budapest"
  Data.s "Somogy", "Kaposvar"
  Data.s "Szabolcs-Szatmár-Bereg", "Nyíregyhaza"
  Data.s "Tolna", "Szekszard"
  Data.s "Vas", "Szombathely"
  Data.s "Veszprém", "Veszprém"
  Data.s "Zala", "Zalaegerszeg"
  Data.s "STOP", "STOP"
  ;Tchéquie
  Tchequie:
  Data.s "Prague", "Prague"
  Data.s "Bohême-du-Sud", "Ceské Budéjovice"
  Data.s "Moravie du Sud", "Brno"
  Data.s "Karlovy Vary", "Karlovy Vary"
  Data.s "Hradec Kralové", "Hradec Kralové"
  Data.s "Liberec", "Liberec"
  Data.s "Moravie-Silésie", "Ostrava"
  Data.s "Olomouc", "Olomouc"
  Data.s "Pardubice", "Pardubice"
  Data.s "Pilsen", "Pilsen"
  Data.s "Bohême centrale", "Prague"
  Data.s "Ustí nad Labem", "Ustí nad Labem"
  Data.s "Vysočina", "Jihlava"
  Data.s "Zlín", "Zlín"
  Data.s "STOP", "STOP"
  ;Finlande
  Finlande:
  Data.s "Åland", "Mariehamn"
  Data.s "Carélie du Nord", "Joensuu"
  Data.s "Carélie du Sud", "Lappeenranta"
  Data.s "Finlande-Centrale", "Jyväskylä"
  Data.s "Finlande du Sud-Ouest", "Turku"
  Data.s "Kainuu", "Kajaani"
  Data.s "Kanta-Häme", "Hämeenlinna"
  Data.s "Laponie", "Rovaniemi"
  Data.s "Ostrobotnie", "Vaasa"
  Data.s "Ostrobotnie-Centrale", "Kokkola"
  Data.s "Ostrobotnie du Nord", "Oulu"
  Data.s "Ostrobotnie du Sud", "Seinäjoki"
  Data.s "Päijät-Häme", "Lahti"
  Data.s "Pirkanmaa", "Tampere"
  Data.s "Satakunta", "Pori"
  Data.s "Savonie du Nord", "Kuopio"
  Data.s "Savonie du Sud", "Mikkeli"
  Data.s "Uusimaa", "Helsinki"
  Data.s "Vallée de la Kymi", "Kouvola"
  Data.s "STOP", "STOP"
  ;Chypre
  Chypre:
  Data.s "Nicosie", "Nicosie"
  Data.s "Limassol", "Limassol"
  Data.s "Larnaca", "Larnaca"
  Data.s "Famagouste", "Famagouste"
  Data.s "Paphos", "Paphos"
  Data.s "Kyrenia", "Kyrenia"  
  Data.s "STOP", "STOP"
  
  Drapeau_Europe:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Europe.png"
  Drapeau_France:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_France.png"
  Drapeau_Allemagne:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Allemagne.png"
  Drapeau_Autriche:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Autriche.png"
  Drapeau_Royaume_Uni:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Royaume_Uni.png"
  Drapeau_Belgique:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Belgique.png"
  Drapeau_Irlande:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Irlande.png"
  Drapeau_Luxembourg:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Luxembourg.png"
  Drapeau_Danemark:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Danemark.png"
  Drapeau_Pays_Bas:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Pays_Bas.png"
  Drapeau_Suede:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Suede.png"
  Drapeau_Espagne:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Espagne.png"
  Drapeau_Grece:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Grece.png"
  Drapeau_Portugal:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Portugal.png"
  Drapeau_Italie:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Italie.png"
  Drapeau_Slovaquie:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Slovaquie.png"
  Drapeau_Pologne:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Pologne.png"
  Drapeau_Hongrie:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Hongrie.png"
  Drapeau_Tchequie:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Tchequie.png"
  Drapeau_Finlande:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Finlande.png"
  Drapeau_Chypre:
  IncludeBinary #PB_Compiler_FilePath + "\Drapeaux\Drapeau_Chypre.png"
  
  Carte_UE_adhesion:
  IncludeBinary "carte_UE_annees_adhesion.png"
  Carte_Europe:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\union-europeenne.png"
  Carte_France:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\France.png"
  Carte_Allemagne:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Allemagne.png"
  Carte_Autriche:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Autriche.png"
  Carte_Royaume_Uni:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Royaume_Uni.png"
  Carte_Belgique:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Belgique.png"
  Carte_Irlande:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Irlande.png"
  Carte_Luxembourg:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Luxembourg.png"
  Carte_Danemark:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Danemark.png"
  Carte_Pays_Bas:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Pays_Bas.png"
  Carte_Suede:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Suede.png"
  Carte_Espagne:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Espagne.png"
  Carte_Grece:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Grece.png"
  Carte_Portugal:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Portugal.png"
  Carte_Italie:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Italie.png"
  Carte_Slovaquie:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Slovaquie.png"
  Carte_Pologne:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Pologne.png"
  Carte_Hongrie:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Hongrie.png"
  Carte_Tchequie:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Tchequie.png"
  Carte_Finlande:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Finlande.png"
  Carte_Chypre:
  IncludeBinary #PB_Compiler_FilePath + "\Cartes\Chypre.png"
  Musique_Menu:
  IncludeBinary #PB_Compiler_FilePath + "le reve de la mer.Ogg"
  Fin_Musique_Menu:
  Musique:
  IncludeBinary #PB_Compiler_FilePath + "l'eau c'est la vie.Ogg"
  FinMusique:
EndDataSection

Re: [Résolu] Revenir au départ d'un programme

Publié : dim. 24/janv./2016 10:56
par JohnJohnsonSHERMAN
Franchement bien ce code... c´est aéré, commenté, bien construit (enfin bref tout ce que je ne fait pas ;) )...
Bravo a toi micoute!
Je vais aller le regarder un peu sur pb et essayer de le tester (t´as pas un zip avec les images, ou un exe déja compilé?)

Pour en revenir a ton probléme, je pense que si tu veux revenir a un point du code (je suppose pour recharger de nouvelles données), sans pour autant fermer le programme, le mieux est sans doute de faire appel a une procédure ou a une macro (les macros me semblent une bonne alternative, tu met dedans le code pour charger tes données, et tu le rapelles ensuite quand tu en as besoin)

(PS : Euh t´as du passer du temps a écrire tous les noms de villes...)