diff --git a/eyestrain.lua b/eyestrain.lua new file mode 100644 index 0000000..10d2c5c --- /dev/null +++ b/eyestrain.lua @@ -0,0 +1,68 @@ +local scr_x, scr_y = term.getSize() + +local ballX, ballY = math.floor(scr_x / 2), math.floor(scr_y / 2) + +local tsv = function(visible) + if term.current().setVisible then + return term.current().setVisible(visible) + end +end + +local dist = function(x1, y1, x2, y2) + return math.sqrt((x2 - x1)^2 + (y2 - y1)^2) +end + +local disadvantageRoll = function(min, max, times) + local output = math.huge + for i = 1, times do + output = math.min(output, math.random(min, max)) + end + return output +end + +local wipeScreen = function(alternate) + local i = alternate + tsv(false) + for y = 1, scr_y do + i = not i + term.setCursorPos(1, y) + for x = 1, scr_x do + if i then + if (dist(x, y * 4/3, ballX, ballY) < disadvantageRoll(3,100, 12)) then + term.blit("\153", "0", "e") + else + term.blit("\153", "0", "f") + end + else + if (dist(x, y * 4/3, ballX, ballY) < disadvantageRoll(3,100, 12)) then + term.blit("\153", "e", "0") + else + term.blit("\153", "f", "0") + end + end + end + end + tsv(true) +end + +local setPalette = function(i) + local v1 = (2 + math.sin(math.rad(i))) / 3 + local v2 = (2 + math.sin(math.rad(i + 90))) / 3 + local v3 = v1 - 0.1 + term.setPaletteColor(colors.black, v2, v1, v3) + term.setPaletteColor(colors.white, v1, v2, v2) + term.setPaletteColor(colors.red, v2, v3, v3) +end + +term.clear() + +local i = 0 +while true do + i = i + 1 + ballX = ((math.sin(math.rad(i * 2)) + 1) / 2) * (scr_x - 10) + 5 + ballY = ((math.sin(math.rad(i * 3)) + 1) / 2) * (scr_y - 6) + 3 + wipeScreen(i % 2 == 0) + --wipeScreen(true) + setPalette(i) + sleep(0) +end