
display
Des lignes pour une Liaison d'affichage de Create pointée sur l'ordinateur : panneaux d'affichage, tubes Nixie, pancartes.
La Liaison d'affichage de Create recopie une information d'un bloc source vers un affichage : un panneau d'affichage, une rangée de tubes Nixie, une pancarte, un livre sur un pupitre. Un ordinateur est lui aussi une source, et la bibliothèque display choisit les lignes qu'il propose. Tous les ordinateurs l'ont, Calculateur à tubes compris : un tableau de gare ou un compteur de stock n'a pas besoin d'écran.
display.set({"Fer", "1250 lingots"})Mise en place. Comme pour toute source de Create :
- Faites un clic droit sur l'affichage (la cible) avec la Liaison d'affichage en main, puis posez la liaison contre l'ordinateur, sur n'importe quelle face. La cible peut se trouver jusqu'à 64 blocs de la liaison (le réglage
displayLinkRangede Create). - Faites un clic droit sur la Liaison d'affichage : sa source est « Sortie d'ordinateur ». Choisissez la ligne de l'affichage où le texte commence.
- Dans le programme, écrivez les lignes avec
display.setoudisplay.line.
Quand l'affichage change. La Liaison d'affichage lit les lignes de l'ordinateur toutes les demi-secondes (10 ticks) et les recopie sur sa cible, à partir de la ligne choisie dans ses réglages. Un programme peut appeler display.set aussi souvent qu'il veut : seules les lignes présentes à la lecture suivante s'affichent. Tant que la Liaison d'affichage reçoit un signal de redstone, elle ne se met plus à jour (la règle de Create pour toutes les Liaisons d'affichage), et elle reprend dès que le signal s'arrête.
Ce que montre chaque affichage.
| affichage | ce qu'il montre |
|---|---|
| Panneau d'affichage | une ligne de l'ordinateur par ligne du panneau : 2 lignes par bloc de hauteur, un peu plus de 4 caractères par bloc de largeur (17 sur un panneau de 4 blocs de large). Les lignes du panneau sous la dernière ligne de l'ordinateur sont effacées (jusqu'à une ligne qu'écrit une autre Liaison d'affichage). Le panneau ne marche que s'il tourne. |
| Tubes Nixie | la première ligne seulement, 2 caractères par tube de la rangée |
| Pancarte | 4 lignes au plus, chacune coupée à la largeur de la pancarte |
| Pupitre avec un livre | une ligne par page |
Toutes les Liaisons d'affichage pointées sur l'ordinateur reçoivent les mêmes lignes. Plusieurs liaisons peuvent lire un même ordinateur (un panneau sur une face, une rangée de tubes Nixie sur une autre), mais les tubes Nixie montrent toujours la ligne 1.
Durée de vie. Les lignes restent jusqu'à ce que le programme les change, même après sa fin. Un redémarrage ou un arrêt les vide, et l'affichage s'efface à la lecture suivante.
display.set(lines) | Remplace toutes les lignes proposées aux Liaisons d'affichage. |
display.line(n, text) | Change une ligne et garde les autres. |
display.clear() | Retire toutes les lignes : l'ordinateur ne propose plus rien à ses Liaisons d'affichage. |
Écrire des lignes
display.set(lines)
Remplace toutes les lignes proposées aux Liaisons d'affichage.
linestable|string- une liste de lignes, ou un seul texte où chaque
"\n"commence une nouvelle ligne
Elle prend une liste de lignes, ou un seul texte :
display.set({"Fer", "1250 lingots"}) -- deux lignes
display.set("Fer\n1250 lingots") -- les deux mêmes lignes
display.set({"Vitesse", 128, "tr/min"}) -- les nombres sont écrits en texte
display.set() -- plus aucune ligne, comme display.clear()Les limites : 16 lignes et 128 caractères par ligne. Les lignes plus longues sont coupées, et les valeurs d'une liste après la 16e sont ignorées. Dans un texte unique, la 16e ligne garde tout le reste du texte. Chaque valeur d'une liste devient du texte comme l'écrit tostring.
Un tableau des départs de gare. Un panneau d'affichage de 5 blocs de large et 2 de haut (4 lignes de 22 caractères) montre les prochains trains. Les heures sont celles de Minecraft : os.day_time() compte 1000 ticks par heure, et 0 correspond à 6 h du matin. Le tableau est construit par une fonction, qu'on peut donc essayer avec une heure fixe :
local DEPARTS = {
{heure = 7500, train = "Rapide du fer", quai = 1},
{heure = 9000, train = "Navette mine", quai = 2},
{heure = 12000, train = "Ligne du port", quai = 1},
}
local function horloge(ticks)
local t = (ticks + 6000) % 24000
return string.format("%02d:%02d", t // 1000, t % 1000 * 60 // 1000)
end
local function tableau(maintenant)
local lignes = {"Départs " .. horloge(maintenant)}
for _, d in ipairs(DEPARTS) do
if d.heure >= maintenant then
table.insert(lignes, string.format("%s %-13s Q%d", horloge(d.heure), d.train, d.quai))
end
end
return lignes
end
for _, ligne in ipairs(tableau(7000)) do
print(ligne)
endDéparts 13:00 13:30 Rapide du fer Q1 15:00 Navette mine Q2 18:00 Ligne du port Q1
Sur l'ordinateur, la dernière boucle devient la boucle principale du programme, avec l'heure réelle :
while true do
display.set(tableau(os.day_time()))
sleep(5)
endQuand un train est parti, sa ligne disparaît et les suivantes remontent ; le panneau efface les lignes en trop.
Voir aussi display.line() display.clear()
display.line(n, text)
Change une ligne et garde les autres.
nnumber- le numéro de la ligne, de 1 à 16
textstring- le texte de cette ligne (les nombres et autres valeurs sont écrits en texte)
Pratique quand quelques valeurs changent à des moments différents : le titre reste, seuls les chiffres bougent.
display.set({"Salle des fours", "", "Charbon restant"})
display.line(2, "en marche")
display.line(4, 512) -- la ligne 4 n'existait pas encore : elle est ajoutéeQuand n dépasse la dernière ligne, les lignes intermédiaires sont ajoutées, vides. Un numéro en dessous de 1 ou au-dessus de 16 est ignoré, sans erreur. n doit être un nombre entier. Sans texte, c'est le mot nil qui s'écrit : pour vider une ligne, écrivez display.line(n, "").
Un compteur de stock sur tubes Nixie. Une rangée de trois tubes Nixie affiche 6 caractères : assez pour le fer du Coffre à objet renforcé de gauche. Les tubes Nixie ne montrent que la première ligne, le compte va donc sur la ligne 1 :
local coffre = peripheral.wrap("left")
while true do
display.line(1, coffre.count("minecraft:iron_ingot"))
sleep(2)
endVoir inventory.count() pour le coffre renforcé, et Alarme de stock et panneau d'affichage pour une alarme de stock complète.
Voir aussi display.set() display.clear()
display.clear()
Retire toutes les lignes : l'ordinateur ne propose plus rien à ses Liaisons d'affichage.
À la lecture suivante, un panneau d'affichage et des tubes Nixie s'effacent. Une pancarte et un pupitre n'effacent que la première ligne (ou page) qu'écrit la liaison, et gardent les autres : pour vider toute une pancarte, envoyez-lui plutôt des lignes vides.
display.clear() -- un panneau d'affichage s'efface
display.set({"", "", "", ""}) -- une pancarte s'efface aussiUne horloge sur une pancarte. L'heure du jour sur une pancarte de la place du village, rafraîchie toutes les quelques secondes (le programme intégré clock fait de même avec un moniteur) :
while true do
local t = (os.day_time() + 6000) % 24000
local texte = string.format("%02d:%02d", t // 1000, t % 1000 * 60 // 1000)
display.set({"", "Mairie", texte, ""})
sleep(5)
endUne heure de Minecraft dure 50 secondes : un rafraîchissement toutes les 5 secondes suffit pour l'horloge d'un village.
Un ordinateur avec un écran peut montrer plus qu'une Liaison d'affichage : des couleurs, des barres, des dessins. Posez un Moniteur cathodique ou un Moniteur LCD contre lui (Moniteurs, Écrans et moniteurs) et dessinez avec term ou gfx. La Liaison d'affichage reste le bon choix pour les affichages de Create, et pour les ordinateurs sans écran à proximité.
Voir aussi display.set()