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 |