La solution idéale pour se former à l'outil informatique
          Accueil - Plans d'études - Les cours - Les tarifs - Inscriptions - Contactez nous - Lisez moi
    Page précédente Application Moon

Testez vos aptitudes à développer     

MOON - Une application sur les phases lunaires
Cette application présente d’intéressantes caractéristiques de Visual Basic, comme le graphisme et la
manipulation directe de la feuille. En la construisant, vous apprendrez de nouveaux concept de programmation 
Visual Basic.

L’application [MOON] montre graphiquement l’état de la lune à une date donnée, choisie entre 1753 et 2078 (l’intervalle de dates géré par Visual Basic.

Début du programme(Begin)
Choisissez la commande " Nouveau projet " du menu " Fichier ".
Dimensionnez la feuille avec la souris, de façon à ce qu’elle soit à peu près carrée. Ainsi l’image circulaire de
la lune apparaîtra ronde et non ovale.
Une largeur de 4170 et une hauteur de 5160 devraient convenir.
Les nombres indiquant la largeur et la hauteur sont affichés à l’extrémité droite de la barre de propriétés.
L’emplacement exact de la feuille à l’écran n’est pas important car nous ajouterons au code les instructions 
nécessaires pour qu’elle soit centrée au chargement.(Instruction [CenterForm] ).

Avant de commencer à taper du code, nous créerons une barre de menus, ajouterons une étiquette et initialiserons 
les propriétés.
1)- Ouvrez le menu " Fenêtre(Window) " dans la barre de menus et choisissez la commande " Création de 
menu (Menu Design)".
L’application MOON a un seul menu déroulant, " Options ", qui comprend deux commandes.
Tapez " &Options " dans le champ de saisie Caption , puis appuyez sur la touche tabulation, pour amener
Le curseur de la souris sur la commande suivante, tapez " mnuOptions " dans le champ Name.
Le " et commercial " (&) est optionnel. Il souligne la lettre qui suit et permet à l’utilisateur de choisir la commande 
en tapant au clavier la combinaison de touches ALT + lettre soulignée.

Cliquez sur le bouton " suivant(Next) pour entrer le nom de la première commande menu.
Cliquez sur la flèche orientée à droite pour l’indenter et indiquer qu’il s’agit d’une commande de menu.
Saisissez " &Nouvelle date " dans le champ "Caption et " mnuDate " comme nom de contrôle.
Cliquez encore une fois sur " Suivant(Next) et tapez " &Quitter " et " mnuQuitter ".
Cliquez sur la flèche orientée à droite pour l’indenter.
Pour sauvegarder votre réalisation appuyer sur le bouton " OK "
Vérifier le menu en lançant le programme par le bouton flèche droite de la barre d’outils, ou en utilisant le raccourci 
qui est la touche " F8 ".

Nous avons créé les sous programme intitulés " Sub mnuDate_Click ( ) " et " Sub mnuQuitter_Click ( ) ",
Ils ne seront activés que lorsque les commandes correspondantes auront étés choisies par l’utilisateur.
L’application " MOON " n’utilise qu’un seul contrôle, un champ étiquette (Label) qui affiche la date et la
Phase lunaire correspondante : montante ou descendante (avant ou après la plaine lune).

2)- Vous sélectionnez un objet (Etiquette1 (Label)) depuis la boite à outils, et vous le dessinez dans la
feuille de façon à ce qu’il soit centré près du sommet de la feuille.
Donnez une largeur de 1935 et une hauteur de 375 à l’étiquette.

2 .1)- Initialisons les propriétés de la feuille (Form1) et de l’étiquette (Label1) - (Touche de raccourci F4 ).
Sélectionnez d’abord l’étiquette et choisissez la propriété " Alignment " dans la fenêtre de propriétés.
Donnez lui la valeur " 2  - Centré ". Changez ensuite les couleurs de fond et de premier plan de l’étiquette.
Mettez la propriété " BackColor " de l’étiquette à &H00400000&, qui représente le bleu sombre.
Donnez ensuite la valeur &H0000FFFF(Jaune) à la propriété " ForeColor ".

 Une Application sur les phases lunaires (Suite)
Sélectionnez ensuite la feuille (Form1) et changez la propriété " Caption " pour que le titre de la fenêtre 
soit " Phases de la lune ".
Entrez la chaîne Moon dans la propriété " Name " et mettez " BorderStyle " à " 0 – Aucun ".
Donnez la même couleur de fond à la fenêtre, à l’étiquette (&H00400000&) et mettez la
Propriété " ForeColor " à &H0080FFFF&.
Laissez les autres propriétés à leur valeur par défaut.

Résumé des modifications apportées à la fenêtre des propriétés de la feuille Moon.
Begin Form Moon
BackColor = &H00400000&
Caption = " Phases de la lune "
ForeColor = &H0080FFFF&
Begin Label1 ( Etiquette1)

Alignment = 2 ‘Centré
BackColor = &H00400000&
Caption = " Etiquette1 "
ForeColor = &H0000FFFF&
Height = 375
Width = 1935
End

Il ne vous reste qu’a ajouter du code aux sous programmes appropriés.
Il faut déclarer une constante et deux variables globales à la feuille.

2.2) - Choisissez le bouton " Code(View Code) " dans la fenêtre de projet puis choisissez " Général " dans la liste 
des objets (Object) et " Déclarations " dans la liste des procédures.
Tapez ensuite les lignes suivantes
‘Déclaration d’une constante ayant pour nom " NBETOILES " et ayant pour valeur le chiffre 1000
Const NBETOILES = 1000
‘Déclaration d’une variable intitulée " Phase " Nous ne précisons pas le type de variable, aussi VB va la
considérer par défaut à une variable de type " Variant "
Dim Phase
’Déclaration d’une variable intitulée " DateLune " déclarée comme étant de type " String " (Alphanumérique).
Dim DateLune$ ‘Nous aurions pu écrire et je cite, " Dim DateLune As String ".
‘Le sigle Dollar ($) représente la valeur de type String. (Se reporter aux documents fournis en annexe).

Après avoir effectué les déclarations de variables indispensables, nous allons développer le programme en
saisissant les instructions nécessaires au déroulement du programme.

En effectuant un double click sur la feuille, nous faisons apparaître les fenêtres de saisie du code.
La première fenêtre qui est ouverte par le programme est l’objet " Form " et la procédure "  Load ".
Le curseur est en attente d’instructions sous la procédure "  Sub Form_Load ( )  "  -Ecrire :
‘Centrer la feuille à l’écran (On utilise la procédure préalablement étudiée dans le cours précédent )

CenterForm Me ‘(Centrer la feuille Celle-ci) 
‘Obtenir la date
GetMoonDate
‘Lance des nombres aléatoires pour l’affichage des étoiles
Randomize Timer

Une Application sur les phases lunaires (Suite)
Le sous programme Form_Load est activé une fois, lorsque l’application se lance et que la feuille est chargée
en mémoire. Centrer la fenêtre principale, obtenir la date de départ et lancer le générateur de nombres
aléatoires sont des tâches qui n’ont pas besoin d’être renouvelées pendant le fonctionnement du programme.

C’est la raison pour laquelle nous les avons mises dans le code Form_Load.

Dans l’application MOON, Form_Paint est appelé par le sous programme menDate_Click, lui même activé
Si l’on choisi " Nouvelle date " dans le menu principal.
Choisissez " Paint dans la liste des procédures de la feuille " Form1 " object " Form ".
Nous visualisons la procédure du sous programme intitulé : " Sub Form_Paint ( ) "

Sub Form_Paint ( )
‘Met à jour l’étiquette et efface le graphique
If Phase < .5 Then ‘Traitement conditionnel (Si Phase est plus petit que 0.5 alors…)
Etiquette1.Caption = " Lune descendante du "  + DateLune$
Else
Etiquette1.Caption = " Lune montante du "  + DateLune$
End If

Cls ‘Effacement
‘Détermine le nombre de lignes de pixels
ScaleMOde = 3 ‘Propriéte ScaleMOd de Form1 ayant la valeur 3-Pixels
Pixels% = ScaleHeight + 1
For i% = 1 To NBETOILES
Pset (Rnd, Rnd) ‘Randomize valeurs aléatoires calculé par l’environnement de programmation
Next

‘Définit le système de coordonnées pour centrer la lune
Scale (-2, -2) – ( 2,2)
‘Dessine la partie visible de la lune
For y = 0 To 1 Step 4 / Pixels%
x = sqr (1-y * y)
‘Eteint les étoiles derriere la lune
Line (-1,y) – (x,y), 0
Line (-x, -y) – (x, -y), 0
‘Détermine le coté de la partie éclairée
r = 2 * x
If Phase < .5 Then
X1 = -x
X2 = r – 2 * Phase * r – x
Else
X1 = x
X2 = x –2 * Phase * r + r
End If

‘Dessine la partie éclairtée de la lune
Line (x1, y) – (x2, y)
Line (x1, -y) – (x2, -y)
Next
End Sub

Sélectionnez " mnuDate dans la liste des objets et click dans celle des procédures.
Rentrez ces quelques lignes de codes.
Sub mnuDate_Click ( )
‘Obtenir une date
GetMoonDate ‘Appel de la procédure GetMoonDate
Form_Paint ‘Appel de la procédure Form_Paint
End Sub

 Une Application sur les phases lunaires (Suite)
GetMoonDate est un sous programme créé par le développeur et non par l’environnement de développement
Il est appelé une fois à partir de " Form_Load " et de " mnuDate_Click " à chaque fois que l’utilisateur
Choisit une nouvelle date.
Sélectionnez la commande " Nouvelle procédure(New Procedure " du menu " Affichage (View)",
Saisissez " GetMoonDate " dans le champ " Nom(Name " et pressez la touche Entrée.
Visual Basic crée instantanément une nouvelle routine, prête à être éditée.
Ajoutez-lui le code suivant :

Sub GetMoonDate ( )
‘La première fois, récupère la date du jour
Static PasLaPremièreFois As Intéger ‘Déclaration et type de variable

‘Ne pas demander de date à l’utilisateur la première fois
If PasLaPremièreFois = True Then
‘Initialise les paramètres d’une boite d’entrée de texte
Invite$ = " Entrez une date au format jj-mm-aaaa "
Titre$ = " Phases de la lune "
Defaut$ = Date$
‘Demander une date
DateLune$ = InputBox (Invite$, Titre$, Defaut$)
Else
‘Utiliser la date du jour
DateLune$ = Date$
PasLaPremièreFois = True
End If
‘A t’on appuyé sur abandon ?
If DateLune$ = " "  Then
DateLune$ = Date$
End If

‘Extrait les chiffres de la date de la chaîne
NoJour = Val (Left$(DateLune$, 2))
NoMois = Val (Mid$(DateLune$, 4, 2))
NoAnnée = Val (Mid$(DateLune$, 7, 2))
‘Obtient le numéro de série de la date entrée
On Error GoTo PiègeAErreurs ‘Si erreur renvoie vers la variable nommée PiègeAErreur
NoSérie = DateSerial (NoAnnée, NoMois, NoJour)
‘Extrait les chiffres de la date à partir du numéro de série
MTst = Month(NoSérie)
JTst = Day(NoSérie)
Atst = Year(NoSérie)
‘Calcule le jour julien astronomique
JourJulien = NoSérie + 2415019
‘Calcule la phases de la lune
Phase = (JourJulien + 4.867) / 29.53059
Phase = Phase – Int(Phase)
‘Vérifie la date d’entrée
If MTst <> NoMois Or JTst <> NoJour Or Atst <> NoAnnée Then
Error 1
End If

Exit SubPiègeAErreur :
Beep
MsgBox " Date invalide… " + DateLune$, 48, " Phases de la lune "
Resume Encore
End Sub

Une Application sur les phases lunaires (Suite)
Encore un sous programme qui a besoin de très peu de code ! Le sous programme " mnuQuitter _Click "
Qui est activé lorsque l’on choisit l’option " Quitter ".
Il ne comporte qu’une seule ligne de code

Sub mnuQuitter_Click ( )
‘Quitter le programme
Unload Moon
End Sub

Note : Ce programme ne comportant qu’une seule feuille de travail, il est évident qu’ en employant
l’instruction " Unload " suivi du nom de la feuille, nous fermons le programme.
L’instruction Unload ne retire que la feuille qui est stockée en mémoire.
Néanmoins il est bon de savoir que pour un programme comportant de nombreux fichiers, nous emploierons
L’instruction " End " qui ferme absolument tous les fichiers ouverts.
On peut également utiliser l’instruction " Unload Me " qui veut dire fermer la feuille de travail (fermez-moi "
sans précisez le nom de la feuille.(Elle ne retire de la mémoire que la feuille en cours d’ utilisation)
Le programme est prêt à fonctionner.
Choisissez la commande " Lancer " du menu " Exécution " ou pressez la touche F5.

Cette application a été développée initialement en Visual Basic 3.0 et réécrite en Visual Basic 6.0.
Si vous rencontrez des difficultés pour la déboguer, faites moi le savoir en écrivant à :
webmaster @langlade-informatique.com

                                     Dossier référence : Application Moon     Copyright © 2000 [ Langlade Informatique Club  ]. Tous droits réservés.
                                                                                                                                                                          
Révision : 10 janvier 2003
       
        Nos ateliers de cours, vous permettent de vous former facilement.
              AUCUNE CONNAISSANCE PRÉALABLE N'EST NÉCESSAIRE
    Page précédente
   
          Accueil - Plans d'études - Les cours - Les tarifs - Inscriptions - Contactez nous - Lisez moi