ldd-CC/dvdlogo.lua

113 lines
2.9 KiB
Lua
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local mon = peripheral.find("monitor")
if mon then
mon.setTextScale(0.5)
term.redirect(mon)
end
local scr_x, scr_y = term.getSize()
local max, min = math.max, math.min
local floor, ceil = math.floor, math.ceil
getSize = function(image)
local x, y = 0, #image[1]
for y = 1, #image[1] do
x = max(x, #image[1][y])
end
return x, y
end
local drawImage = function(image, x, y, terminal)
terminal = terminal or term.current()
local cx, cy = terminal.getCursorPos()
for iy = 0, #image[1] + 1 do
terminal.setCursorPos(x - 1, y + (iy - 1))
if image[1][iy] then
terminal.blit(
" " .. image[1][iy] .. " ",
"f" .. image[2][iy] .. "f",
"f" .. image[3][iy] .. "f"
)
else
terminal.clearLine()
end
end
terminal.setCursorPos(cx,cy)
end
local logo = {
xvel = (math.random(0, 1) * 2) - 1,
yvel = (math.random(0, 1) * 2) - 1,
x = floor(scr_x / 2),
y = floor(scr_y / 2),
img = {
{
" €€€€€€€€€€ Ÿ€€€€€€‚‹ ",
" Ÿ ‚€” •€Š ‡€€‡€ ‹€‚",
" €€ •€• €€Ÿ€Ÿ •€• €€",
"•€• Ÿ‡€Ÿ •€‚€€‡ €€ €…",
"€€€€€Ÿ‡ €€Ÿ •€€€€€ ",
" •‡ ",
" ‡ƒƒƒ€€€€€€‚ƒƒƒ‹ ",
"‡€€€€€€ƒƒƒƒƒ‹€€€€€€‚‹ ",
"€€€€€€ƒ Ÿ‡€€€€€€Ÿ ",
" ‚ƒ€€€€€€€€€€€€€€Ÿƒ ",
" ‚ƒƒƒƒƒƒ ",
}, {
" 00000000000 ff000000ff ",
" ff0 0f00 f0f f000fff 00f",
" 00 f00 000ff000 f00 00",
"f00 ff00 f0f000 00 ff00",
" 0000 f0000000 ",
" f0 ",
" fffffff000000fffffff ",
"ff000000000000000f000000ff ",
"f000000fff ffff0000000 ",
" 0000f0000000000000000000 ",
" 00000000 ",
}, {
" 0000000000f 0000000000 ",
" 00f f00f 000 000ff00 f00",
" 00 00f 00f000ff 00f 00",
"00f 000f 00000f 00 000f",
"00000ff 00ff 000000ff ",
" 0f ",
" 00000000000000000000 ",
"00000000fffffffff000000000 ",
"0000000000 0000000000f ",
" ffff000000000000000fffff ",
" ffffffff ",
}
}
}
local imgXsize, imgYsize = getSize(logo.img)
local xWall, yWall
local render = function()
drawImage(logo.img, floor(logo.x), floor(logo.y))
end
local tick = function()
scr_x, scr_y = term.getSize()
xWall = scr_x - imgXsize + 1
yWall = scr_y - imgYsize + 1
logo.x = min(max(logo.x + logo.xvel, 1), xWall)
logo.y = min(max(logo.y + logo.yvel, 1), yWall)
if floor(logo.x) == 1 or floor(logo.x) == xWall then
logo.xvel = -logo.xvel
end
if floor(logo.y) == 1 or floor(logo.y) == yWall then
logo.yvel = -logo.yvel
end
render()
end
term.setBackgroundColor(colors.black)
term.clear()
while true do
tick()
sleep(0.05)
end