QBasic – L’heure, la date, le temps
- QBasic – Introduction au QBasic
- QBasic – Ecrire sur l’écran
- QBasic – Mathématiques élémentaires
- QBasic – La ponctuation (syntaxe)
- QBasic – Les variables
- QBasic – Les commentaires
- QBasic – Les constantes
- QBasic – Entrée de données
- QBasic – Les boucles inconditionnelles
- QBasic – Les boucles conditionnelles
- QBasic – Structure conditionnelle
- QBasic – Les cas
- QBasic – Maths, logique et divers
- QBasic – Le texte
- QBasic – Le son
- QBasic – Dessiner
- QBasic – Sous-programmes, fonctions et procedures
- QBasic – Les types de variables
- QBasic – Les tableaux
- QBasic – Les types personalisés
- QBasic – L’organisation des données
- QBasic – QBasic et le système d’exploitation
- QBasic – L’accès aux fichiers
- QBasic – Le traitement des erreurs
- QBasic – La manette de jeu
- QBasic – Encore plus loin dans le graphisme
- QBasic – La mémoire
- QBasic – Le langage machine et la souris
- QBasic – L’heure, la date, le temps
- QBasic – Le clavier
Outre TIMER que l’on a utilisé il y a quelques temps pour initialiser le générateur de nombres
aléatoire avec RANDOMIZE, QBasic posséde plusieurs fonctions qui lui permettent d’exploiter le
temps.
L’heure (TIME$)
TIME$ est à la fois une fonction et une instruction. La fonction renvoie l’heure actuelle
et l’instruction la définit.
Pour afficher l’heure dans le coin en haut à droite, on peut écrire :
SCREEN 0 ‘ Mode texte uniquement
CLSDO
Heure$ = TIME$ ‘ Enregistrement de l’heure
LOCATE 1, 80 – LEN(Heure$) ‘ Calcul de l’emplacement
PRINT Heure$;
LOOP UNTIL INKEY$ <> « » ‘ Appuyez sur une touche pour quitter
Vous remarquez à juste titre que l’heure est transmise sous la forme d’une chaîne de caractères.
Donc, pour pouvoir comparer des heures différentes, il vous faudra jouer les fonctions permettant
de les traiter (
VAL, LEFT$, MID$…)Pour définir l’heure, on agit à l’inverse. On affecte à
TIME$ une chaîne de caractèresqui contient l’heure à définir.
Le format de la chaîne de caractère doit avoir l’un des formats suivant :
- « hh »
- « hh:mm »
- « hh:mm:ss »
Si les minutes et/ou les secondes ne sont pas précisées, leur valeur est alors définie à réro.
Exemple :
PRINT « Heure avant « ; TIME$
TIME$ = « 20:35:45″ ‘ Définition de l’heure du système à 20h35mn45s
PRINT « Heure après « ; TIME$
La date (DATE$)
À l’instar de
TIME$ pour l’heure, DATE$ est également une fonction et une instruction.Donc, pour afficher la date dans le coin droit, on écrira :
SCREEN 0 ‘ Mode texte uniquement
CLSDO
Dat$ = DATE$ ‘ Enregistrement de la date
LOCATE 1, 80 – LEN(Dat$) ‘ Calcul de l’emplacement
PRINT Dat$;
LOOP UNTIL INKEY$ <> « » ‘ Appuyez sur une touche pour quitter
Comme pour
TIME$, c’est une chaîne de caractères qui est transmise.Maintenant, pour définir la date, on fera comme pour définir l’heure avec
TIME$ : on lui affecteraune chaîne de caractères qui contiendra la date, tout en sachant que la date peut revêtir un des
quatre format suivant :
- mm-jj-aa
- mm/jj/aa
- mm-jj-aaaa
- mm/jj/aaaa
En hommage à Paco Rabanne, on peut donc écrire (n’ayons pas peur) :
PRINT « Date avant « ; DATE$
DATE$ = « 9/9/99″ ‘ On définit la date au 9 août 1999
PRINT « Date après « ; DATE$
ON TIMER GOSUB
Pour ceux qui ont déjà pratiqué un peu la programmation Windows avec Delphi, Visual Basic ou même
Visual C++, on peut comparer ON TIMER à un contrôle Timer.
En effet, avec
ON TIMER, on peut faire se répeter un certain groupe d’instructions à intervallerégulier.
La syntaxe de
ON TIMER GOSUB est la suivante :
ON TIMER(Interval%) GOSUB label
Si vous avez lu la partie consacrée à la manette de jeu, vous constaterez qu’il y a quelques similitudes
entre
ON TIMER et ON STRIG.Et oui, comme pour la manette, il faut intervenir sur l’état de l’interception d’évenements. Et
ce sont les même mots-clefs que l’on retrouve, à ceci prêt que (vous l’aurez deviné) en lieu et
place de
STRIG, on écrira TIMER :- TIMER ON active l’intercéption d’évenements
- TIMER OFF le désactive
- TIMER STOP suspend de façon temporaire l’intercéption. On la réactive on utilisant
une nouvelle foisTIMER ON
Le code suivant chande la couleur d’un cercle de façon aléatoire à l’interval de 1 seconde :
SCREEN 13 ‘ 256 couleurs, c’est mieux !
CLS
RANDOMIZE TIMERON TIMER(1) GOSUB Clignoter ‘ On va à la procédure Clignoter toute les 1 secondes
TIMER ON ‘ Activation de l’intercéption d’évenementsDO
LOOP UNTIL LEN(INKEY$) ‘ Une touche pour finir (ici avec LEN(INKEY$))
ENDClignoter:
Couleur% = RND * 255 ‘ Définition de la couleur à employer
CIRCLE(160, 100), 50, Couleur%
PAINT(160, 100), Couleur% ‘ Remplissage du cercle
RETURN