
clock
l'heure, sur un moniteur
> examples clock > edit clock
Affiche l'heure du monde Minecraft, comme 07:30, rafraîchie chaque seconde : dans le terminal, sur un moniteur qui touche l'ordinateur, et sur tout ce qu'une Liaison d'affichage de Create sait remplir. Mettez-en une dans chaque gare de votre réseau ferré.
Quoi construire
Rien n'est obligatoire : l'heure s'affiche dans le terminal. Pour la voir dans le monde :
- posez un Moniteur cathodique ou un Moniteur LCD contre l'ordinateur : il affiche le terminal ;
- ou pointez une Liaison d'affichage de Create sur l'ordinateur, avec pour cible un Panneau d'affichage, des Tubes Nixie ou un panneau : elle affiche les deux lignes
Heureet07:30.
Comment il marche
local t = (os.day_time() + 6000) % 24000
local h = math.floor(t / 1000)
local m = math.floor(t % 1000 * 60 / 1000)
local text = string.format("%02d:%02d", h, m)os.day_time() donne l'heure du monde en ticks, de 0 à 23 999. Une journée Minecraft dure 24 000 ticks et commence à 0 avec le lever du soleil, soit 6 heures du matin : ajouter 6 000 et garder le reste de la division par 24 000 (%) donne les ticks depuis minuit. Une heure fait 1 000 ticks : h est le nombre de milliers entiers, et le reste, sur 1 000, donne les minutes. string.format() écrit les deux sur deux chiffres : %02d transforme 7 en 07.
Le même calcul sur quelques moments de la journée :
local function horloge(ticks)
local t = (ticks + 6000) % 24000
local h = math.floor(t / 1000)
local m = math.floor(t % 1000 * 60 / 1000)
return string.format("%02d:%02d", h, m)
end
print(horloge(0)) -- lever du soleil
print(horloge(6000)) -- midi
print(horloge(13000)) -- coucher du soleil
print(horloge(18000)) -- minuit
print(horloge(1500))06:00 12:00 19:00 00:00 07:30
term.clear()
term.set_cursor(1, 1)
print(text)
display.set({"Heure", text})
sleep(1)Chaque seconde, l'écran est effacé et l'heure écrite en haut à gauche (term.clear(), term.set_cursor()). display.set() confie les lignes aux Liaisons d'affichage pointées sur l'ordinateur : une chaîne par ligne. Une minute de Minecraft dure moins d'une seconde réelle (une heure dure 50 secondes) : les minutes avancent d'une ou deux à chaque rafraîchissement.
Idées
- Affichez la partie de la journée :
if t >= 6000 and t < 19000 thenc'est le jour, sinon la nuit. - Éclairez la rue la nuit :
rs.set("top", os.day_time() >= 12500 and os.day_time() < 23500), ou allez plus loin avec la recette éclairage jour et nuit. - De grands chiffres dessinés avec
gfxsur un mur de moniteurs, à partir de l'Ordinateur à transistors :gfx.text()prend une taille. - Sonnez la cloche chaque matin : quand
hpasse à 6, envoyez une impulsion à un bloc musical. - Une horloge sur 12 heures pour les visiteurs anglophones :
local suffixe = h < 12 and "AM" or "PM", puis affichez(h + 11) % 12 + 1.
Le programme
-- Affiche l'heure du monde. Posez un moniteur contre l'ordinateur
-- pour la voir en grand, ou pointez un Display Link de Create dessus.
while true do
local t = (os.day_time() + 6000) % 24000 -- 0 = 6 h du matin
local h = math.floor(t / 1000)
local m = math.floor(t % 1000 * 60 / 1000)
local text = string.format("%02d:%02d", h, m)
term.clear()
term.set_cursor(1, 1)
print(text)
display.set({"Heure", text})
sleep(1)
end