Cours de Quick Basic
Cours de Quick Basic
COLOR
Pour avoir des mots plus "fun ", vous avez besoin d'utiliser des couleurs. Pour faire cela, vous
utiliserez le mot clé COLOR. COLOR est utilisé pour changer la couleur d'un mot à l'écran quand
vous exécutez un programme.
Pressez F5
Pressez F5
Savez vous pourquoi le texte ne s'affiche pas en vert comme dans le programme précédent ? Et bien,
tout simplement que l'instruction de couleur est située après le texte. Il faut donc toujours insérer le
mot clé COLOR avant le texte !
CLS
COLOR 1
PRINT " normal "
COLOR 17
REM 17 = 1 + 16 (1= Bleu)
PRINT " clignotant "
2
Pressez F5
SOUND
Le dernier mot clé de cette première partie est SOUND, il sert à faire un bruit. Pour utiliser ce
mot clé, vous devez entrer deux nombres. Le premier nombre est la fréquence (de 37 à 32 767),
le second nombre représente la durée de ce son.
PSET
Si vous avez compris les coordonnées, vous êtes prêt à dessiner ! La première chose que vous allez dessiner est
un point. Avant de tracer votre point, vous devez décider de l'emplacement de ce point et de sa couleur. Pour
dessiner un point on utilise le mot clé PSET qui est suivi des coordonnés du point entre parenthèse puis de la
couleur de votre point. Vous voulez dessiner un point blanc possédant les coordonnées x = 10, y = 15 alors
suivez l'exemple suivant :
Pressez F5
Regardez bien en haut à gauche vous pourrez apercevoir un petit point blanc, il est très petit non ?
LINE
Maintenant que vous savez faire un point, vous allez apprendre à tracer une ligne (LINE en anglais). Une ligne
est différente d'un point car elle commence à un endroit et finit à un autre. Un point commence à un endroit et
finit au même. Donc si vous voulez tracer une ligne, vous devez dire à Q-Basic où commencer la ligne (x,y) et
où la finir (x,y).
Pour avoir une bonne idée de ce qu'est une ligne, nous allons dessiner une ligne du haut à gauche jusqu'au bas à
droite. Le mot clé pour dessiner une ligne est LINE.
Vous vous rappelez, nous sommes dans le mode d'écran 12, l'écran possède donc 640 pixels (points) à
l'horizontale et 480 à la verticale. Pouvez vous trouver où se trouve le point (640,480) ? Il est en bas à droite :
vous vous rappelez que le point (0,0) est en haut à gauche ! Si vous n'êtes toujours pas convaincu essayer ceci.
3
REM programmé par Christophe DESCOTTES GENON
REM programme qui trace une ligne
CLS
SCREEN 12
LINE (0, 0) - (640, 480), 4
END
Pressez F5
Ce programme donne une ligne rouge. Mais il y a une autre façon de donner la couleur rouge à une ligne : en
indiquant la couleur avant de tracer la ligne. En effet dans l'exemple ci dessus la couleur est indiquée après les
coordonnées de la ligne mais elle est séparée d'une virgule. Si vous ne voyez toujours pas, essayer cet exemple.
Pressez F5
Le mot clé LINE peut être utilisé pour d'autre chose. En effet, vous pouvez dessiner des boites. Vous n'avez
qu'à écrire LINE comme vous en avez l'habitude et d'ajouter à la fin B pour Box (Boite) ou BF pour filled
(pleine). Le début de la ligne est le point en haut à gauche de la boite et le deuxième point est celui qui se
trouve en bas à droite de la boite.
Pressez F5
Pressez F5
Pressez F5
CIRCLE
Une autre forme intéressante est le cercle. Ce dernier est plus facile à dessiner qu'une ligne ou qu'une boite. En
effet, il vous suffit d'indiquer les coordonnées du centre de ce cercle ainsi que le diamètre de ce dernier. Par
exemple, nous allons tracer un cercle qui a pour centre le point (100, 200) et qui possède un diamètre de 50
pixels (points). Le mot clé à utiliser est CIRCLE.
Pressez F5
Ce programme dessine un cercle blanc. Vous pouvez choisir la couleur de la même manière que pour un texte :
Pressez F5
CHAPITRE III
Dans cette partie vous allez apprendre à vous servir de variables et à collecter des informations provenant de
l'utilisateur de votre programme.
Maintenant que vous savez dessiner des objets, il est temps de faire des programmes qui font des choses. La
première chose à faire est de donner une petit boite au programme pour qu'il puisse y ranger des données.
Ces boites sont appelé variables. Il faut savoir qu'en Q-Basic il y a cinq sortes de variables :
5 Integer %
39.12 Single !
5
12345.12 Double #
Il y a deux façons de déclarer une variable. La première est d'utiliser le mot clé DIM. Imaginons que vous
vouliez déclarer une variable qui s'appellerait " MaVariable " et qui serait du type Integer (un nombre entier
compris en 0 et 255). Vous écrirez : DIM MaVariable As Integer. L'autre façon est d'utiliser les abréviations
des types (integer = %, string = $, etc...) qu'il suffit d'accoler à la fin du nom de la variable. MaVariable
devient MaVariable%. Il est important de toujours préciser le type de variable avec l'une des deux façons. Si
on omet de le faire, Q-Basic assume qu'il s'agit d'une variable de type Single ce qui peut éventuellement
conduire à des erreurs.
Un autre point important est la façon d'utiliser les variables. Souvent le signe = ne signifie pas égal mais
affecter à. a% = 3, signifie affecté 3 à a. On peut donc tout à fait écrire c = c + 1, ce qui signifie affecter la
valeur de c + 1 à c. Cela peut paraître un peu étrange au début mais on s'y habitue vite.
Vous allez créer votre première variable. Votre variable sera de type chiffre (Integer). Nous allons appeler la
variable "premier" car c'est la première variable que vous créez.
Pressez F5
VARIABLES ET INPUT
Maintenant Q-Basic sait que premier est une variable chiffre. Faites un programme qui fasse quelque chose.
CLS
premier = 5
REM Q-Basic sait maintenant que premier est la même chose que 5
second = premier + 2
Pressez F5
Pouvez vous deviner ce que le programme affichera avant de le lancer ? Cet exemple montre juste comment
utiliser les variables, il ne montre pas en quoi elles sont importantes.
Les boites à mot (variable STRING) sont très bien pour poser des questions et garder la réponse en mémoire.
En effet pour garder en mémoire une réponse, il suffit de la mettre dans une variable. Il existe un mot clé pour
6
Pressez F5
Pour le prochain projet, nous allons construire une calculatrice qui additionne deux nombres et qui demande le
nom de l'utilisateur.
CLS
INPUT "quel est votre nom " ; nom
INPUT "entrez le premier nombre " ; premiernombre
INPUT "entrez le deuxième nombre " ; deuxièmenombre
CLS
REM nous effaçons l'écran de nouveau pour avoir une meilleure
vision du résultat.
PRINT nom ; premiernombre ; "+ " ; deuxièmenombre ; "= " ;
premiernombre + deuxièmenombre.
END
Pressez F5
CHAPITRE IV
Dans cette partie vous allez apprendre à vous servir de vos programmes pour prendre des décisions.
IF THEN ELSE
Vos programmes peuvent désormais collecter des informations mais tout cela n'est pas terrible, car ils ne
peuvent pas prendre leurs propres décisions. C'est ce que nous allons apprendre dans cette partie du tutorial.
Comment faire pour dire au programme de prendre une décision ? Imaginez qu'un de vos amis vous demande
ce que vous faites demain.
Q-Basic fonctionne de la même manière sauf que comme c'est un langage de programmation qui a été crée par
des américains ses commandes sont donc en anglais.
Si = If
Alors = Then
Sinon = Else
Vous ne voyez toujours pas comment cela fonctionne ? Nous allons donc créer un exemple qui demandera à
l'utilisateur de taper deux nombres (que nous mettrons dans des variables), puis le programme écrira si ces
deux nombres sont égaux ou non.
Pressez F5
Le signe = n'est pas le seul qui permette de comparer. En effet, il en existe d'autres :
> : plus petit que
< : plus grand que
>= : plus petit ou égal à
<= : plus grand ou égal
ENDIF
ELSE
PRINT "le premier nombre est plus petit que le second"
ENDIF
END
Pressez F5
CHAPITRE V
WHILE
Imaginez que vous vouliez vous servir de la calculatrice que vous avez programmée plus d'une fois, vous
n'allez pas presser F5 à chaque fois ? Bien sur que non ! Regardez cet exemple :
Q-Basic fonctionne de la même manière sauf que TANT QUE est remplacé par WHILE. Essayez ceci :
Pressez F5
Dans cette partie, vous allez apprendre à vous servir du mot clé FOR. Que fait FOR ? Et bien, il permet de
faire autant de fois que l'on veut une certaine action. Cela est presque la même chose que la boucle WHILE,
mais cette fois ci on sait combien de fois sera faites l'action demandée.
Pressez F5
9
Vous pouvez utiliser le mot clé STEP, il indique la valeur d'incrémentation du compteur à chaque passage de la
boucle.
Pressez F5
Pressez F5
Je pense qu'il est grand temps de faire quelque chose de vraiment amusant. Vous vous rappelez des couleurs,
des cercles. Oui ! Et bien nous allons les combiner !
Pressez F5
CHAPITRE VI
Vous avez certainement remarqué que l'exemple d'application développée au cours des chapitres précédents
clopine pour le moment sur une seule jambe, car au moment de quitter le programme, toutes les données saisies
ou calculées sont perdues. A nous de lui conférer la possibilité d'enregistrer durablement.
Selon le type des informations contenues dans un fichier, vous aurez à choisir un des trois modes d'accès
proposé par Q-Basic.
La première étape pour une lecture ou un écriture dans un fichier est l'ouverture de ce fichier au moyen d'un
mot clé OPEN. Cette instruction a pour conséquence la mise en place d'un tampon (zone de mémoire
intermédiaire) pour la copie des données entre le programme et le fichier.
Les entrées et sorties de fichier sont terminées par le mot clé CLOSE, suivie d'un ou plusieurs numéros
d'identifications de fichiers (séparé par des virgules).
Accès Binaire
Avec un accès binaire, les informations sont lues octet par octet. Ce type d'accès est le plus souple et le plus
économique du point de vue de l'espace mémoire, mais nécessite par contre une bonne connaissance de la
signification des données individuelles pour pouvoir les interpréter correctement.
Un fichier ([Link]) est ouvert en accès binaire par l'instruction suivante, où intNumFic est le numéro du
fichier.
Si le fichier n'existe pas, il est créé par l'instruction. C'est l'instruction PUT qui se charge d'écrire des octets
dans un fichier ouvert. La ligne de code :
Ecrit le contenu de la variable ByTest dans le fichier identifié par intNumFic, à la position 55. La position dans
le fichier est automatiquement déplacée au prochain octet libre. Pour lire des octets dans un fichier, vous
11
utiliserez l'instruction GET, de syntaxe identique. Voici, un petit exemple qui montre comment utiliser ces
mots clés.
Les fichiers sons, avec l'extension *.WAV contiennent la fréquence d'échantillonnage utilisée lors de leur
numérisation, et ceci sous la forme d'une valeur entière commençant en position 25. Ce programme se chargera
de lire et d'afficher cette fréquence pour le fichier de votre choix.
Pressez F5
Accès Séquentiel
L'accès séquentiel est l'idéal pour les fichiers composés de texte pur (caractères ANSI). A l'ouverture d'un
fichier séquentiel, vous aurez à définir le mode d'opération, c'est à dire qu'il s'agit :
Après l'ouverture d'un fichier texte pour une lecture, vous pourrez le lire ligne par ligne par l'instruction LINE
INPUT # et l'affecter à une variable string. L'instruction lit tous les caractères jusqu'à l'apparition du code de
fin de ligne (retour chariot et saut de ligne), mais ne transmet pas ces caractères de formatages à la variable. Au
besoin, vous les rajouterez par code comme dans l'exemple suivant :
La fonction EOF (End Of File = fin de fichier), utilisée ici pour la sortie de la boucle, livre en retour TRUE
lorsque la fin du fichier est atteinte. Vous vous demandez à quoi servent les commandes CHR$ ? Eh bien, vous
devez savoir qu'elles signifient qu'il faut retourner à la ligne. Pour copier un nombre précis de caractères dans
une variable, vous ferez appel à la fonction INPUT$. A l'inverse de LINE INPUT #, elle retourne tous les
caractères du fichier texte. Voici un exemple de code lisant un fichier séquentiel caractère par caractère :
DO UNTIL EOF(intNumFic)
INPUT$(1, strligne)
PRINT strLigne
12
LOOP
Pour écrire ou rajouter une chaîne de caractères dans un fichier séquentiel ouvert, c'est l'instruction PRINT #
qui sera appelé.
Pressez F5
Après l'ouverture du fichier texte qui se trouve dans le répertoire racine du lecteur de démarrage, tous les
caractères sont lus et affichés. La fonction LOF (Length Of File = taille du fichier) retourne la taille du fichier
ouvert, exprimée en octets, ce qui pour une chaine de caractères correspond au nombre de caractère.
Accès Aléatoire
Le fichier avec accès aléatoire se compose d'une suite d'enregistrements de même structure et de même
longueur. Un enregistrement est constitué d'un certain nombre de champs, correspondant aux éléments d'un
type de donnée que vous avez établi.
Pour gérer par exemple les numéros de téléphone de vos amis, vous définirez le type de données suivant :
TYPE TelephoneTyp
NAME AS STRING * 25
TELEPHONE AS STRING * 20
END TYPE
Comme tous les enregistrements ont la même longueur, les variables string du type de données personnalisées
seront de longueur fixe. Si la longueur prédéfinie n'est pas remplie par les données saisies, les positions libres
seront remplies par des espaces par Q-Basic. Les chaînes de caractères dépassant la longueur fixée seront
coupées.
L'ouverture d'un fichier à accès aléatoire composé des enregistrements du type que nous venons de déclarer
peut se faire par le code suivant :
Les mots clés FOR RANDOM ne sont pas indispensables, car l'accès aléatoire est l'option par défaut de
l'instruction OPEN. La longueur d'un enregistrement individuel, en octets, est transmise par la fonction Len.
Dans notre exemple, cette fonction retourne la valeur 45.
Comme avec l'accès binaire, nous utiliserons l'instruction PUT pour écrire des enregistrements et GET pour les
lire. La position dans le fichier est définie par le numéro d'ordre de l'enregistrement correspondant.
CHAPITRE VII
Vous vous demandez comment faire pour commencer une action à la détection d'une touche. Vous êtes sur
le bon chapitre de ce tutorial. En effet, vous allez apprendre à vous servir des mots clé CHR$, INKEY$...
Tout d'abord, il faut savoir comment Q-Basic fait pour afficher un caractère à l'écran. Quand vous appuyez
sur une touche, voici ce qu'il se passe : le clavier renvoie un chiffre. Ce chiffre c'est le code ASCII
(prononcé Aski), il correspond à un symbole. Par exemple le chiffre 65, représente le caractère A.
Vous trouverez la liste de tous les caractères ASCII dans l'aide de Q-Basic.
Vous allez maintenant écrire un programme qui ne sert à rien sinon à vous faire employer la commande
CHR$. En effet, ce mot clé permet d'afficher le caractère que vous souhaitez mais de l'appeler par son
chiffre ASCII. Par exemple : CHR$(65) affiche le caractère A. Essayer ce programme :
Pressez F5
C'est pas mal non ? Vous pouvez ainsi insérer des effets graphiques tout en restant en mode texte.
Maintenant, vous allez utiliser le mot clé INKEY$, cette commande lit un caractère entré au clavier. Nous
allons l'utiliser pour l'arrêt d'une boucle avec ESC
Pressez F5
14
Ce programme ajoute 1 à chaque passage de la boucle. Pour l'arrêt de la boucle on dit à Q-Basic d'exécuter
la boucle jusqu'à ce que le caractère lut par INKEY$ soit celui du caractère qui possède 27 comme chiffre
ASCII, en l'occurrence, il s'agit de la touche ESC.
Vous allez maintenant faire quelque chose de plus utile et qui vous donnera sûrement une idée de ... jeu. En
effet, nous allons réaliser une sorte de ver de terre qui voyage dans l'écran. Essayer plutôt ce programme :
Pressez F5
Vous ne trouvez pas qu'il serait plus intéressant d'utiliser les flèches de direction plutôt que les chiffres du
pavé numérique. Si ! eh bien, c'est ce que nous allons faire. Vous devez d'abord savoir, que pour chacune de
ces touches deux chiffres ASCII sont utilisés. Voilà ce que donnerai le programme.
CHAPITRE VIII
Q-Basic n'est pas vraiment un environnement optimisé pour des applications orientées graphique. Cependant,
il peut aider dans la compréhension des structures d'un programme orienté graphique, et à celle d'un
programme Q-Basic.
Le meilleur mode d'écran pour cela est le 7, ce mode a une résolution de 320 x 200, possède 16 couleurs.
Maintenant, vous allez apprendre à vous servir des mots clés DATA, READ.
DATA
Avant de pouvoir afficher votre objet graphique, vous devez d'abord vous décidez sur sa largeur, et sa hauteur.
Par exemple, vous pouvez choisir 10 pixels sur 10. Pour faire votre objet, vous n'avez qu'à écrire une table
comme celle ci.
DATA 00,00,00,00,00,00,00,00,00,00
DATA 00,00,00,00,00,00,00,00,00,00
DATA 00,00,00,00,00,00,00,00,00,00
DATA 00,00,00,00,00,00,00,00,00,00
DATA 00,00,00,00,00,00,00,00,00,00
DATA 00,00,00,00,00,00,00,00,00,00
DATA 00,00,00,00,00,00,00,00,00,00
DATA 00,00,00,00,00,00,00,00,00,00
DATA 00,00,00,00,00,00,00,00,00,00
DATA 00,00,00,00,00,00,00,00,00,00
16
Voilà, vous avez établi votre plan de travail. Si vous désirez exécuter ce programme, vous serez déçu : rien ne
s'affiche à l'écran. C'est normal car nous n'avons rien ordonné à Q-Basic.
Maintenant, pour faire un objet graphique, vous devez changer les couleurs. Vous ne comprenez pas ? C'est
normal, j'ai beaucoup de mal à m'expliquer. Bon un exemple vaut mieux que tout :
DATA 00,00,00,04,00,00,04,00,00,00
DATA 00,00,04,04,00,04,04,04,00,00
DATA 00,00,04,04,04,04,04,04,00,00
DATA 00,04,04,12,12,04,04,04,00,00
DATA 00,04,04,12,12,04,04,00,00,00
DATA 00,04,04,12,12,04,04,00,00,00
DATA 00,04,12,12,12,04,04,04,00,00
DATA 00,04,12,14,14,12,04,04,00,00
DATA 04,04,12,14,14,14,12,04,00,00
DATA 04,04,12,14,14,14,12,04,00,00
J'espère que vous avez compris. Non ? Pas de panique pour comprendre, vous n'avez qu'à imaginer une grille.
Chaque chiffre représente la couleur d'une case. Ce tableau possède donc 10 lignes de 10 colonnes chacune.
Maintenant que vous avez compris (enfin, je l'espère) comment coder un objet graphique, vous allez apprendre
à l'afficher à l'écran (ce qui est, il faut le reconnaître est loin d'être négligeable).
Pour cela, nous allons utiliser un petit algorithme qui lit la couleur de chaque point et qui l'affiche.
xlongueur = 10
ylongueur = 10
FOR y = 1 TO ylongueur
FOR x = 1 TO xlongueur
READ z
PSET(x,y),z
NEXT
NEXT
Je pense qu'une petite explication ne ferait pas de mal. Le xlongueur correspond au nombre de colonnes alors
que le ylongueur correspond au nombre de lignes. La première boucle FOR indique qu'elle se répète tant
qu'elle n'a pas exécutée le bon nombre de lignes. La deuxième sert donc aux colonnes.
GET, PUT
Comme vous l'avez certainement remarqué, cette procédure est rudement lourde. C'est pourquoi pour éviter de
taper toutes ces lignes pour afficher une image, l'instruction GET à été crée. Attention il ne faut pas la
confondre avec la fonction du même nom qui sert dans les opérations d'entrées sorties dans un fichier. En
effet, ce mot clé permet de mettre tout l'objet graphique en mémoire en lui administrant un nom. La syntaxe de
ce mot clé est la suivante :
Voilà, votre graphique est sauvegardé sous le nom nomgraphique. Pour l'afficher, il suffit d'utiliser le mot clé
PUT avec la syntaxe suivante :
17
Maintenant, vous savez comment crée un objet graphique, comment le sauvegarder et comment l'afficher.
Cependant, il est plus difficile de le déplacer à travers l'écran.
Voilà, j'espère que cela vous aura aider ! J'attends vos programmes.
CHAPITRE X
BSAVE, BLOAD
Dans ce chapitre, nous allons aborder deux mots clés qui permettent de mettre une partie de la mémoire
utilisée dans un fichier. Ceci est très pratique dans le cas où l’on voudrait utiliser plusieurs fois un sprite
(ou tout autre objet graphique). En effet, cela permet de sauvegarder le fichier dans un fichier et on n’est
plus obligé d’insérer tout le code avec des " DATA ".
Créez le fichier :
La première étape consiste bien entendu à créer le fichier qui va contenir le graphique. Pour cela, il
convient de réaliser plusieurs manipulations. Tout d’abord, il faut informer Q-Basic à quel offset (adresse
de mémoire) commence le graphique pour cela on utilise la syntaxe suivante :
Nom_de_la_zone représente le nom de la variable qui sert de sprite. Cette variable a été réaliser grâce à
l’instruction GET (voir chapitre sur les sprite).
Puis, l’étape suivante consiste à copier l’élément choisi dans le fichier. C’est là qu’arrive le mot clé
BSAVE : pour l’utiliser, il faut respecter la syntaxe suivante :
18
"[Link] " est le nom du fichier à créer. Vous pouvez avoir n’importe quel nom de fichier, et
n’importe quelle extension (pour ma part, j’utilise l’extension *.grh). "Taille" est la taille de votre
variable : par exemple, si vous avez un sprite de 10x10, vous mettez … 100. Vous avez compris ? Bon là
où cela se corse, c’est quand il faut mettre l’offset. Là il faut utiliser un nouveau mot clé : VARPTR. Ce
mot clé, s’utilise un peu comme VARSEG. Il sert à pointer vers la zone mémoire que l’on a défini un peu
plus haut. Par exemple pour un sprite de 10x10 et un fichier se nommant "[Link]", on écrit cela :
Une fois que vous aurez utilisé BSAVE, il vous faudra réutiliser la commande DEF SEG mais cette fois
ci vous l’écrirez tout seul :
DEF SEG
Cette commande sert à signaler au Q-Basic qu’il peut retourner à l’emplacement qu’il était en train de
traiter avant votre intervention.
Utilisez le fichier :
Maintenant que vous savez comment sauvegarder une image dans un fichier en utilisant BSAVE, il va
falloir l’afficher avec BLOAD. Bon, je vous le dis tout de suite : Il n’y a rien de plus facile. En effet, il
suffit de créer le tableau qui accueillera l’image.
BLOAD "[Link]", 0
DEF SEG
Voilà maintenant l’image est dans le tableau sprite. Vous pouvez donc l’utiliser comme un sprite normal.
J’espère que vous avez compris et surtout j’attends tous vos programmes !
CHAPITRE XI
La palette en Q-Basic
La fonction PALETTE
Commençons directement par étudier la fonction PALETTE avec un petit programme qui l'utilise :
19
SCREEN 13
PALETTE 15, 63
PRINT "Le texte est maintenant rouge !"
Décrivons ce programme : Tout d'abord on change le mode d'écran en SCREEN 13 (320x200x256), puis
on change la valeur de la couleur 15 en 63. Imaginer que la palette est un tableau dans lequel est contenu
les 256 couleurs, la couleur 1 a une valeur particulière, et la couleur 2 a une autre valeur ... (Ne vous
inquiètez pas si vous ne savez ce qu'est le 63, il sera expliqué plus tard). Ensuite on écrit quelque chose à
l'écran avec la nouvelle couleur ainsi initialisée.
Le premier argument couleur, est le numéro de la couleur à changer (de 0 à 255 en SCREEN 13). Dans
l'exemple, c'est la couleur n°15 qui est modifié. Le deuxième argument valeur, est la nouvelle valeur RGB
de la couleur qui est modifié. Pour obtenir cette couleur, on utilise la formule suivante :
Les variables Rouge, Vert, Bleu sont les mesures entre ces couleurs qui permettent de faire la nouvelle
couleur. Pour savoir quelle valeur employée vous pouvez utiliser ce programme. Par exemple, pour avoir
un texte rose, on peut exécuter ce programme :
SCREEN 13
bleu% = 63
rouge% = 63
vert% = 0
valeur = 65536 * bleu% + 256 * vert% * rouge%
PALETTE 15, valeur
PRINT " Le texte est maintenant rose ! "
IMPORTANT : Après avoir utilisé la fonction PALETTE, tout les points de la couleur changée auront la
nouvelle couleur, même s'ils ont été affichés avant !
CHAPITRE XII
La Souris
Comme vous l'avez certainement remarqué, aucune commande en Q-Basic fait intervenir la souris, il vous
20
faudra donc inventer vous-même ces fameuses commandes. Pour réaliser cela, il faut utiliser la fonction
INTERRUPT. Cette fonction est en faite une SUB mise dans les librairies de QuickBasic (il nous faut donc au
moins qb4.5). Pour utiliser cette fonction, il nous faut donc charger la fameuse librairie en ouvrant QuickBasic
avec la commande suivante : [Link] /L. Vous pouvez automatiser cela grâce à un fichier batch (*.BAT) tel
celui là : (Dans cet exemple Q-Basic 4.5 se trouve dans le répertoire C:\qb45\)
@echo off
cd c:\qb45\
[Link] /L
Maintenant, vous devez déclarer cette SUB. Pour cela, il faut tout écrire ou bien insérer dans son programme,
un fichier qui contient déjà la totalité des déclarations : ce fichier se nomme " [Link] " et il se situe dans le
même répertoire que QuickBasic. Pour l'inclure, il suffit de taper ce qui suit en haut du programme
'$INCLUDE : '[Link]'
ou REM $INCLUDE : '[Link]'
Attention ! Il ne faut pas oublier l'apostrophe de début et ceux qui encadre le nom du fichier. Pour vérifier le
bon fonctionnement de cette commande, faites " View, Included Lines ", vous devriez voir apparaître des
lignes jaunes qui correspondent au fichier " [Link] ".
Dans ce fichier, un TYPE a été déclaré, vous pouvez donc associer deux variables à ce dernier en utilisant la
commande suivante :
Ne pas oublier le SHARED, sinon ces variables ne pourront être utilisées dans les SUBs. Ces deux variables
donnent accès aux registres de l'ordinateur dont nous servirons pour utiliser la souris.
Le fonctionnement est très simple : vous mettez une valeur dans les variables [Link], [Link], [Link] ou
[Link], vous l'envoyez dans l'ordinateur grâce à INTERRUPT, il exécute les commandes associées et
renvoie des valeurs dans les variables [Link], [Link], [Link] ou [Link]
Ecrivez ceci :
[Link] = 0
CALL INTERRUPT (&H33, inregs, outregs)
PRINT [Link]
PRINT [Link]
Tout d'abord, vous mettez 0 dans [Link]. Vous envoyez cette valeur dans l'ordinateur, et il vous renvoie des
valeurs dans [Link] et [Link]. Si vous avez une souris branchée la première valeur sera -1 (sinon 0).
La deuxième correspondra au nombre de boutons. Vous savez donc que ax=0 initialise la souris, vérifie si elle
existe et affiche son nombre de boutons. On peut donc faire une vérification au démarrage du programme.
[Link] = 0
CALL INTERRUPT (&H33, inregs, outregs)
IF [Link] = 0 THEN
PRINT " Aucune souris détectée "
END
21
END IF
Essayer ceci :
[Link] = 1
CALL INTERRUPT (&H33, inregs, outregs)
Magique ! Il y a la souris : la seule fonction de ax=1 et d'afficher la souris. Si vous êtes en mode graphique, la
souris est représentée par une flèche, sinon, c'est un petit rectangle blanc.
[Link] =2
CALL INTERRUPT (&H33, inregs, outregs)
Cette commande peut paraître idiote mais en fait elle est très utile. En effet, si vous dessinez ou écrivez
quelque chose là où la souris est présente, et que par la suite, vous faites un mouvement de cette dernière, vous
vous apercevrez que là où il y avait la souris, un point de l'écran a disparu. Pour remédier à ce problème, il
suffit de cacher la souris avant de dessiner ou écrire, et de l'afficher tout de suite après !
Maintenant vous voulez certainement connaître l'état des boutons ainsi que les coordonnées de la souris. Pour
réaliser cela, on utilise la fonction 3, les variables suivantes sont renvoyées :
Les coordonnées X et Y sont souvent données en pixel, mais dans les modes d'écran 1,7,13 il faut diviser
[Link] par deux, pour obtenir la coordonnée sur X. Pour obtenir les coordonnées dans le mode 0, il faut
diviser les deux variables par 8 :
x = INT([Link] / 8) + 1
y = INT([Link] / 8) + 1
Vous pouvez également fixer la position de la souris grâce à la fonction 4 dans laquel [Link] est la
coordonnée X, et [Link], la coordonnée Y. Par exemple pour fixer la position de la souris sur (10,40), vous
devriez utiliser le code suivant :
[Link] = 4
[Link] = 10
[Link] = 40
CALL INTERRUPT (&H33, inregs, outregs)
Finalement, il y a deux autres fonctions qui permettent de désigner un cadre dans lequel la souris ne pourra
sortir.
La fonction 7, désigne la limite en X tandis que la fontion 8 désigne la limite en Y. Donc, pour limiter la
22
souris entre les (5, 5) et (315, 195) dans le SCREEN 13, on utilise cela :
Voilà, j'espère que vous maîtrisez la programmation de la souris. J'attends vos programmes !
[Link]