Programmes intégrés

shapes
dessine une scène avec gfx
Tapez ceci à l'invite d'un ordinateur pour le copier sur le support :
> examples shapes > edit shapes

Le programme
-- Dessiner avec gfx : chaque forme de la scène montre une fonction.
-- Les coordonnées sont des pixels, (1, 1) en haut à gauche ; une couleur
-- est un nom ("red") ou un nombre de 0 à 15 (term.colors.red).
local size = gfx.size()
local W = size.w
local H = size.h
term.set_bg(term.colors.black)
term.clear()
gfx.clear("light_blue") -- le ciel
gfx.circle(W - 30, 28, 12, "yellow", true) -- le soleil : un disque
for i = 0, 7 do
-- ses rayons : des lignes de 2 pixels
local a = i * math.pi / 4
gfx.line(W - 30 + math.cos(a) * 16, 28 + math.sin(a) * 16,
W - 30 + math.cos(a) * 22, 28 + math.sin(a) * 22, "yellow", 2)
end
gfx.rect(1, H - 40, W, 41, "green", true) -- l'herbe : un rectangle plein
gfx.rect(40, H - 90, 70, 55, "white", true) -- la maison
gfx.rect(40, H - 90, 70, 55, "gray") -- son contour : sans remplissage
gfx.triangle(32, H - 90, 75, H - 122, 118, H - 90, "red", true) -- le toit
gfx.rect(68, H - 60, 16, 25, "brown", true) -- la porte
gfx.rect(48, H - 80, 14, 12, "light_blue", true) -- deux fenêtres
gfx.rect(90, H - 80, 14, 12, "light_blue", true)
gfx.rect(150, H - 70, 8, 35, "brown", true) -- un arbre
gfx.circle(154, H - 80, 18, "lime", true)
gfx.circle(154, H - 80, 18, "green", 2) -- une bordure de 2 pixels
-- un sprite : une couleur hexa par pixel ("." est vide), dessiné deux fois plus grand
local steve = {
"cccccccc",
"c666666c",
"60f66f06",
"666cc666",
"99999999",
"69999996",
".bbbbbb.",
".bb..bb.",
}
gfx.image(200, H - 56, steve, 2)
gfx.text(8, 8, "HELLO GFX!", "white", 2) -- du texte en pixels, deux fois plus grand
term.set_cursor(1, term.get_size().h)
term.write("Clic : pot de peinture. Une touche : fin")
while true do
local e = os.pull_event()
if e.name == "click" then
-- e.px, e.py : le pixel cliqué
gfx.fill(e.px, e.py, "orange")
elseif e.name == "key" or e.name == "char" then
break
end
end