Create: Computing AgesDoc Brass
Périphériques

Liaison d'affichage et tubes Nixie

Un programme écrit ses propres lignes dans n'importe quelle Liaison d'affichage de son réseau de câbles, et règle le texte et la couleur d'une rangée de tubes Nixie.

La Liaison d'affichage de Create recopie un texte d'une source vers un affichage : un panneau d'affichage, une rangée de tubes Nixie, une pancarte, un livre sur un pupitre. Un programme peut s'en servir de deux façons :

la bibliothèque displayle périphérique display_link
où se trouve la liaisoncontre l'ordinateurcontre l'ordinateur, ou sur un Câble de données de son réseau
ce qu'elle afficheles lignes que propose l'ordinateur, les mêmes pour toutes les liaisons posées dessusles lignes que le programme a écrites dans cette liaison, chaque liaison les siennes
comment le programme écritdisplay.set, display.lineun curseur et write, comme sur un écran

Avec display, l'ordinateur est la source, et toutes les liaisons posées sur lui lisent les mêmes lignes. Avec le périphérique display_link, le texte est rangé dans la liaison elle-même : un seul ordinateur remplit une dizaine de panneaux dans toute l'usine, chacun avec son propre texte, par des liaisons posées sur ses câbles.

Brass
local liaison = peripheral.find("display_link")
liaison.write("Fer : 1250")

Les tubes Nixie ont aussi leur propre périphérique, qui règle leur texte et leur couleur sans aucune Liaison d'affichage : voir nixie_tube.set_text() plus bas.

Méthodes
liaison.set_cursor(x, y)Déplace le curseur : le prochain write commence là.
liaison.cursor()La position du curseur. Après un write, il se trouve juste après le texte.
liaison.size()La taille de l'affichage sur lequel pointe la liaison.
liaison.write(text)Écrit au curseur, par-dessus ce qui s'y trouve déjà, et place le curseur juste après le texte.
liaison.clear_line()Vide la ligne où se trouve le curseur. Le curseur ne bouge pas.
liaison.clear()Vide toutes les lignes de la liaison.
liaison.update()Envoie les lignes à l'affichage maintenant, au lieu d'attendre le prochain rafraîchissement de la liaison, toutes les demi-secondes.
nixie.set_text(text [, color])Écrit un texte sur toute la rangée de tubes, comme le ferait une étiquette.
nixie.set_color(color)Change la couleur de toute la rangée, comme le ferait une teinture utilisée sur un tube.

Installation

  1. Posez la Liaison d'affichage sur un Câble de données du réseau de l'ordinateur (Mini-ordinateur et plus récents), ou contre l'ordinateur lui-même, et pointez-la sur son affichage comme d'habitude dans Create : clic droit sur l'affichage avec la liaison en main, puis posez la liaison. L'affichage peut se trouver jusqu'à 64 blocs de la liaison.
  2. C'est tout. Une liaison qui n'a pas encore de source prend d'elle-même « Sortie d'ordinateur » au premier appel du programme. Si vous aviez choisi une autre source dans l'écran de la liaison, choisissez à nouveau « Sortie d'ordinateur ».
  3. Le programme la trouve avec peripheral.find("display_link"), par son nom sur le câble (display_link@120,64,-35), ou par sa face quand elle touche l'ordinateur.

Quand l'affichage change. Comme toute Liaison d'affichage, la liaison recopie ses lignes sur l'affichage toutes les demi-secondes, à partir de la ligne choisie dans son écran. display_link.update() les envoie tout de suite. Tant que la liaison reçoit un signal de redstone, elle n'envoie rien (la règle de Create).

Où vivent les lignes. Les lignes sont gardées dans la liaison : elles restent après la fin du programme, et après un redémarrage, jusqu'à ce qu'un programme les efface. Tous les ordinateurs du réseau écrivent dans les mêmes lignes ; le dernier qui écrit l'emporte. Sur une liaison posée contre l'ordinateur, les lignes écrites ainsi prennent la place des lignes de display.set de l'ordinateur, jusqu'à display_link.clear().

Limites. Une liaison garde 64 lignes de 256 caractères. Ce que l'affichage en montre dépend de sa taille : display_link.size() la donne.

Écrire

#

liaison.set_cursor(x, y)

Déplace le curseur : le prochain write commence là.

Paramètres
x number
la colonne, à partir de 1
y number
la ligne, à partir de 1

Le curseur part de la colonne 1, ligne 1. Chaque liaison prise par le programme a le sien : reprendre la même liaison (peripheral.wrap ou peripheral.find une nouvelle fois) donne un nouveau curseur, revenu en 1, 1. Prenez-la une seule fois, avant la boucle principale.

Brass
local liaison = peripheral.find("display_link")
liaison.set_cursor(1, 2)
liaison.write("Ligne 2")

Un nombre en dessous de 1 arrête le programme avec bad argument to 'set_cursor' (the cursor starts at 1, 1) ; au-delà de 256 colonnes ou de 64 lignes, le curseur reste au bord. Nombres entiers seulement.

Voir aussi display_link.cursor() display_link.write()

#

liaison.cursor()

→ table

La position du curseur. Après un write, il se trouve juste après le texte.

Renvoie
table
{x = colonne, y = ligne}, là où va le prochain write
Brass
local liaison = peripheral.find("display_link")
liaison.write("Fer : ")
local c = liaison.cursor()
print(c.x, c.y)   -- 7 et 1

Voir aussi display_link.set_cursor()

#

liaison.size()

→ table⚙ coût 4

La taille de l'affichage sur lequel pointe la liaison.

Renvoie
table
{rows = lignes, columns = caractères}, ce que l'affichage peut montrer
affichagelignescolonnes
Panneau d'affichage2 par bloc de hauteuraugmente avec sa largeur (17 sur un panneau de 4 blocs de large)
Tubes Nixie12 par tube de la rangée
Pancarte415
Pupitre avec un livre50 (pages)256

Un programme y adapte son texte au panneau qu'il trouve, ou vérifie que le panneau est assez grand :

Brass
local liaison = peripheral.find("display_link")
local taille = liaison.size()
if taille.rows < 4 then
  print("ce panneau montre " .. taille.rows .. " lignes, il en faut 4")
end

Une liaison qui ne pointe sur rien où elle puisse écrire arrête le programme avec the display link points at nothing it can write on.

#

liaison.write(text)

Écrit au curseur, par-dessus ce qui s'y trouve déjà, et place le curseur juste après le texte.

Paramètres
text string
le texte à écrire ; les nombres et autres valeurs sont écrits en texte

write ne passe jamais à la ligne suivante : déplacez le curseur avec set_cursor pour cela. Quand le curseur est au-delà de la fin de la ligne, des espaces comblent le vide. Une ligne s'arrête à 256 caractères ; la suite est coupée.

Écrire par-dessus un ancien texte ne remplace que les caractères couverts : "9" écrit sur "10" laisse "90". Videz d'abord la ligne avec display_link.clear_line(), ou donnez au texte une largeur fixe :

Brass
local liaison = peripheral.find("display_link")
local coffre = peripheral.find("inventory")
liaison.set_cursor(1, 2)
liaison.write(string.format("Fer %6d", coffre.count("minecraft:iron_ingot")))

Voir aussi display_link.set_cursor() display_link.clear_line()

#

liaison.clear_line()

Vide la ligne où se trouve le curseur. Le curseur ne bouge pas.

Brass
local liaison = peripheral.find("display_link")
liaison.set_cursor(1, 3)
liaison.clear_line()
liaison.write("Fours : en marche")

Voir aussi display_link.clear() display_link.write()

#

liaison.clear()

Vide toutes les lignes de la liaison.

Le curseur ne bouge pas : appelez set_cursor(1, 1) pour repartir du haut. Comme avec display.clear(), un panneau d'affichage s'efface, mais une pancarte n'efface que sa première ligne. Sur une liaison posée contre l'ordinateur, les lignes de display.set de l'ordinateur réapparaissent.

Brass
local liaison = peripheral.find("display_link")
liaison.clear()
liaison.set_cursor(1, 1)
liaison.write("Fermé pour la nuit")

Voir aussi display_link.clear_line()

#

liaison.update()

Envoie les lignes à l'affichage maintenant, au lieu d'attendre le prochain rafraîchissement de la liaison, toutes les demi-secondes.

Appelez-la une fois tout le texte écrit, pour que l'affichage le montre d'un seul coup. Elle s'applique à la fin du tick, une seule fois, quel que soit le nombre d'appels dans ce tick (la règle est expliquée sur Machines de Create). Une liaison qui reçoit un signal de redstone n'envoie toujours rien.

Brass
local liaison = peripheral.find("display_link")
liaison.set_cursor(1, 1)
liaison.clear_line()
liaison.write("Train en approche")
liaison.update()

Voir aussi display_link.write()

Tubes Nixie

Une rangée de tubes Nixie montre deux caractères par tube. Dans Create, un tube affiche la puissance de redstone qu'il reçoit, ou le texte d'une étiquette ou d'une Liaison d'affichage. Le périphérique nixie_tube règle directement le texte et la couleur de toute la rangée. Posez un tube de la rangée contre l'ordinateur ou contre un Câble de données : les autres suivent.

Les deux méthodes s'appliquent à la fin du tick. Le texte reste après la fin du programme, jusqu'à ce que quelque chose d'autre écrive sur la rangée : le programme à nouveau, une étiquette, ou une Liaison d'affichage pointée dessus. Un clic droit main vide sur un tube retire le texte, et la rangée affiche de nouveau sa puissance de redstone.

#

nixie.set_text(text [, color])

Écrit un texte sur toute la rangée de tubes, comme le ferait une étiquette.

Paramètres
text string
le texte de la rangée, 2 caractères par tube à partir du premier ; les nombres sont écrits en texte
color string facultatif
une couleur de teinture pour la rangée, comme pour set_color

Le texte commence au premier tube de la rangée, quel que soit le tube pris par le programme. Ce qui ne tient pas n'est pas affiché ; au-delà de 64 caractères, le texte est coupé.

Brass
local nixie = peripheral.find("nixie_tube")
nixie.set_text("42", "red")

Voir aussi nixie_tube.set_color()

#

nixie.set_color(color)

Change la couleur de toute la rangée, comme le ferait une teinture utilisée sur un tube.

Paramètres
color string
une couleur de teinture, en anglais : white, orange, magenta, light_blue, yellow, lime, pink, gray, light_gray, cyan, purple, blue, brown, green, red ou black

grey et light_grey marchent aussi. Tout autre mot arrête le programme avec bad argument #1 to 'set_color' (a dye colour: white, orange, ...).

Brass
local nixie = peripheral.find("nixie_tube")
nixie.set_color("lime")
Pas de feux de signalisation

Le périphérique ComputerCraft des tubes Nixie, dans Create, a aussi setSignal, qui allume des feux colorés sur les tubes. Create ne dessine ces feux que pour un ordinateur ComputerCraft : cette méthode n'existe donc pas ici. Pour montrer un état en couleur, utilisez set_color, ou un Feu tricolore.

Voir aussi nixie_tube.set_text()

Exemple : un tableau d'entrepôt

Un Câble de données longe l'entrepôt. Dessus : un Coffre à objet renforcé, une Liaison d'affichage pointée sur un panneau d'affichage de 5 blocs de large et 2 de haut (4 lignes de 22 caractères), et une rangée de trois tubes Nixie au-dessus de la porte. Chaque seconde, le panneau liste le stock avec un ! devant ce qui vient à manquer, et les tubes montrent le fer, en rouge quand il en reste peu.

Brass
local coffre = peripheral.find("inventory")      -- le seul inventaire sur ce câble
local liaison = peripheral.find("display_link")
local nixie = peripheral.find("nixie_tube")

local OBJETS = {
  {id = "minecraft:iron_ingot", nom = "Fer", seuil = 256},
  {id = "minecraft:copper_ingot", nom = "Cuivre", seuil = 256},
  {id = "create:brass_ingot", nom = "Laiton", seuil = 128},
}

local function ligne(y, texte)
  liaison.set_cursor(1, y)
  liaison.clear_line()
  liaison.write(texte)
end

while true do
  ligne(1, "Lingots en stock")
  for i, objet in ipairs(OBJETS) do
    local nombre = coffre.count(objet.id)
    local marque = " "
    if nombre < objet.seuil then
      marque = "!"
    end
    ligne(i + 1, string.format("%s%-15s%6d", marque, objet.nom, nombre))
  end
  liaison.update()

  local fer = coffre.count("minecraft:iron_ingot")
  if fer < 256 then
    nixie.set_text(fer, "red")
  else
    nixie.set_text(fer, "lime")
  end
  sleep(1)
end

ligne a le droit d'utiliser liaison, car c'est une variable locale du fichier, pas d'une autre fonction. Trois tubes montrent 6 caractères : de quoi afficher jusqu'à 999999 lingots.