View difference between Paste ID: sj3ytYFZ and xuDtRYhB
SHOW: | | - or go back to the newest paste.
1-
local oses = {
1+
pcall(function() os.loadAPI "bigfont" end)
2
3
local OSes = {
4
    "PotatOS",
5-
    "TomatOS"
5+
6
    "YomatOS",
7
    "TomatOS",
8-
local function rand(list)
8+
	"ChorOS",
9
	"BurritOS",
10
	"GovOS",
11
}
12-
local monitors = {peripheral.find "monitor"}
12+
13
local function random_pick(list)
14-
while true do
14+
15-
    term.redirect(rand(monitors))
15+
16-
    write(rand(oses) .. " ")
16+
17-
    sleep(0.1)
17+
local function random_color()
18-
end
18+
	return math.pow(2, math.random(0, 15))
19
end
20
21
local function HSL(hue, saturation, lightness)
22
    if hue < 0 or hue > 360 then
23
        return 0x000000
24
    end
25
    if saturation < 0 or saturation > 1 then
26
        return 0x000000
27
    end
28
    if lightness < 0 or lightness > 1 then
29
        return 0x000000
30
    end
31
    local chroma = (1 - math.abs(2 * lightness - 1)) * saturation
32
    local h = hue/60
33
    local x =(1 - math.abs(h % 2 - 1)) * chroma
34
    local r, g, b = 0, 0, 0
35
    if h < 1 then
36
        r,g,b=chroma,x,0
37
    elseif h < 2 then
38
        r,b,g=x,chroma,0
39
    elseif h < 3 then
40
        r,g,b=0,chroma,x
41
    elseif h < 4 then
42
        r,g,b=0,x,chroma
43
    elseif h < 5 then
44
        r,g,b=x,0,chroma
45
    else
46
        r,g,b=chroma,0,x
47
    end
48
    local m = lightness - chroma/2
49
    return (r+m) * 16777216 + (g+m) * 65535 + (b+m) * 256
50
end
51
52
local default_palette = { 0x000000, 0x7F664C, 0x57A64E, 0xF2B233, 0x3366CC, 0xB266E5, 0x4C99B2, 0x999999, 0x4C4C4C, 0xCC4C4C, 0x7FCC19, 0xDEDE6C, 0x99B2F2, 0xE57FD8, 0xF2B2CC, 0xFFFFFF }
53
local palette = { 0x000000 }
54
for i = 0, 13 do
55
	table.insert(palette, HSL((i / 13) * 360, 1.0, 0.4))
56
end
57
table.insert(palette, 0xFFFFFF)
58
 
59
local function init_screen(t)
60
	t.setTextScale(4)
61
	t.setBackgroundColor(colors.black)
62
--	t.setCursorPos(1, 1)
63
--	t.clear()
64
	for i, c in pairs(default_palette) do
65
		t.setPaletteColor(math.pow(2, 16 - i), c)
66
	end
67
end
68
69
local function write_screen_slow(term, text, delay)
70
	local w, h = term.getSize()
71
	term.setCursorBlink(true)
72
	for i = 1, #text do
73
		local char = text:sub(i, i)
74
		local x, y = term.getCursorPos()
75
		term.write(char)
76
		if x == w then
77
			term.scroll(1)
78
			term.setCursorPos(1, h)
79
		end
80
		sleep(delay)
81
	end
82
	term.setCursorBlink(false)
83
end
84
85
local monitors = {peripheral.find("monitor", function(_, m) init_screen(m) return true end)}
86
87
local function unpotatoplexer()
88
	while true do
89
		local t = random_pick(monitors)
90
		t.setTextColor(random_color())
91
		if math.random(0, 1000) == 40 then
92
			if bigfont then bigfont.writeOn(t, 1, "hello", 2, 2) end
93
		else
94
			write_screen_slow(t, random_pick(OSes) .. " ", 0.05)
95
		end
96
	end
97
end
98
99
local threads = {}
100
for i = 1, 5 do
101
	table.insert(threads, unpotatoplexer)
102
end
103
parallel.waitForAll(unpack(threads))