COLOUR
DESCRIPTION.
L'instruction COLOUR définit la couleur d'affichage des textes ou personnalise la palette de couleurs de la fenêtre de sortie.
SYNTAXE.
COLOUR couleur
COLOUR couleur , code
COLOUR couleur , rouge , vert , bleu
REMARQUES.
couleur doit être un nombre entier compris entre 0 et 255. Si couleur est :
- inférieur à 128, il s'agit de la couleur logique de l'avant-plan ;
- supérieur à 127, il s'agit de la couleur logique de l'arrière-plan.
Si couleur est supérieur au nombre de couleurs de la palette : 2, 4 ou 16 selon le mode de la fenêtre de sortie, la couleur sélectionnée sera calculée comme suit, où max est le nombre de couleurs dans la palette :
- couleur MOD max si couleur est inférieur à 128 ;
- 128 + ( couleur MOD max ) si couleur est supérieur à 127.
code doit être un nombre entier compris entre 0 et 15, mais ne devra pas dépasser le nombre maximum de couleurs de la palette d'origine de la fenêtre de sortie moins 1.
rouge, vert et bleu doivent être des nombres entiers compris entre 0 et 255, et indique la quantité de chaque composant de la nouvelle couleur associée à code dans la palette de couleur.
Convention : selon le mode de la fenêtre de sortie choisie, une palette utile de 2, 4 ou 16 couleurs est initialisée avec les 2, 4 ou 16 couleurs de la palette d'origine. Ensuite, une couleur associée à un des codes de la palette utile peut est modifiée, mais l'association code-couleur de la palette d'origine est immuable.
Pour maintenir la rétrocompatibilité avec les versions anglaise et américaine du BBC BASIC, il est possible d'utiliser la syntaxe COLOR à la place de COLOUR. Dans ce cas, l'instruction COLOR sera automatiquement convertie en COLOUR par l'IDE.
La forme COLOUR couleur, modifie la couleur d'avant-plan ou d'arrière.
Pour connaitre quelles sont les couleurs actuellement sélectionnées, on utilisera la variable système :
- @vdu.t.c&, qui retourne la couleur d'avant-plan actuelle pour les textes ;
- @vdu.t.d&, qui retourne la couleur d'arrière-plan actuelle pour les textes.
Rappel : quand on fait appel à une variable système, il est conseillé de fait marque une légère pause au programme avec la fonction WAIT() afin de s'assurer que les traitements en cours sont bien terminés et que les valeurs de ces variables ont bien été mise à jour.
MODE 8
REPEAT
COLOUR RND( 15 )
COLOUR 128 + RND( 15 )
CLS : CLG
WAIT( 10 )
PRINT "couleur de l'encre : " ; @vdu.t.c&
PRINT "couleur du papier : " ; @vdu.t.d&
PRINT "Appuyer Q pour quitter ou sur une autre touche pour continuer."
kchoix$ = GET$
UNTIL kchoix$ = "Q" OR kchoix$ = "q"
END
La forme COLOUR couleur , code permet de modifier la couleur logique associée à la valeur de couleur dans la palette utile. La valeur de code désigne toujours la couleur logique de la palette d'origine, même si COLOUR couleur , code a modifié la couleur logique associée à couleur dans la palette utile.
- couleur indique quel code de la palette utile devra changer ;
- code indique quelle est la couleur de la palette d'origine qui devra être associée à code.
La forme COLOUR couleur , rouge , vert , bleu permet de modifier les composants RVB de la couleur physique associée au code de la palette utile :
- couleur indique quel code de la palette utile devra changer ;
- rouge indique la quantité de rouge que contiendra la couleur physique associée à code ;
- vert indique la quantité de vert que contiendra la couleur physique associée à code ;
- bleu indique la quantité de bleu que contiendra la couleur physique associée à code.
On notera que les changements d'association des couleurs de la palette utile n'affectent pas les affichages précédents, textes et/ou dessins et que l'instruction GCOL tiendra compte de ces modifications de couleur liées aux codes de la palette utile dans les futurs tracés.
La couleur d'arrière-plan des textes ne sera modifiée après l'utilisation de l'instruction CLG. De même, les couleurs des dessins, d'avant-plan et d'arrière-plan ne sont pas modifiées par une instruction COLOUR, quelle que soit la forme utilisée.
voir GCOL pour plus de détails sur les couleurs d'affichage des dessins.
COLOUR couleur est un synonyme de VDU 17 , couleur.
COLOUR couleur , code est un synonyme de VDU 19 , couleur , code , 0 , 0 , 0.
COLOUR couleur , rouge , vert , bleu est un synonyme de VDU 19 , couleur , 16 , rouge , vert , bleu.
La qualité de l'affichage des textes et des couleurs dépendent beaucoup du MODE utilisé, mais aussi du matériel et de l'environnement : Linux, Windows, navigateur, ... sur lequel le programme est exécuté. Dans certains cas, des caractères peuvent ne pas être affichés, sans qu'une erreur de script en soit responsable.
RUBRIQUES.
Les dessins et les graphismes pour plus de détails sur la création de dessins et de graphismes.
La gestion des couleurs pour plus de détails sur la gestion des couleurs logiques et physiques.
EXEMPLE.
1. Modifier les couleurs d'avant-plan et d'arrière-plan des caractères affichés.
MODE 8
FOR kcouleur = 0 TO 127
COLOUR kcouleur
COLOUR 255 - kcouleur
PRINT CHR$( 129 ) ;
NEXT kcouleur
END
2. Modifier l'association des couleurs dans la palette utile de la fenêtre de sortie.
MODE 8
COLOUR 10 : PRINT "BBC BASIC" : REM - Affiche BBC BASIC en vert
COLOUR 13 : PRINT "BBC BASIC" : REM - Affiche BBC BASIC en fuchsia
GCOL 10 : RECTANGLE FILL 50 , 200 , 200 , 50 : REM - Affiche un rectangle vert
GCOL 13 : RECTANGLE FILL 300 , 200 , 200 , 50 : REM - Affiche un rectangle fuchsia
COLOUR 13 , 12 : REM - code 13 corresponds maintenant au code 12 de la palette d'origine
COLOUR 10 , 13 : REM - code 10 corresponds maintenant au code 13 de la palette d'origine
COLOUR 10 : PRINT "BBC BASIC" : REM - Affiche BBC BASIC en fuchsia
COLOUR 13 : PRINT "BBC BASIC" : REM - Affiche BBC BASIC en bleu
GCOL 10 : RECTANGLE FILL 50 , 100 , 200 , 50 : REM - Affiche un rectangle fuchsia
GCOL 13 : RECTANGLE FILL 300 , 100 , 200 , 50 : REM - Affiche un rectangle bleu
retourne
BBC BASIC BBC BASIC
BBC BASIC BBC BASIC
████████ ████████
████████ ████████
On remarque bien que :
- les changements de couleurs n'affectent pas les affichages précédents ;
- l'instruction GCOL tient compte des modifications de couleur liées aux codes de la palette utile,
- COLOUR 13 , 12 change la couleur 13 de la palette utile en fuchsia qui est la couleur 12 de la palette d'origine ;
- COLOUR 10 , 13 change la couleur 12 de la palette utile
- en bleu qui est la couleur 13 de la palette d'origine et ;
- et non en fuchsia qui est devenu la couleur 13 de la palette utile.
3. Modifier les composant RVB d'une couleur.
MODE 8
REPEAT
CLS : CLG
PRINT "Appuyez sur Q pour Quitter ou sur une autre"
PRINT "touche pour obtenir une autre palette aléatoire."
FOR kcouleur = 1 TO 15 : REM - A partir de 1 pour que la couleur du fond reste en noir
krouge = RND( 255 )
kvert = RND( 255 )
kbleu = RND( 255 )
COLOUR kcouleur , krouge , kvert , kbleu
COLOUR kcouleur : PRINT kcouleur ; " : " ; krouge ; " - " ; kvert ; " - " ; kbleu
GCOL kcouleur : RECTANGLE FILL 60 , ( 930 - ( kcouleur * 32 ) ) , 50 , 31
NEXT kcouleur
kpause$ = GET$
UNTIL kpause$ = "Q" OR kpause$ = "q"
PRINT TAB( 0 , 27 ) "Fin du test; Au revoir."
END
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.