Le texte marque l'endroit
Programme avec Texte Seulement
PC-BASIC
L'instruction LOCATE R,C place le curseur de texte à un point spécifique de l'écran, en fonction des arguments pour R (ligne) et C (colonne).
Par exemple, pour placer le curseur sur la deuxième ligne, troisième colonne, vous devez taper LOCATE 2,3 - et tous les caractères ou chaînes de sortie utilisant PRINT commenceront à la ligne 2, colonne 3.
Au fur et à mesure que nous construisons des programmes basés sur du texte plus complexes, il serait utile de pouvoir identifier précisément où nous allons imprimer du texte à l'écran.
Le programme utile TEXTSPOT.BAS, répertorié ci-dessous, vous permet de déplacer un curseur sur l'écran à l'aide du pavé numérique, tandis que les coordonnées LOCATE (c'est-à-dire les arguments) du curseur, affichées en haut à gauche de l'écran, sont continuellement mises à jour avec chacun de vos mouvements.
De plus, vous pouvez basculer entre plusieurs écrans graphiques. Une instruction INKEY$ (sur la line 30) accepte la saisie clavier instantanée de l'utilisateur sans avoir à appuyer sur la touche Entrée.
La ligne 110 utilise le code ASCII (American Standard Code for Information Interchange) pour Escape (27), de sorte que lorsque la touche Escape est enfoncée, le programme se termine.
Les lignes 40 à 100 effectuent une action en fonction du nombre sur lequel vous appuyez, soit en déplaçant le curseur, soit en changeant l'écran graphique.
Et les lignes 120 et 130 assure que le curseur ne s'aventure pas trop loin vers la gauche ou au-dessus de l'écran.
5 REM TEXTSPOT
10 KEY OFF:SCREEN 9:COLOR
15,0:CLS
20 R=10:C=10
30 I$=INKEY$
32 LOCATE R,C:PRINT
CHR$(220)
35 IF I$="" THEN 30
37 CLS
40 IF I$="9" THEN SCREEN 9
50 IF I$="7" THEN SCREEN 7
60 IF I$="0" THEN SCREEN
9:SCREEN 0
70 IF I$="4" THEN C=C-1
80 IF I$="6" THEN C=C+1
90 IF I$="8" THEN R=R-1
100 IF I$="2" THEN R=R+1
110 IF I$=CHR$(27) THEN
CLS:END
120 IF C<=1 THEN C=1
130 IF R<=1 THEN R=1
140 LOCATE 2,2:PRINT"LOCATE
";R;",";C
150 LOCATE 3,2:PRINT"Press 9
for Screen 9"
160 LOCATE 4,2:PRINT"Press 7
for Screen 7"
170 LOCATE 5,2:PRINT"Press 0
for Screen 0"
180 LOCATE 6,2:PRINT"Use
numeric keypad, 4,6,8,2 to move"
190 LOCATE 7,2:PRINT"Press
<ESC> to quit"
200 GOTO 30
Vous pourriez envisager de donner à l'utilisateur un certain contrôle sur la forme du curseur. Par exemple, dans SCREEN 0, un écran de texte uniquement, la commande de mode direct suivante modifiera le nombre de lignes de balayage, rendant ainsi le curseur en bas :
LOCATE ,,,3,6
tandis que cette commande transformera le curseur en un mince halo rectangulaire flottant au-dessus du texte :
LOCATE ,,,0,1
En outre, TEXTSPOT.BAS se terminera par un appel de fonction Illegal si vous vous déplacez du bord éloigné de l'écran vers la droite ou vers le bas.
Le problème? Différents modes graphiques permettent un nombre variable de lignes et de colonnes. Modifier le programme pour empêcher l'utilisateur de pousser le curseur trop loin améliorerait sa fonctionnalité.