View difference between Paste ID: PbtkMTSZ and rV0CFFGX
SHOW: | | - or go back to the newest paste.
1-
-- Generates a random heightmap and displays scrolling text above it.
1+
-- Generates a random heightmap and displays scrolling text above it.
2-
2+
3-
local component = require("component")
3+
local component = require("component")
4-
local noise = require("noise")
4+
local noise = require("noise")
5-
local keyboard = require("keyboard")
5+
local keyboard = require("keyboard")
6-
local shell = require("shell")
6+
local shell = require("shell")
7-
local hologram = component.hologram
7+
local hologram = component.hologram
8-
8+
9-
hologram.clear()
9+
hologram.clear()
10-
10+
11-
11+
12-
local glyphs = {
12+
local glyphs = {
13-
["a"]=[[
13+
["a"]=[[
14-
XXXXX
14+
XXXXX
15-
X   X
15+
X   X
16-
XXXXX
16+
XXXXX
17-
X   X
17+
X   X
18-
X   X
18+
X   X
19-
]],
19+
]],
20-
["b"]=[[
20+
["b"]=[[
21-
XXXX 
21+
XXXX 
22-
X   X
22+
X   X
23-
XXXX 
23+
XXXX 
24-
X   X
24+
X   X
25-
XXXX 
25+
XXXX 
26-
]],
26+
]],
27-
["c"]=[[
27+
["c"]=[[
28-
XXXXX
28+
XXXXX
29-
X    
29+
X    
30-
X    
30+
X    
31-
X    
31+
X    
32-
XXXXX
32+
XXXXX
33-
]],
33+
]],
34-
["d"]=[[
34+
["d"]=[[
35-
XXXX 
35+
XXXX 
36-
X   X
36+
X   X
37-
X   X
37+
X   X
38-
X   X
38+
X   X
39-
XXXX 
39+
XXXX 
40-
]],
40+
]],
41-
["e"]=[[
41+
["e"]=[[
42-
XXXXX
42+
XXXXX
43-
X    
43+
X    
44-
XXXX 
44+
XXXX 
45-
X    
45+
X    
46-
XXXXX
46+
XXXXX
47-
]],
47+
]],
48-
["f"]=[[
48+
["f"]=[[
49-
XXXXX
49+
XXXXX
50-
X    
50+
X    
51-
XXXX 
51+
XXXX 
52-
X    
52+
X    
53-
X    
53+
X    
54-
]],
54+
]],
55-
["g"]=[[
55+
["g"]=[[
56-
XXXXX
56+
XXXXX
57-
X    
57+
X    
58-
X XXX
58+
X XXX
59-
X   X
59+
X   X
60-
XXXXX
60+
XXXXX
61-
]],
61+
]],
62-
["h"]=[[
62+
["h"]=[[
63-
X   X
63+
X   X
64-
X   X
64+
X   X
65-
XXXXX
65+
XXXXX
66-
X   X
66+
X   X
67-
X   X
67+
X   X
68-
]],
68+
]],
69-
["i"]=[[
69+
["i"]=[[
70-
 XXX 
70+
 XXX 
71-
  X  
71+
  X  
72-
  X  
72+
  X  
73-
  X  
73+
  X  
74-
 XXX 
74+
 XXX 
75-
]],
75+
]],
76-
["j"]=[[
76+
["j"]=[[
77-
    X
77+
    X
78-
    X
78+
    X
79-
    X
79+
    X
80-
X   X
80+
X   X
81-
XXXXX
81+
XXXXX
82-
]],
82+
]],
83-
["k"]=[[
83+
["k"]=[[
84-
X   X
84+
X   X
85-
X  X 
85+
X  X 
86-
XXX  
86+
XXX  
87-
X  X 
87+
X  X 
88-
X   X
88+
X   X
89-
]],
89+
]],
90-
["l"]=[[
90+
["l"]=[[
91-
X    
91+
X    
92-
X    
92+
X    
93-
X    
93+
X    
94-
X    
94+
X    
95-
XXXXX
95+
XXXXX
96-
]],
96+
]],
97-
["m"]=[[
97+
["m"]=[[
98-
X   X
98+
X   X
99-
XX XX
99+
XX XX
100-
X X X
100+
X X X
101-
X   X
101+
X   X
102-
X   X
102+
X   X
103-
]],
103+
]],
104-
["n"]=[[
104+
["n"]=[[
105-
X   X
105+
X   X
106-
XX  X
106+
XX  X
107-
X X X
107+
X X X
108-
X  XX
108+
X  XX
109-
X   X
109+
X   X
110-
]],
110+
]],
111-
["o"]=[[
111+
["o"]=[[
112-
XXXXX
112+
XXXXX
113-
X   X
113+
X   X
114-
X   X
114+
X   X
115-
X   X
115+
X   X
116-
XXXXX
116+
XXXXX
117-
]],
117+
]],
118-
["p"]=[[
118+
["p"]=[[
119-
XXXXX
119+
XXXXX
120-
X   X
120+
X   X
121-
XXXXX
121+
XXXXX
122-
X    
122+
X    
123-
X    
123+
X    
124-
]],
124+
]],
125-
["q"]=[[
125+
["q"]=[[
126-
XXXXX
126+
XXXXX
127-
X   X
127+
X   X
128-
X   X
128+
X   X
129-
X  X 
129+
X  X 
130-
XXX X
130+
XXX X
131-
]],
131+
]],
132-
["r"]=[[
132+
["r"]=[[
133-
XXXXX
133+
XXXXX
134-
X   X
134+
X   X
135-
XXXX 
135+
XXXX 
136-
X   X
136+
X   X
137-
X   X
137+
X   X
138-
]],
138+
]],
139-
["s"]=[[
139+
["s"]=[[
140-
XXXXX
140+
XXXXX
141-
X    
141+
X    
142-
XXXXX
142+
XXXXX
143-
    X
143+
    X
144-
XXXXX
144+
XXXXX
145-
]],
145+
]],
146-
["t"]=[[
146+
["t"]=[[
147-
XXXXX
147+
XXXXX
148-
  X  
148+
  X  
149-
  X  
149+
  X  
150-
  X  
150+
  X  
151-
  X  
151+
  X  
152-
]],
152+
]],
153-
["u"]=[[
153+
["u"]=[[
154-
X   X
154+
X   X
155-
X   X
155+
X   X
156-
X   X
156+
X   X
157-
X   X
157+
X   X
158-
XXXXX
158+
XXXXX
159-
]],
159+
]],
160-
["v"]=[[
160+
["v"]=[[
161-
X   X
161+
X   X
162-
X   X
162+
X   X
163-
X   X
163+
X   X
164-
 X X 
164+
 X X 
165-
  X  
165+
  X  
166-
]],
166+
]],
167-
["w"]=[[
167+
["w"]=[[
168-
X   X
168+
X   X
169-
X   X
169+
X   X
170-
X X X
170+
X X X
171-
X X X
171+
X X X
172-
 X X 
172+
 X X 
173-
]],
173+
]],
174-
["x"]=[[
174+
["x"]=[[
175-
X   X
175+
X   X
176-
 X X 
176+
 X X 
177-
  X  
177+
  X  
178-
 X X 
178+
 X X 
179-
X   X
179+
X   X
180-
]],
180+
]],
181-
["y"]=[[
181+
["y"]=[[
182-
X   X
182+
X   X
183-
X   X
183+
X   X
184-
 XXX 
184+
 XXX 
185-
  X  
185+
  X  
186-
  X  
186+
  X  
187-
]],
187+
]],
188-
["z"]=[[
188+
["z"]=[[
189-
XXXXX
189+
XXXXX
190-
    X
190+
    X
191-
 XXX 
191+
 XXX 
192-
X    
192+
X    
193-
XXXXX
193+
XXXXX
194-
]],
194+
]],
195-
["0"]=[[
195+
["0"]=[[
196-
 XXX 
196+
 XXX 
197-
X   X
197+
X   X
198-
X X X
198+
X X X
199-
X   X
199+
X   X
200-
 XXX 
200+
 XXX 
201-
]],
201+
]],
202-
["1"]=[[
202+
["1"]=[[
203-
  XX 
203+
  XX 
204-
 X X 
204+
 X X 
205-
   X 
205+
   X 
206-
   X 
206+
   X 
207-
   X 
207+
   X 
208-
]],
208+
]],
209-
["2"]=[[
209+
["2"]=[[
210-
XXXX 
210+
XXXX 
211-
    X
211+
    X
212-
  X  
212+
  X  
213-
X    
213+
X    
214-
XXXXX
214+
XXXXX
215-
]],
215+
]],
216-
["3"]=[[
216+
["3"]=[[
217-
XXXX 
217+
XXXX 
218-
    X
218+
    X
219-
 XXX 
219+
 XXX 
220-
    X
220+
    X
221-
XXXX 
221+
XXXX 
222-
]],
222+
]],
223-
["4"]=[[
223+
["4"]=[[
224-
X   X
224+
X   X
225-
X   X
225+
X   X
226-
XXXXX
226+
XXXXX
227-
    X
227+
    X
228-
    X
228+
    X
229-
]],
229+
]],
230-
["5"]=[[
230+
["5"]=[[
231-
XXXXX
231+
XXXXX
232-
X    
232+
X    
233-
XXXX 
233+
XXXX 
234-
    X
234+
    X
235-
XXXX 
235+
XXXX 
236-
]],
236+
]],
237-
["6"]=[[
237+
["6"]=[[
238-
 XXX 
238+
 XXX 
239-
X    
239+
X    
240-
XXXX 
240+
XXXX 
241-
X   X
241+
X   X
242-
 XXX 
242+
 XXX 
243-
]],
243+
]],
244-
["7"]=[[
244+
["7"]=[[
245-
XXXXX
245+
XXXXX
246-
   X 
246+
   X 
247-
 XXX 
247+
 XXX 
248-
  X  
248+
  X  
249-
 X   
249+
 X   
250-
]],
250+
]],
251-
["8"]=[[
251+
["8"]=[[
252-
 XXX 
252+
 XXX 
253-
X   X
253+
X   X
254-
 XXX 
254+
 XXX 
255-
X   X
255+
X   X
256-
 XXX 
256+
 XXX 
257-
]],
257+
]],
258-
["9"]=[[
258+
["9"]=[[
259-
 XXX 
259+
 XXX 
260-
X   X
260+
X   X
261-
 XXXX
261+
 XXXX
262-
    X
262+
    X
263-
 XXX 
263+
 XXX 
264-
]],
264+
]],
265-
[" "]=[[
265+
[" "]=[[
266-
     
266+
     
267-
     
267+
     
268-
     
268+
     
269-
     
269+
     
270-
     
270+
     
271-
]],
271+
]],
272-
["."]=[[
272+
["."]=[[
273-
   
273+
   
274-
   
274+
   
275-
   
275+
   
276-
   
276+
   
277-
 X 
277+
 X 
278-
]],
278+
]],
279-
[","]=[[
279+
[","]=[[
280-
    
280+
    
281-
    
281+
    
282-
    
282+
    
283-
  X 
283+
  X 
284-
 X  
284+
 X  
285-
]],
285+
]],
286-
[";"]=[[
286+
[";"]=[[
287-
    
287+
    
288-
  X 
288+
  X 
289-
    
289+
    
290-
  X 
290+
  X 
291-
 X  
291+
 X  
292-
]],
292+
]],
293-
["-"]=[[
293+
["-"]=[[
294-
     
294+
     
295-
     
295+
     
296-
 XXX 
296+
 XXX 
297-
     
297+
     
298-
     
298+
     
299-
]],
299+
]],
300-
["+"]=[[
300+
["+"]=[[
301-
     
301+
     
302-
  X  
302+
  X  
303-
 XXX 
303+
 XXX 
304-
  X  
304+
  X  
305-
     
305+
     
306-
]],
306+
]],
307-
["*"]=[[
307+
["*"]=[[
308-
     
308+
     
309-
 X X 
309+
 X X 
310-
  X  
310+
  X  
311-
 X X 
311+
 X X 
312-
     
312+
     
313-
]],
313+
]],
314-
["/"]=[[
314+
["/"]=[[
315-
    X
315+
    X
316-
   X 
316+
   X 
317-
  X  
317+
  X  
318-
 X   
318+
 X   
319-
X    
319+
X    
320-
]],
320+
]],
321-
["\\"]=[[
321+
["\\"]=[[
322-
X    
322+
X    
323-
 X   
323+
 X   
324-
  X  
324+
  X  
325-
   X 
325+
   X 
326-
    X
326+
    X
327-
]],
327+
]],
328-
["_"]=[[
328+
["_"]=[[
329-
     
329+
     
330-
     
330+
     
331-
     
331+
     
332-
     
332+
     
333-
XXXXX
333+
XXXXX
334-
]],
334+
]],
335-
["!"]=[[
335+
["!"]=[[
336-
 X 
336+
 X 
337-
 X 
337+
 X 
338-
 X 
338+
 X 
339-
   
339+
   
340-
 X 
340+
 X 
341-
]],
341+
]],
342-
["?"]=[[
342+
["?"]=[[
343-
 XXX 
343+
 XXX 
344-
    X
344+
    X
345-
  XX 
345+
  XX 
346-
     
346+
     
347-
  X  
347+
  X  
348-
]],
348+
]],
349-
["("]=[[
349+
["("]=[[
350-
  X 
350+
  X 
351-
 X  
351+
 X  
352-
 X  
352+
 X  
353-
 X  
353+
 X  
354-
  X 
354+
  X 
355-
]],
355+
]],
356-
[")"]=[[
356+
[")"]=[[
357-
 X  
357+
 X  
358-
  X 
358+
  X 
359-
  X 
359+
  X 
360-
  X 
360+
  X 
361-
 X  
361+
 X  
362-
]],
362+
]],
363-
}
363+
}
364-
364+
365-
local args = shell.parse(...)
365+
local args = shell.parse(...)
366-
local text = "Open Computers"
366+
local text = "Open Computers"
367-
if args[1] then
367+
if args[1] then
368-
  text = tostring(args[1])
368+
  text = tostring(args[1])
369-
else
369+
else
370-
  print("No text specified, using default value 'Open Computers'.")
370+
  print("No text specified, using default value 'Open Computers'.")
371
end
372-
local text = text .. " "
372+
local text = text .. " "
373-
373+
374-
-- Generate one big string that represents the concatenated glyphs for the provided text.
374+
-- Generate one big string that represents the concatenated glyphs for the provided text.
375-
local value = ""
375+
local value = ""
376-
for row = 1, 5 do
376+
for row = 1, 5 do
377-
  for col = 1, #text do
377+
  for col = 1, #text do
378-
    local char = string.sub(text:lower(), col, col)
378+
    local char = string.sub(text:lower(), col, col)
379-
    local glyph = glyphs[char]
379+
    local glyph = glyphs[char]
380-
    if glyph then
380+
    if glyph then
381-
      local s = 0
381+
      local s = 0
382-
      for _ = 2, row do
382+
      for _ = 2, row do
383-
        s = string.find(glyph, "\n", s + 1, true)
383+
        s = string.find(glyph, "\n", s + 1, true)
384-
        if not s then
384+
        if not s then
385-
          break
385+
          break
386-
        end
386+
        end
387-
      end
387+
      end
388-
      if s then
388+
      if s then
389-
        local line = string.sub(glyph, s + 1, (string.find(glyph, "\n", s + 1, true) or 0) - 1)
389+
        local line = string.sub(glyph, s + 1, (string.find(glyph, "\n", s + 1, true) or 0) - 1)
390-
        value = value .. line .. " "
390+
        value = value .. line .. " "
391-
      end
391+
      end
392-
    end
392+
    end
393-
  end
393+
  end
394-
  value = value .. "\n"
394+
  value = value .. "\n"
395
end
396-
396+
397-
local bm = {}
397+
local bm = {}
398-
for token in value:gmatch("([^\r\n]*)") do
398+
for token in value:gmatch("([^\r\n]*)") do
399-
  if token ~= "" then
399+
  if token ~= "" then
400-
    table.insert(bm, token)
400+
    table.insert(bm, token)
401-
  end
401+
  end
402
end
403-
local h,w = #bm,#bm[1]
403+
local h,w = #bm,#bm[1]
404-
local sx, sy = math.max(0,(16*3-w)/2), 2*16-h-1
404+
local sx, sy = math.max(0,(16*3-w)/2), 2*16-h-1
405-
local z = 16*3/2
405+
local z = 16*3/2
406-
406+
407-
print("Press Ctrl+W to stop.")
407+
print("Press Ctrl+W to stop.")
408-
for i = 1, math.huge do
408+
for i = 1, math.huge do
409-
  os.sleep(0.1)
409+
  os.sleep(0.1)
410-
  local function col(n)
410+
  local function col(n)
411-
    return (n - 1 + i) % w + 1
411+
    return (n - 1 + i) % w + 1
412-
  end
412+
  end
413-
  for i=1, math.min(16*3,w) do
413+
  for i=1, math.min(16*3,w) do
414-
    local x = sx + i
414+
    local x = sx + i
415-
    local i = col(i)
415+
    local i = col(i)
416-
    for j=1, h do
416+
    for j=1, h do
417-
      local y = sy + j-1
417+
      local y = sy + j-1
418-
      if bm[1+h-j]:sub(i, i) ~= " " then
418+
      if bm[1+h-j]:sub(i, i) ~= " " then
419-
        hologram.set(x, y, z, 1)
419+
        hologram.set(x, y, z, 1)
420-
      else
420+
      else
421-
        hologram.set(x, y, z, 0)
421+
        hologram.set(x, y, z, 0)
422-
      end
422+
      end
423-
      if keyboard.isKeyDown(keyboard.keys.w) and keyboard.isControlDown() then
423+
      if keyboard.isKeyDown(keyboard.keys.w) and keyboard.isControlDown() then
424-
        hologram.clear()
424+
        hologram.clear()
425-
        os.exit()
425+
        os.exit()
426-
      end
426+
      end
427-
    end
427+
    end
428-
  end
428+
  end
429
end