0% ont trouvé ce document utile (0 vote)
2K vues22 pages

Cours de Quick Basic

Le document décrit comment utiliser différentes commandes et fonctionnalités de base en QBasic comme COLOR, PRINT, SOUND, PSET, LINE, CIRCLE et les variables.

Transféré par

Cédrick Mweni
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2K vues22 pages

Cours de Quick Basic

Le document décrit comment utiliser différentes commandes et fonctionnalités de base en QBasic comme COLOR, PRINT, SOUND, PSET, LINE, CIRCLE et les variables.

Transféré par

Cédrick Mweni
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd

1

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.

REM programmé par Christophe DESCOTTES GENON


CLS
COLOR 2
PRINT "mon premier programme ! "
END

 Pressez F5

Essayer le code suivant

REM programmé par Christophe DESCOTTES GENON


CLS
PRINT "mon premier programme ! "
COLOR 2
END

 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 !

0 Noir 4 Rouge 8 Gris 12 Rouge clair

1 Bleu 5 Magenta 9 Bleu clair 13 Magenta clair

2 Vert 6 Jaune 10 Vert clair 14 Jaune clair

3 Cyan 7 Blanc 11 Cyan clair 15 Blanc vif

La partie sur le texte clignotant a été crée par Thomas SCOLAN

Si vous voulez qu'un caractère clignote ajoutez 16 a sa valeur.

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.

REM programmé par Christophe DESCOTTES GENON


REM programme qui sert à émettre un son
SOUND 100, 3
REM le son dure environ 1 seconde
END

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 :

REM programmé par Christophe DESCOTTES GENON


REM programme qui dessine un point
SCREEN 12
CLS
PSET (10,15), 7
REM n'oublier pas la virgule entre les deux coordonnées.
END

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.

REM programmé par Christophe DESCOTTES GENON


REM programme qui trace une ligne
CLS
SCREEN 12
COLOR 4
LINE (0, 0) - (640, 480)
END

Pressez F5

Essayer de changer les coordonnés et la couleur de la ligne pour vous entraîner.

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.

REM programmé par Christophe DESCOTTES GENON


REM programme qui trace une ligne
CLS
SCREEN 12
LINE (300, 100) - (400, 200), 1, B
END

Pressez F5

Et là, une boite pleine peinte en jaune :

REM programmé par Christophe DESCOTTES GENON


REM programme qui trace une ligne
CLS
SCREEN 12
LINE (300, 100) - (400, 200), 14, BF
END

Pressez F5

Une autre façon pour construire une boite peinte en jaune

REM programmé par Christophe DESCOTTES GENON


REM programme qui trace une ligne
CLS
4
SCREEN 12
COLOR 14
LINE (300, 100) - (400, 200), , BF
END

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.

REM programmé par Christophe DESCOTTES GENON


REM programme qui trace un cercle
CLS
SCREEN 12
CIRCLE (100, 200), 50
END

Pressez F5

Ce programme dessine un cercle blanc. Vous pouvez choisir la couleur de la même manière que pour un texte :

REM programmé par Christophe DESCOTTES GENON


REM programme qui trace un cercle
CLS
SCREEN 12
COLOR 5
CIRCLE (100, 200), 50
END

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 :

"Bonjours la compagnie" String $

5 Integer %

12345 Long &

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.

REM programmé par Christophe DESCOTTES GENON


REM programme qui utilise les variables
DIM premier AS INTEGER
REM nous utilisons le mot clé DIM pour déclarer la variable
END

Pressez F5

VARIABLES ET INPUT

Maintenant Q-Basic sait que premier est une variable chiffre. Faites un programme qui fasse quelque chose.

REM programmé par Christophe DESCOTTES GENON


REM programme qui utilise les variables
DIM premier AS INTEGER
DIM second AS INTEGER
REM nous utilisons le mot clé DIM pour déclarer la variable

CLS
premier = 5
REM Q-Basic sait maintenant que premier est la même chose que 5
second = premier + 2

PRINT "premier est égal à " ; premier


PRINT "second est égal à " ; second
END

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

réaliser cela. Ce mot est INPUT. Voici un exemple de l'utilisation d'INPUT.

REM programmé par Christophe DESCOTTES GENON


REM programme qui utilise une variable STRING
DIM nom AS STRING
INPUT "quel est votre nom " ; nom
PRINT "bonjour " ; nom
END

Pressez F5

Pouvez vous vraiment faire cela sans les variables ?

Pour le prochain projet, nous allons construire une calculatrice qui additionne deux nombres et qui demande le
nom de l'utilisateur.

REM programmé par Christophe DESCOTTES GENON


REM programme calculateur
DIM premiernombre AS INTEGER
DIM deuxièmenombre AS INTEGER
DIM nom AS STRING

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.

Si il fait beau alors


Je sors
Sinon
7

Je reste chez moi

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.

REM programmé par Christophe DESCOTTES GENON


REM programme qui compare deux variables et écrit si elles sont
égales
DIM premier AS INTEGER
DIM second AS INTEGER
CLS
INPUT "entrez le premier nombre " ; premier
INPUT "entrez le deuxième nombre " ; second
IF premier = second THEN
PRINT "les deux nombres sont égaux "
ELSE
PRINT "les deux nombres sont différents "
ENDIF
REM il ne faut pas oublier le ENDIF pour dire à Q-Basic que
l'instruction Si est finie.
END

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

REM programmé par Christophe DESCOTTES GENON


REM programme qui regarde qu'elle variable est la plus grande
DIM premier AS INTEGER
DIM second AS INTEGER
CLS
INPUT "entrez le premier nombre " ; premier
INPUT "entrez le deuxième nombre " ; deuxième
IF premier >= second THEN
IF premier = second THEN
PRINT "les deux nombres sont égaux "
ELSE
PRINT "le premier nombre est plus grand que le deuxième"
8

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 :

TANT QUE j'ai faim


Je mange

Q-Basic fonctionne de la même manière sauf que TANT QUE est remplacé par WHILE. Essayez ceci :

REM programmé par Christophe DESCOTTES GENON


REM programme qui montre l'utilisation des boucles
DIM encore AS STRING
encore = "o"
CLS
WHILE encore = "o"
INPUT "Voulez vous recommencer " ; encore
WEND
REM WEND est le mot clé qui signifie que la boucle est finie.
C'est comme ENDIF dans une boucle IF
END

Pressez F5

FOR NEXT STEP

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.

REM programmé par Christophe DESCOTTES GENON


REM programme qui compte jusqu'à 200
DIM nombre AS INTEGER
FOR nombre = 1 TO 200
PRINT "nombre = " ; nombre
NEXT
REM NEXT signifie que la boucle s'arrête à cet endroit
END

Pressez F5
9

Vous pouvez utiliser le mot clé STEP, il indique la valeur d'incrémentation du compteur à chaque passage de la
boucle.

REM programmé par Christophe DESCOTTES GENON


REM programme qui compte jusqu'à 200
DIM nombre AS INTEGER
FOR nombre = 1 TO 200 STEP 5
PRINT "nombre = " ; nombre
NEXT
REM NEXT signifie que la boucle s'arrête à cet endroit
END

Pressez F5

Dans ce programme l'ordinateur compte de 5 en 5. On peut aussi faire un compte à rebours.

REM programmé par Christophe DESCOTTES GENON


REM programme qui compte jusqu'à 200
DIM nombre AS INTEGER
FOR nombre = 200 TO 1 STEP -5
PRINT "nombre = " ; nombre
NEXT
END

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 !

REM programmé par Christophe DESCOTTES GENON


REM programme qui montre des trucs qui bougent
DIM encore AS STRING
DIM demarrercercle AS INTEGER
DIM cerclewide AS INTEGER
DIM col AS INTEGER
encore = "o"
SCREEN 12
WHILE encore = "o"
CLS
FOR cerclewide = 30 TO 70 STEP 20
FOR col = 1 TO 14
FOR demarrercercle = 100 TO 550 STEP 20
CIRCLE (demarrercercle, 240), cerclewide, col
SOUND demarrercercle + cerclewide, 1
NEXT
CLS
NEXT
NEXT
10

INPUT "Encore " ; encore


WEND
END

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.

OPEN Fichier [FOR Mode] [Verrou] AS NuméroFichier

Les arguments sont :


Fichier : Nom du fichier, au besoin suivi de son chemin d'accès.
Mode : Mot clé qui spécifie le mode du fichier : Append, Binary, Input, Output ou Random.
Verrou : Mot clé qui spécifie les opérations que d'autres processus peuvent exécuter sur le fichier ouvert :
Shared, Lock Read, Lock Write, Lock Read Write.
Numérofichier : Numéro de fichier compris entre 1 et 511 inclus. Utilisez la fonction FreeFile pour obtenir le
numéro de fichier disponible suivant.

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.

OPEN "[Link]" FOR BINARY AS intNumFic

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 :

Put intNumFic, 55, ByTest

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.

REM programmé par Christophe DESCOTTES GENON


REM montre l'utilisation de GET et PUT
CLS
DIM intFrequence AS INTEGER
DIM intNumFic AS INTEGER
DIM filename AS STRING
INPUT "Veuillez insérez, le chemin d'accès d'un fichier wav";
filename
intNumFic = FREEFILE
OPEN filename FOR BINARY AS intNumFic
GET intNumFic, 25, intFrequence
CLOSE intNumFic
PRINT "La fréquence d'échantillonnage de ce fichier et de ";
intFrequence; " Hz"
END

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 :

A - D'une lecture de fichier (FOR INPUT)


B - D'une écriture dans le fichier (FOR OUTPUT)
C - Ou d'un rajout de donnée dans le fichier (FOR APPEND)

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 :

DIM strLigne AS STRING


DO UNTIL EOF(intNumFic)
LINE INPUT #intNumFic, strLigne
PRINT strLigne ; CHR$(13) + CHR$(10)
LOOP 

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é.

Nous allons réaliser un programme qui affichera le contenu du fichier [Link].

REM programmé par Christophe DESCOTTES GENON


REM affiche le contenu de [Link]
CLS
DIM intNumFic AS INTEGER
IntNumFic = FreeFile
OPEN "C:\[Link]" FOR INPUT AS intNumFic
PRINT INPUT$(LOF(intNumFic), intNumFic)
CLOSE intNumFic
END

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 :

DIM Telephone AS TelephoneTyp


DIM lngLongueurEnregistrement AS LONG
LngLongueurEnregistrement = Len(Telephone)
13

OPEN "[Link]" FOR RANDOM AS intNumFic Len =


LngLongueurEnregistrement

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 :

REM programmé par Christophe DESCOTTES GENON


REM affiche le caractère qui corresponds à son chiffre ASCII
CLS
PRINT CHR$(201) ; CHR$(205) ; CHR$(205) ; CHR$(187)
PRINT CHR$(186) ; "QB" ; CHR$(186)
PRINT CHR$(200) ; CHR$(205) ; CHR$(205) ; CHR$(188)
END

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

REM programmé par Christophe DESCOTTES GENON


REM ferme une boucle avec INKEY$
DIM nombre AS LONG
nombre = 0
CLS
DO
PRINT nombre
nombre = nombre + 1
LOOP UNTIL INKEY$ = CHR$(27)
END

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 :

REM programmé par Christophe DESCOTTES GENON


REM un petit ver de terre
DIM x AS LONG
DIM y AS LONG
CLS
SCREEN 7
x = 50
y = 110
DO
PRESET (x, y) , 4
IF INKEY$ = "8" THEN y = y - 1
IF INKEY$ = "2" THEN y = y + 1
IF INKEY$ = "4" THEN x = x - 1
IF INKEY$ = "6" THEN x = x + 1
LOOP UNTIL INKEY$ = CHR$(27)
END

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.

REM programmé par Christophe DESCOTTES GENON


REM un petit ver de terre
DIM x AS LONG
DIM y AS LONG
DIM FLECHEHAUT AS STRING
DIM FLECHEBAS AS STRING
DIM FLECHEGAUCHE AS STRING
DIM FLECHEDROITE AS STRING
FLECHEHAUT = CHR$(0) + CHR$(72)
FLECHEBAS = CHR$(0) + CHR$(80)
FLECHEGAUCHE = CHR$(0) + CHR$(75)
FLECHEDROITE = CHR$(0) + CHR$(77)
CLS
SCREEN 7
x = 50
y = 110
DO
PRESET (x, y), 4
IF INKEY$ = FLECHEHAUT THEN y = y - 1
IF INKEY$ = FLECHEBAS THEN y = y + 1
15

IF INKEY$ = FLECHEGAUCHE THEN x = x - 1


IF INKEY$ = FLECHEDROITE THEN x = x + 1
LOOP UNTIL INKEY$ = CHR$(27)
END

Pressez F5 c'est mieux n'est pas ?

CHAPITRE VIII

 Qu'est que le Q-Basic peut faire ?

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 :

DIM nomgraphique(xlongueur * ylongueur)


GET (0,0)-(xlongueur, ylongueur),nomgraphique
CLS  

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

PUT (x, y), nomgraphique.

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.

... 'Placer ici tout ce que vous avez auparavant


CLS

WHILE x< 270


PUT (x, 100), nomgraphique
PCOPY 1,0
CLS
x = x + 1
WEND

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 :

DEF SEG = VARSEG(nom_de_la_zone(0))

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

BSAVE "[Link]", offset, taille

"[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 :

DEF SEG = VARSEG(sprite(0))

BSAVE "[Link]", VARPTR(sprite(0)), 10*10

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.

DIM SHARED sprite(10 * 10) AS INTEGER

Ensuite, il suffit de réutiliser la syntaxe suivante :

DEF SEG = VARSEG(nom_de_la_zone(0))

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.

Maintenant regardons comment la fonction PALETTE fonctionne :

PALETTE couleur, valeur

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 :

valeur = 65536 * Bleu + 256 * Vert + Rouge

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

De cette manière, la librairie sera chargée de manière transparente.

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 :

DIM SHARED inregs AS regtype, outregs AS regtype

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.

Maintenant, on peut cacher la souris avec la fonction 2 :

[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 :

[Link] renvoit le numéro du ou des boutons :


0 = Aucune bouton appuyé
1 = Bouton gauche appuyé
2 = Bouton droite appuyé
3 = Deux boutons appuyés

[Link] Coordonné X de la souris

[Link] Coordonné Y de la souris

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 :

[Link] = 7 ' limite en X


[Link] = 10 ' 5*2
[Link] = 630 ' 315*2
[Link] = 8
[Link] = 5
[Link] = 195
CALL INTERRUPT (&H33, inregs, outregs)

Voilà, j'espère que vous maîtrisez la programmation de la souris. J'attends vos programmes !

[Link]

Vous aimerez peut-être aussi