Qbasic
- 2 -
Nous verons les commentaire
et le dessiner
Les commentaires
Plus on avance en programmation, plus les programmes deviennent
longs, plus ils deviennent complexes et moins on s'y retrouve.
C'est pourquoi il existe les commentaires. Dans un commentaire,
on peut écrire ce que l'on veut.
Il existe 2 façons d'écrire des commentaires :
REM
REM est l'abréviation de REMARK. On l'utise comme ceci
:
REM Ceci est un commentaire, et je peux écrire ce que je
veux
REM est présent depuis les premières versions de
BASIC et a été conservé mais n'est pratiquement
plus utilisé. On lui préfère l'apostrophe.
L'apostrophe (')
L'apostrophe fonctionne comme REM. Mais il a deux petits avantages
:
Toujours la loi du moindre effort : une touche à presser
pour l'apostrophe, contre trois pour REM.
Avec l'apostrophe, on peut écrire des commentaires en fin
de ligne :
CLS ' Cette instruction efface l'écran
PRINT "7 + 9 ="; ' Celle-ci affiche 7 + 9 =
PRINT 7 + 9 ' Quand à celle là, elle effectue l'opération
7 + 9 et affiche le résultat.Dessiner
Pour l'instant, nous avons utilisé exclusivement le mode
texte. Ce mode est très limité est ne permet pas
d'exploiter à 100% les capacités graphiques offertes
par QBasic. En QBasic, il existe 12 mode d'écran (0 à
13, sauf 5 et 6).
L'instruction SCREEN
L'instruction SCREEN permet de passer d'un mode d'écran
à un autre. Le mode d'écran par défaut est
le 0, c'est à dire le mode texte. Voici les differents
mode possibles : MODES D'ECRAN Mode d'écran Résolution
(en pixels) Couleurs Texte Adaptateurs graphiques
0 Mode texte uniquement 16 40 x 25, 40 x 43, 40 x 50, 80 x 25,
80 x 43, ou 80 x 50 MDPA, CGA, Hercules, Olivetti, EGA, VGA ou
MCGA
1 320 x 200 4 40 x 25 CGA, EGA, VGA ou MCGA
2 640 x 200 2 80 x 25 CGA, EGA, VGA ou MCGA
3 720 x 348 1 80 x 25 Hercules, Olivetti ou AT&T
4 640 x 400 1 80 x 25 Hercules, Olivetti ou AT&T
7 320 x 200 16 40 x 25 EGA ou VGA
8 640 x 200 16 80 x 25 EGA ou VGA
9 640 x 350 16 80 x 25, ou 80 x 43 EGA ou VGA
10 640 x 350 4 80 x 25, ou 80 x 43 Ecran monochrome
11 640 x 480 2 80 x 30, ou 80 x 60 VGA ou MCGA
12 640 x 480 16 80 x 30, ou 80 x 60 VGA
13 320 x 200 256 40 x 25 VGA ou MGCA
L'instruction WIDTH
Avant d'entrer de plein fouet dans le dessin, une dernière
remarque concernant le texte. Vous aurez remarquez que dans la
colonne 'Texte' du tableau ci-dessus, il arrive qu'il y est plusieurs
possibilités de résolution pour le mode texte.
Par exemple, pour le mode 0 (le plus riche), si on avait voulu
un écran de 80 colonnes et de 50 lignes, on aurrait écrit:
SCREEN 0 ' Passage au mode d'écran 0
WIDTH 80, 50 ' 80 colonnes et 50 lignes
Les couleurs
Il existe 16 couleurs en QBasic (de 0 à 15). COULEURS Couleur
Numéro Modes d'écran
Noir 0 0, 1, 2, 7, 8, 9, 11, 12, et 13
Bleu 1 0, 7, 8, 9, 12, et 13
Vert 2 0, 7, 8, 9, 12, et 13
Cyan 3 0, 7, 8, 9, 12, et 13
Rouge 4 0, 7, 8, 9, 12, et 13
Violet 5 0, 7, 8, 9, 12, et 13
Marron 6 0, 7, 8, 9, 12, et 13
Blanc 7 0, 7, 8, 9, 12, et 13
Gris 8 0, 7, 8, 9, 12, et 13
Bleu clair 9 0, 7, 8, 9, 12, et 13
Vert clair 10 0, 7, 8, 9, 12, et 13
Cyan clair 11 0, 1, 7, 8, 9, 12, et 13
Rouge clair 12 0, 7, 8, 9, 12, et 13
Violet clair 13 0, 1, 7, 8, 9, 12, et 13
Jaune 14 0, 7, 8, 9, 12, et 13
Blanc brillant 15 0, 1, 2, 7, 8, 9, 11, 12, et 13
Pour changer la couleur, on utilise l'instruction
COLOR. Suivant le mode d'écran sélectionné,
cette instruction peut avoir plusieurs arguments. Pour simplifier,
voici un tableau regroupant les différents cas: L'INSTRUCTION
COLOR Mode d'écran Syntaxe
0 COLOR Texte, Fond, Cadre
1 COLOR Fond
4, 12 et 13 COLOR Texte
7, 8, 9 et 10 COLOR Texte, Fond
Voici quelques exemples d'applications :
Mode 0 :
SCREEN 0
COLOR 0, 5, 4 ' Texte Noir, Fond Violet, Cadre Rouge
PRINT "Ceci est un texte"Mode 1 :
SCREEN 1
COLOR 1 ' Fond Bleu
PRINT "Ceci est un texte"Mode 4, 12 et 13 :
SCREEN 12
COLOR 2 ' Texte Vert
PRINT "Ceci est un texte"Mode 7, 8, 9 et 10 :
SCREEN 7
COLOR 8, 1 ' Texte Gris, Fond Bleu
PRINT "Ceci est un texte"Il est très facile de
faire clignoter un texte. Il suffit pour cela d'ajouter 16 à
la couleur séléctionnée.
Exemple :
SCREEN 0
CLS
FOR i = 0 to 15
COLOR i
PRINT "Couleur N°"; i;
COLOR i + 16
PRINT "Clignotement correspondant"
NEXT i
Les instructions PSET et PRESET
Ces instructions permettent de tracer un point sur l'écran.
Leur syntaxe est très simple :
PSET (X, Y), [Couleur]
PRESET (X, Y), [Couleur]
Utilisées ainsi, ces deux instructions sont équivalentes.
Mais si l'on ne spécifie pas le dernier argument (Les arguments
entre crochets [ et ] sont TOUJOURS faculatatifs) qui indique
la couleur a utiliser, PSET utilise la couleur de premier plan
et PRESET la couleur d'arrière plan. Ca peut être
utile pour réaliser une animation sommaire. Et oui, pour
animer un graphisme, il faut d'abord effacer ce graphisme, puis
le redéssiner ailleur. Nous verrons un exemple plus tard.
Pour l'instant, observez ce magnifique ciel étoilé
scintillent, grâce à l'utilisation de PSET, PRESET,
RND, DO...LOOP :
SCREEN 1 ' 320 x 200 pixels
CLS
DO
PSET (RND * 320, RND * 200) ' On dessine un point au hasard
FOR i = 0 TO 100 ' On efface plusieurs point pour un ciel harmonieux
PRESET (RND * 320, RND * 200) ' On efface un point au hasard
NEXT i
LOOP
Pour quitter ce programme, tapez CTRL + PAUSE.
Lignes et rectangles (instruction LINE)
Pour tracer une ligne, on utilise l'instruction LINE. Voici sa
syntaxe :
LINE (X1, Y1)-(X2, Y2)
Les coordonnées X1 et Y1 représente la première
extrémité de la ligne. Les coordonnées X2
et Y2 corespondent quand à elles à la deuxième
extrémité de la ligne. L'exemple suivant trace une
ligne oblique, au centre de l'écran :
SCREEN 12
CLS
LINE (50, 50)-(590, 430) ' Ligne
Pour déterminer la couleur de la ligne, on spécifie
le numéro de la couleur. Par exemple, pour une ligne rouge
:
SCREEN 12
CLS
LINE (50, 50)-(590, 430), 4 ' Ligne Rouge
Mais l'instruction LINE ne s'arrête pas là. Elle
permet de tracer des rectangle en mentionnant la lettre B (pour
Box) comme argument. Le rectangle tracé aura alors pour
premier coin X1 et Y1, et comme coin opposé X2 et Y2. Autrement
dit, il aura pour diagonale la ligne qui aurrait été
tracée sans B :
SCREEN 12
CLS
LINE (50, 50)-(590, 430), 4, B ' Rectangle Rouge
Maintenant, pour tracer un rectangle plein, on rajoute après
le B, la lettre F (pour Full. Ceci aura pour effet de remplir
le rectangle avec la couleur choisie :
SCREEN 12
CLS
LINE (50, 50)-(590, 430), 4, BF ' Rectangle Rouge Rempli
Un dernier argument permet de spécifier l'aspect de la
ligne. Il est codé sur 16 bits. Le fonctionnement est assez
complexe. Lisez si vous voulez.
Qui dit bit dit BINAIRE. Un entier de 16 bits, c'est en fait 16
chiffres, soit 0, soit 1, l'un à coté de l'autre.
Par exemple 1010101010101010 est un nombre binaire.
Pour définit l'aspect de la ligne, QBasic regarde la position
de chaque 1 ou 0 de gauche à droite. Si c'est un 1, un
point est dessiné. Si c'est un 0, il n'y en a aucun.
SCREEN 12
CLS
LINE (50, 50)-(590, 430), , , 3 ' Ligne en pointillés (3
= 011 en binaire)
Tracer un cercle (CIRCLE)
Pour tracer un cercle sur l'écran, on utilise l'instruction
CIRCLE dont la syntaxe est la suivante :
CIRCLE (X, Y), Rayon
X et Y représentent le centre du cercle. Rayon est quand
à lui le rayon du cercle. L'exemple suivant trace un cercle
de 50 pixels au centre de l'écran en mode d'écran
12 :
SCREEN 12
CLS
CIRCLE (320, 240), 50 ' Un cercle
Comme pour une ligne, on peut changer la ligne en donnat le numéro
de la couleur correspondante :
SCREEN 12
CLS
CIRCLE (320, 240), 50, 14 ' Un cercle jaune
Et à partir d'ici, comme pour une ligne, il y a des tas
d'arguments permettant de triturer ce cercle.
On peut, par exemple, au lieu d'un cercle, tracer un arc. On spécifie
pour celà l'angle de départ de l'arc, puis la fin.
PETIT RAPEL DE MATHEMATIQUES Les
mesures d'angles doivent être exprimées en radians.
360° = 2 x PI rads
Donc, pour convertir des degrès en radians, il faut effectuer
l'opération suivante :
Radians = 2 * PI / 360 * Degres
En simplifiant l'équation :
Radians = PI / 180 * Degres
De plus, on adopte le sens trigonométrique
(anti-horaire). Et comme dans un repère ortho-normé,
on part de la partie X positif et Y positif.
Donc, si on suit scrupuleusement les rêgles énoncées,
pour tracer le quart supérieur droit de notre cercle, on
écrit ceci :
CONST PI = 3.14159265458 ' On définit la constante PI
SCREEN 12
CLS
CIRCLE (320, 240), 50, 14, 0, PI / 180 * 90 ' Un quart de cercle
jaune
Le dernier argument permet de dessiner une ellipse. Cet argument
est en fait le rapport du rayon Y sur le rayon X. Cette exemple
transforme notre cercle de départ en élipse :
SCREEN 12
CLS
CIRCLE (320, 240), 50, 14, , , .5 ' Une ellipse jaune
DRAW
Une dernière méthode graphique consiste à
utilisé l'instruction DRAW. Cette instruction remplace
en quelque sortes ce qu'on appelait la tortue dans d'anciennes
(mais alors anciennes!) versions de langages dont certains ont
malheuresement disparus aujourd'hui (malheuresement car on pouvait
tout de même bien s'amuser!).
Pour utiliser DRAW, on lui associe tout simplement une chaine
de caractères où se trouve les instructions à
executer, à la manière de l'instruction PLAY pour
le son.
D[n] Déplace le curseur vers le
bas de n unités.
E[n] Déplace le curseur vers le haut et la droite de n
unités.
F[n] Déplace le curseur vers le bas et la droite de n unités.
G[n] Déplace le curseur vers le bas et la gauche de n unités.
H[n] Déplace le curseur vers le haut et la gauche de n
unités.
L[n] Déplace le curseur vers la gauche de n unités.
M+x,y Place le curseur sur le point x,y.
R[n] Déplace le curseur vers la droite de n unités.
U[n] Déplace le curseur vers le haut de n unités.
[B] Préfixe facultatif qui déplace le curseur sans
tracé.
[N] Préfixe facultatif qui trace et retourne le curseur
à sa position initiale.
An Effectue une rotation de n * 90 degrés (n peut être
0, 1, 2, ou 3).
Cn Définit la couleur de tracé (n est un attribut).
Pn1,n2 Définit les couleurs de remplissage et de bordure
d'un objet (n1=couleur de remplissage, n2=couleur de bordure)
Sn Modifie l'échelle en définissant la longueur
d'une unité de mouvement de curseur. La valeur par défaut
de n est 4, ce qui équivaut à un pixel.
TAn Rotation de n degrés (de -360 à 360).
L'exemple suivant trace un triangle réctangle :
SCREEN 1
CLS
' Pour être clair, on utilise la capacité qu'a QBasic
à concaténer les chaines
' de caractères
Triangle$ = Triangle$ + "R15" ' 15 unités à
droites
Triangle$ = Triangle$ + "H15" ' 15 unités en
haut à gauche
Triangle$ = Triangle$ + "D15" ' 15 untités vers
le bas
DRAW Triangle$
Le remplissage
Ormis l'instruction LINE qui permet de remplir facilement un rectangle
avec la couleur choisie, on peut utiliser l'instruction PAINT
pour remplir facilement une surface avec une couleur, ce qui est
très utile pour remplir un cercle créé avec
l'instruction CIRCLE.
La syntaxe de cette instruction est :
PAINT (X, Y), Couleur
Il y a d'autres arguments, mais il ne sont guère utiles...
Pour créer une cible, on écrira :
SCREEN 12 ' 640 x 480 pixels
CLS
Couleur = 14 ' Définition de la
couleur de remplissage
FOR i = 200 TO 0 STEP -50
IF Couleur = 14 THEN Couleur = 4 ELSE Couleur = 14 ' Changement
de la couleur (Jaune ou rouge)
CIRCLE (320, 240), i, Couleur ' On déssine le cercle...
PAINT (320, 240), Couleur ' ...puis on le remplit
NEXT i
Suite
Qbasic - 3 -
kevb |