calcul surface d'un rectangle pour me familiariser avec pb .

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: calcul surface d'un rectangle pour me familiariser avec

Message par falsam »

Concevoir une interface graphique c'est apprendre à manipuler les Objets en Pure Basic.

Qu'est ce qu'un Objet ? C'est par exemple une fenêtre.

La syntaxe d'affichage d'une fenêtre est : OpenWindow(#Fenetre, x, y, LargeurInterne, HauteurInterne, Titre$)

#Fenetre est une variable représentant l'identifiant numérique de cette fenêtre. Le premier identifiant commence à 0

Code

Code : Tout sélectionner

OpenWindow(0, 10, 100, 800, 600, "Surface d'un triangle rectangle")
Si tu testes ce code, la fenêtre va s'ouvrir rapidement et se fermer tout aussi rapidement.

:!: Pourquoi ? Parce qu'il manque la gestion événementielle de cette fenêtre à travers une boucle événementielle .

Il y a plusieurs méthodes pour gérer une boucle événementielle. La plus classique est le couple d'instruction Repeat ... ForEver

Voiçi le nouveau code de création d'une fenêtre et de sa boucle événementielle.

Code : Tout sélectionner

;Ouverture d'une fenêtre
OpenWindow(0, 100, 100, 800, 600, "Surface d'un triangle rectangle")

;Boucle évenementielle
Repeat 
  Select WaitWindowEvent() ;Un évenement est arrivé
    Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenetre ?
      End ;Apparement oui : Fermeture de la fenêtre.
  EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

selec et endselec c'est un contrôle
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

ok oui une fenetre c'est ouverte
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: calcul surface d'un rectangle pour me familiariser avec

Message par falsam »

On va créer maintenant un bouton et afficher un message quand on clique dessus.

Code : Tout sélectionner

;Ouverture d'une fenêtre
OpenWindow(0, 100, 100, 800, 600, "Surface d'un triangle rectangle")

;Création d'un bouton 
ButtonGadget(0, 700, 30, 80, 22, "Clique moi")

;Boucle évenementielle
Repeat 
  Select WaitWindowEvent() ;Un événement est arrivé
    Case #PB_Event_Gadget  ;Est un gadget qui a provoqué l'événement ?
      Select EventGadget() ;Apparemment oui : On cherche qui 
        Case 0
          MessageRequester("Information", "Vous avez cliqué sur le bouton")
      EndSelect
      
    Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenêtre ?
      End ;Apparement oui : Fermeture de la fenêtre.
  EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

oui c'est ok
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: calcul surface d'un rectangle pour me familiariser avec

Message par falsam »

Référencer ces objets (ou gadgets) Pure Basic[/i] par des numéros n'est pas très pratique. Il est difficile de se rappeler qui est qui.

Les énumérations Enumeration .... EndEnumeration.
Les énumérations sont très pratiques pour déclarer rapidement une série de constantes sans s'occuper de leur valeur numérique.

Nous allons reprendre le code précédent en ajoutant un autre bouton.

Code : Tout sélectionner

Enumeration Fenetre ;Pour le moment il y en a qu'une 
  #MaFenetre
EndEnumeration

Enumeration Gadgets
  #Button1
  #Button2
EndEnumeration


;Ouverture d'une fenêtre
OpenWindow(#MaFenetre, 100, 100, 800, 600, "Surface d'un triangle rectangle")

;Création d'un bouton 
ButtonGadget(#Button1, 700, 30, 80, 22, "Clique moi")
ButtonGadget(#Button2, 700, 60, 80, 22, "Clique moi")

;Boucle évenementielle
Repeat 
  Select WaitWindowEvent() ;Un évenement est arrivé
    Case #PB_Event_Gadget  ;Est un gadget qui a provoqué l'événement ?
      Select EventGadget() ;Apparement oui : On cherche qui 
          
        Case #Button1 ;Clique sur le bouton 1
          MessageRequester("Information", "Vous avez cliqué sur le bouton")
            
        Case #Button1 ;Clique sur le bouton 2
          MessageRequester("Information", "Vous avez cliqué sur le bouton")
  
      EndSelect
      
    Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenetre ?
      End ;Apparement oui : Fermeture de la fenêtre.
  EndSelect
ForEver
je te laisse le soin de l'analyser.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: calcul surface d'un rectangle pour me familiariser avec

Message par falsam »

Si tu as bien analysé ce code tu as du voir qu'on répétait deux fois

Code : Tout sélectionner

MessageRequester("Information", "Vous avez cliqué sur le bouton")
Les procédure. Procedure .... EndProcedure
Une procédure est une partie du code indépendante du programme principal qui peut avoir des paramètres et ses propres variables.

Reprenons le code précédent dans lequel nous appellerons une procédure pour afficher un message.

Code : Tout sélectionner

Enumeration Fenetre ;Pour le moment il y en a qu'une 
  #MaFenetre
EndEnumeration

Enumeration Gadgets
  #Button1
  #Button2
EndEnumeration

Procedure AfficheMessage()
  MessageRequester("Information", "Vous avez cliqué sur le bouton")
EndProcedure

;Ouverture d'une fenêtre
OpenWindow(#MaFenetre, 100, 100, 800, 600, "Surface d'un triangle rectangle")

;Création d'un bouton 
ButtonGadget(#Button1, 700, 30, 80, 22, "Clique moi")
ButtonGadget(#Button2, 700, 60, 80, 22, "Clique moi")

;Boucle évenementielle
Repeat 
  Select WaitWindowEvent() ;Un évenement est arrivé
    Case #PB_Event_Gadget  ;Est un gadget qui a provoqué l'événement ?
      Select EventGadget() ;Apparement oui : On cherche qui 
          
        Case #Button1 ;Clique sur le bouton 1
          AfficheMessage()
            
        Case #Button1 ;Clique sur le bouton 2
          AfficheMessage()
 
      EndSelect
      
    Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenetre ?
      End ;Apparement oui : Fermeture de la fenêtre.
  EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

Oui , mais le deuxieme bouton ne sort pas de message .
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

je ne vois pas pourquoi le bouton du bas ne fonctionne pas
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: calcul surface d'un rectangle pour me familiariser avec

Message par falsam »

klystron a écrit :Oui , mais le deuxieme bouton ne sort pas de message .
Oui et pourquoi ?
Décortique le code dans la boucle événementielle :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

il faut mettre bouton 2 aulieu de bouton 1
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

case bouton 1 faut mettre bouton 2
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

Oui ça marche apres essai :D
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: calcul surface d'un rectangle pour me familiariser avec

Message par falsam »

klystron a écrit :Oui ça marche apres essai :D
Voila un joli débogage de code :)

Effectivement c'était ça: Correction du code

Code : Tout sélectionner

Enumeration Fenetre ;Pour le moment il y en a qu'une 
  #MaFenetre
EndEnumeration

Enumeration Gadgets
  #Button1
  #Button2
EndEnumeration

Procedure AfficheMessage()
  MessageRequester("Information", "Vous avez cliqué sur le bouton")
EndProcedure

;Ouverture d'une fenêtre
OpenWindow(#MaFenetre, 100, 100, 800, 600, "Surface d'un triangle rectangle")

;Création d'un bouton 
ButtonGadget(#Button1, 700, 30, 80, 22, "Clique moi")
ButtonGadget(#Button2, 700, 60, 80, 22, "Clique moi")

;Boucle évenementielle
Repeat 
  Select WaitWindowEvent() ;Un évenement est arrivé
    Case #PB_Event_Gadget  ;Est un gadget qui a provoqué l'événement ?
      Select EventGadget() ;Apparement oui : On cherche qui 
          
        Case #Button1 ;Clique sur le bouton 1
          AfficheMessage()
            
        Case #Button2 ;Clique sur le bouton 2
          AfficheMessage()
 
      EndSelect
      
    Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenetre ?
      End ;Apparement oui : Fermeture de la fenêtre.
  EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: calcul surface d'un rectangle pour me familiariser avec

Message par falsam »

Revenons sur les procédures. (On va oublié 5 secondes les fenêtres)

Comme je l'ai précisé auparavant : Une procédure est une partie du code indépendante du programme principal qui peut avoir des paramètres et ses propres variables.

Image

Nous allons voir comment faire a travers une procédure qui nous permet de calculer la surface d'un triangle rectangle.

Code : Tout sélectionner

Procedure Surface(AB.i, AC.i)
  Protected Resultat.i
  
  Resultat = (AB * AC)/2
  Debug Resultat
EndProcedure

Surface(3,4)
■ La procedure Surface reçoit en paramètres le cotes AB et le cotes AC d'un triangle rectangle.
■ Une variable protégé interne (Resultat.i) à cette procédure recevra ce résultat.
■ Si AB = 3 et AC = 4, L'appel à cette procédure se fera de cette manière Surface(3,4)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre