Advertisement
Doob

screensaver [OpenComputers]

Jul 8th, 2016
468
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.51 KB | None | 0 0
  1. local gpu, r, xr, ti = require("component").gpu, math.random, bit32.bxor, table.insert
  2. local tbl, tbl1, S, gsF, gsB, w, h, n, c, Fc, Bc, C, D, i, j, m, k, q, p, a, b = {}, {x = {}, y = {}}, "▄", gpu.setForeground, gpu.setBackground, gpu.getResolution()
  3. local t = (w-h*2)/2
  4. local function pix(x, y, color)
  5.   n = y%2
  6.   y = (y+n)/2
  7.   c, Fc, Bc = gpu.get(x+t, y)
  8.   if c ~= S then
  9.     Fc = Bc
  10.   end
  11.   if n == 0 then
  12.     Fc = color
  13.   else
  14.     Bc = color
  15.   end
  16.   gsF(Fc)
  17.   gsB(Bc)
  18.   gpu.set(x+t, y, S)
  19. end
  20.  
  21. gsB(0)
  22. gpu.fill(1, 1, w, h, " ")
  23. for i = 1, h do
  24.   tbl[i] = {}
  25.   for j = 1, h do
  26.     ti(tbl1.x, i)
  27.     ti(tbl1.y, j)
  28.   end
  29. end
  30. for n = 1, #tbl1.x do
  31.   k = r(n)
  32.   tbl1.x[n], tbl1.x[k], tbl1.y[n], tbl1.y[k] =
  33.   tbl1.x[k], tbl1.x[n], tbl1.y[k], tbl1.y[n]
  34. end
  35. while true do
  36.   for i = 1, h do
  37.     for j = 1, h do
  38.       tbl[i][j] = 0
  39.     end
  40.   end
  41.   for i = 1, h do
  42.     m = r(0, 1)
  43.     tbl[i][1], tbl[1][i] = m, m
  44.   end
  45.   C, D, i, j = r(0, 255), t
  46.   for y = 2, #tbl do
  47.     for x = y, #tbl[y] do
  48.       q = xr(tbl[x-1][y], tbl[x][y-1])
  49.       tbl[x][y], tbl[y][x] = q, q
  50.     end
  51.   end
  52.   for o = 1, #tbl1.x do
  53.     i, j = tbl1.x[o], tbl1.y[o]
  54.     p, a, b = i*j*C, -j+h*2, -i+h*2
  55.     if tbl[i][j] == 1 then
  56.       pix(j, i, p)
  57.       pix(a, b, p)
  58.       pix(a, i, p)
  59.       pix(j, b, p)
  60.     else
  61.       pix(j, i, 0)
  62.       pix(a, b, 0)
  63.       pix(a, i, 0)
  64.       pix(j, b, 0)
  65.     end
  66.     pix(r(-D+1, 0), r(1, h*2), C)
  67.     pix(r(h*2, w-D), r(1, h*2), C)
  68.   end
  69.   gsF(65280)
  70.   gsB(0)
  71.   os.sleep(2)
  72. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement