GENISTA (1971) : TUTORIEL "BBC BASIC FOR WINDOWS" EN FRANÇAIS : CHAPITRE 18 : CARACTÈRES DÉFINIS PAR L'UTILISATEUR



Logo Genista, fondé en 1971

Guide Tutoriel de BBC BASIC for Windows, Ch. 18

BBC BASIC (BB4W) Tutorial: User-Defined Characters

Caractères définis par l'Utilisateur (Tutoriel BBC BASIC, Ch. 18) [Genista]

Par Peter Nairn  •  Traduction : Guy Schaffner (Texte et images) (Genista)

informatique et programmation Vous savez créer des procédures et des fonctions personnelles pour exécuter vos propres commandes et s'adapter aux caprices de votre créativité.
Dans ce Chapitre, vous découvrirez qu'il existe une infinité de possibilités pour créer tous les caractères qui n'existent pas à l'origine sur votre clavier, et créer aussi des images simples qui peuvent ensuite être appelées comme n'importe quel autre caractère.
Chapitre 17   •   Chapitre 18   •   Chapitre 19      

Chapitre 18 — Caractères définis par l'Utilisateur


BBC BASIC vous permet de fabriquer vos propres caractères graphiques, et cette partie vous montrera comment. On présuppose que vous vous y connaissez un peu en nombres binaires. Si ce n'est pas le cas, vous pouvez vous rendre à l'Appendice C pour de la lecture à ce sujet. Revenez ici quand vous vous sentirez à l'aise en base 2.

Chaque caractère est représenté par une grille de 8 bits sur 8. Voici comment nous représenterions la lettre « A ».


Représentation de la lettre A sur une grille de 8 x 8

Ceci dépend bien évidemment de la police de caractères que vous avez choisie, mais je suis certain que cela vous donne l'idée de base. En traitant chaque colonne comme un bit (un « binary digit ») dans un octet de 8 bits (un « byte »), nous obtenons la représentation suivante en ajoutant les valeurs qui sont à 1 (en gris) dans chaque colonne. La rangée du haut (rangée 0, ou ligne 0), vaut 32+16+8+4 = 60.


Représentation des valeurs de chaque pixel sur une grille de 8 x 8 pour la lettre A

En redéfinissant ces nombres, nous pouvons modifier les bits qui sont à 1 (en gris) et sur quelles lignes, et par conséquent, nous pouvons dessiner nos propres caractères. Nous pourrions construire notre extraterrestre à nous comme ceci :


Représentation des valeurs de chaque pixel sur une grille de 8 x 8 pour un nouveau dessin

BBC BASIC nous permet de redéfinir les caractères dans l'intervalle 32 à 255. Ordinairement, il est préférable de s'en tenir à ceux qui n'interfèrent pas avec les caractères ordinaires, de code inférieur à 128, et la plupart des programmes commencent aux environs de 200. Pour redéfinir un caractère, nous utilisons une commande VDU.
Il y a des dizaines de ces commandes : jetez un coup d'œil dans l'Aide en ligne pour vous rendre compte de ce qu'elles peuvent faire pour vous. Celle qui nous intéresse ici porte le numéro 23. Elle nous permet de redéfinir un caractère (entre autres choses). Voici comment on s'y prend :


      VDU 23,NumCaract,TtalLigne0, ... ,TtalLigne7
    

En appliquant ceci à notre extraterrestre, voici ce que nous obtenons :


      VDU 23,240,153,189,219,126,36,60,36,36
    

Essayons-le dans un programme :


      REM Création d'un extraterrestre
      MODE 6
      PRINT "Avant définition ";CHR$(240)
      VDU 23,240,153,189,219,126,36,60,36,36
      PRINT "Après définition ";CHR$(240)
      END
    

Dans le mode par défaut, le nouveau caractère est affiché en tout petit, aussi j'ai utilisé le MODE MODE 6, ce qui rend les caractères plus grands, et ainsi nous les voyons mieux.

Il est évident qu'on peut appliquer diverses couleurs à notre extraterrestre, puisqu'il n'est considéré par le BASIC que comme rien de plus qu'un autre caractère. Maintenant que nous avons obtenu notre personnage, nous pouvons créer une séquence d'animation simple. En affichant le caractère, en l'effaçant (en le remplaçant par l'espace), puis en le réaffichant dans une position différente, nous pouvons faire marcher notre extraterrestre en travers de l'écran.


      REM Déplacement d'un extraterrestre
      MODE 6
      VDU 23,240,153,189,219,126,36,60,36,36
      PRINT TAB(0,10);CHR$(240)
      FOR I%=1 TO 19
        PRINT TAB(I%-1,10);" "
        PRINT TAB(I%,10);CHR$(240)
        WAIT 25
      NEXT I%
      END
    

L'instruction WAIT est un petit temps d'attente, que vous ajustez à votre goût pour empêcher l'animation tout entière d'être rendue en super accéléré.

Les caractères définis par l'utilisateur ont une utilisation sans limites, et pas seulement dans les jeux, mais aussi pour de très nombreux programmes généraux dans lesquels vous voulez obtenir un caractère non disponible dans la série de caractères livrés en standard.

Il peut arriver que le curseur distraie l'utilisateur, aussi est-ce une bonne chose de pouvoir l'éteindre et l'allumer à volonté. En inspectant dans l'Aide en ligne les fonctionnalités de VDU 23, on voit que cela peut être fait si nous l'appelons ainsi :


      VDU 23,1,0;0;0;0; : REM Désactiver le curseur
      VDU 23,1,1;0;0;0; : REM Activer le curseur
    

Cependant, parce que c'est un besoin si courant, BBC BASIC nous permet d'utiliser OFF pour éteindre le curseur et ON pour le rallumer.

Nous pouvons appliquer ceci à notre programme de marche de l'extraterrestre.


      REM Déplacement d'un extraterrestre
      MODE 6
      OFF
      VDU 23,240,153,189,219,126,36,60,36,36
      PRINT TAB(0,10);CHR$(240)
      FOR I%=1 TO 19
        PRINT TAB(I%-1,10);" "
        PRINT TAB(I%,10);CHR$(240)
        WAIT 25
      NEXT I%
      ON
      END
    

Est-ce que cela n'était pas meilleur ? Comme pour les couleurs de texte, il est habituellement considéré de bon ton de restaurer le curseur avant de quitter le programme.




Un truc : À Caractères définis les plus grands possibles

La dimension 8 * 8 n'est pas suffisante pour vous ? Rien ne peut vous empêcher de définir plusieurs caractères, chacun contenant un segment de l'image globale, et puis de construire une chaîne contenant la grande image, comme ceci :

            REM Personnages composites
            MODE 6
            OFF
            VDU 23,240,58,69,130,137,149,73,34,28
            VDU 23,241,92,162,65,145,169,146,68,56
            Papillon$=CHR$(240)+CHR$(241)
            REM Afficher 20 papillons positions diverses
            FOR I%= 1 TO 20
              PRINT TAB(RND(30+5),RND(15+5));Papillon$
              WAIT 25
            NEXT I%
            ON
            END
        



Exercices


18.1
Faites retourner l'extraterrestre à l'autre bout de l'écran, jusqu'au bord gauche, dès qu'il a atteint le bord droit.

18.2
Créez un autre extraterrestre avec les bras dirigés vers le bas, en vous servant du caractère 241. Modifiez l'animation contenue dans 18.1 pour faire alterner les extraterrestres au cours du déplacement en travers de l'écran.
• I% MOD 2 vous indiquera si I% est un nombre pair ou impair.



Fin du Chapitre 18





Haut de Page  •  [Top of Page]

Page suivante (Ch. 19)  •  [Next Page (Ch. 19)]

Page précédente (Ch. 17)  •  [Previous Page (Ch. 17)]

Page d'entrée : BASIC, BBC BASIC et BB4W  •  [BASIC, BBC BASIC and BB4W  Entry Page]

Début du Guide pratique du BBC BASIC  •  [The Beginning of the BBC BASIC Tutorial]

Autres sujets  •  [Other subjects]