Couleurs
Les 16 couleurs des écrans : leurs noms, numéros, chiffres de sprite et teintes exactes.
Tous les écrans couleur ont les mêmes 16 couleurs, celles des teintures de Minecraft. Chaque couleur s'écrit de trois façons, chacune à son endroit :
- un nom, comme
"red", pourterm.colorset pour dessiner avecgfx; - un numéro de 0 à 15, que prennent les fonctions du terminal :
term.colors.redvaut 14 ; - un chiffre hexadécimal, de
0àf, un par pixel dans les sprites degfx.image:eest le rouge.
| Couleur | Nom | En français | Numéro | Chiffre de sprite | Teinte |
|---|---|---|---|---|---|
white | blanc | 0 | 0 | #F0F0F0 | |
orange | orange | 1 | 1 | #F2B233 | |
magenta | magenta | 2 | 2 | #E57FD8 | |
light_blue | bleu clair | 3 | 3 | #99B2F2 | |
yellow | jaune | 4 | 4 | #DEDE6C | |
lime | vert clair | 5 | 5 | #7FCC19 | |
pink | rose | 6 | 6 | #F2B2CC | |
gray | gris | 7 | 7 | #4C4C4C | |
light_gray | gris clair | 8 | 8 | #999999 | |
cyan | cyan | 9 | 9 | #4C99B2 | |
purple | violet | 10 | a | #B266E5 | |
blue | bleu | 11 | b | #3366CC | |
brown | marron | 12 | c | #7F664C | |
green | vert | 13 | d | #57A64E | |
red | rouge | 14 | e | #CC4C4C | |
black | noir | 15 | f | #111111 |
Les noms s'écrivent en anglais, en minuscules, avec un tiret bas : light_blue, light_gray. Attention à l'orthographe de gray (pas grey), et un nom français comme "rouge" n'est pas reconnu. Les teintes sont les couleurs exactes qu'affichent les écrans ; le noir est un gris très sombre, la couleur d'un écran vide.
local NOMS = {"white", "orange", "magenta", "light_blue", "yellow", "lime", "pink", "gray",
"light_gray", "cyan", "purple", "blue", "brown", "green", "red", "black"}
local SOMBRES = {[7] = true, [10] = true, [11] = true, [12] = true, [14] = true, [15] = true}
gfx.clear("black")
gfx.text(4, 6, "LES 16 COULEURS : NUMERO, CHIFFRE DE SPRITE, NOM", "white")
for n = 0, 15 do
local x = 4 + (n % 4) * 76
local y = 20 + (n // 4) * 38
gfx.rect(x, y, 72, 34, n, true)
if n == 15 then gfx.rect(x, y, 72, 34, "gray") end
local encre = "black"
if SOMBRES[n] then encre = "white" end
gfx.text(x + 4, y + 4, tostring(n), encre, 2)
gfx.text(x + 62, y + 4, string.format("%x", n), encre)
gfx.text(x + 4, y + 24, NOMS[n + 1], encre)
end
Dans le terminal : des numéros
term.set_fg (le texte) et term.set_bg (les cases derrière) prennent un numéro. Écrivez-le avec term.colors, plus lisible que le numéro lui-même :
term.set_fg(term.colors.orange)
print("Four allumé")
term.set_fg(term.colors.white)
print(term.colors.red, term.colors.black)Four allumé 14 15
Un nom n'y est pas accepté, pas plus qu'un numéro en dehors de 0 à 15 :
term.set_fg("red")snippet:1: bad argument #1 to 'set_fg' (number expe cted, got string)
term.set_fg(16) s'arrête sur bad argument #1 to 'set_fg' (color must be 0..15). Voir term.
Dans les dessins : des noms ou des numéros
Toutes les fonctions de gfx acceptent un nom ("red"), un numéro (14) ou term.colors.red : les trois désignent la même couleur. Le nom spécial "none" (ou le numéro -1) efface et laisse le pixel vide. Un nom inconnu arrête le programme avec une erreur qui donne la liste des 16 noms et de none.
gfx.get_pixel répond toujours par un numéro. Pour retrouver le nom, gardez les noms dans une liste, dans l'ordre du tableau : le nom de la couleur n est à l'indice n + 1.
local NOMS = {"white", "orange", "magenta", "light_blue", "yellow", "lime", "pink", "gray",
"light_gray", "cyan", "purple", "blue", "brown", "green", "red", "black"}
gfx.rect(1, 1, 10, 10, "cyan", true)
print(NOMS[gfx.get_pixel(5, 5) + 1])cyan
Dans les sprites : des chiffres hexadécimaux
gfx.image dessine une liste de chaînes, un caractère par pixel. Ce caractère est le numéro de la couleur écrit en hexadécimal : de 0 à 9, puis de a (10) à f (15), majuscules acceptées. Tout autre caractère, en général ., laisse le pixel tel qu'il est.
local sprite = {
"0123",
"4567",
"89ab",
"cdef",
}
gfx.clear("black")
gfx.rect(9, 9, 66, 66, "white") -- un cadre, pour voir le pixel noir
gfx.image(10, 10, sprite, 16)
gfx.rect(99, 9, 194, 14, "white")
gfx.image(100, 10, {"0123456789abcdef"}, 12)
gfx.rect(100, 40, 192, 12, "yellow", true) -- une bande jaune sous le sprite suivant
gfx.image(100, 40, {"e.e.e.e.e.e.e.e."}, 12)
gfx.text(100, 58, "LES POINTS NE TOUCHENT PAS AU PIXEL", "white")
Les écrans sans couleurs
Tous les écrans ne montrent pas les 16 couleurs :
| Écran | Couleurs du texte et des cases | Dessin (gfx) |
|---|---|---|
| Micro-ordinateur, Microcontrôleur, Ordinateur moderne | affichées | affiché |
| Ordinateur à transistors (vert), Mini-ordinateur (ambre) | ignorées : chaque caractère brille dans la couleur du phosphore sur un écran sombre | toutes les couleurs sauf le noir s'allument dans la couleur du phosphore ; le noir reste sombre |
| Calculateur à tubes (téléscripteur) | ignorées : encre sombre sur papier | pas de gfx |
| Moniteur LCD, sur n'importe quel ordinateur | affichées | affiché |
| Moniteur cathodique | comme sur l'écran de l'ordinateur (le papier du téléscripteur devient du phosphore vert) | comme sur l'écran de l'ordinateur |
L'ordinateur retient toujours les couleurs choisies par le programme ; seul l'écran décide de les montrer. Un Moniteur LCD posé contre un Ordinateur à transistors les affiche toutes. La même palette sur l'écran ambre d'un Mini-ordinateur :
local NOMS = {"white", "orange", "magenta", "light_blue", "yellow", "lime", "pink", "gray",
"light_gray", "cyan", "purple", "blue", "brown", "green", "red", "black"}
local SOMBRES = {[7] = true, [10] = true, [11] = true, [12] = true, [14] = true, [15] = true}
gfx.clear("black")
gfx.text(4, 6, "LES 16 COULEURS : NUMERO, CHIFFRE DE SPRITE, NOM", "white")
for n = 0, 15 do
local x = 4 + (n % 4) * 76
local y = 20 + (n // 4) * 38
gfx.rect(x, y, 72, 34, n, true)
if n == 15 then gfx.rect(x, y, 72, 34, "gray") end
local encre = "black"
if SOMBRES[n] then encre = "white" end
gfx.text(x + 4, y + 4, tostring(n), encre, 2)
gfx.text(x + 62, y + 4, string.format("%x", n), encre)
gfx.text(x + 4, y + 24, NOMS[n + 1], encre)
end
Sur ces écrans, seuls comptent le noir et le « pas noir » : un texte noir sur un bloc allumé disparaît, et les étiquettes blanches aussi, dessinées sur des blocs eux-mêmes allumés. Pour un programme qui leur est destiné, dessinez en noir et dans une seule autre couleur.
Choisir ses couleurs
Quelques habitudes rendent les écrans plus lisibles, dans une usine sombre comme sur un mur de moniteurs en plein soleil :
- gardez partout le même sens à une couleur :
limeougreenpour en marche et plein,yellowouorangepour bas ou occupé,redpour arrêté, vide ou en surcharge ; - écrivez en sombre (
black) sur les couleurs claires (white,yellow,lime,light_blue,pink...) et en blanc sur les foncées (gray,blue,purple,brown,red,black) ; - ne comptez pas sur la couleur seule : ajoutez un mot (
OK,BAS,STOP), pour que l'écran marche encore sur un Ordinateur à transistors et pour les joueurs daltoniens.
Voir Écrans et moniteurs pour la mise en page d'un écran entier.