90 lines
2.0 KiB
Plaintext
90 lines
2.0 KiB
Plaintext
|
|
require("curses");
|
|
|
|
curses.initscr();
|
|
curses.nl();
|
|
curses.noecho();
|
|
|
|
|
|
if (curses.has_colors()) then
|
|
curses.start_color();
|
|
curses.init_pair(1, curses.COLOR_BLUE, curses.COLOR_BLACK);
|
|
curses.init_pair(2, curses.COLOR_CYAN, curses.COLOR_BLACK);
|
|
end
|
|
|
|
curses.curs_set(0);
|
|
curses.timeout(0);
|
|
|
|
math.randomseed(os.time());
|
|
|
|
lines = curses.LINES();
|
|
cols = curses.COLS();
|
|
|
|
xpos = {};
|
|
ypos = {};
|
|
r = lines - 4;
|
|
c = cols - 4;
|
|
for i = 0, 4 do
|
|
xpos[i] = c * math.random() + 2;
|
|
ypos[i] = r * math.random() + 2;
|
|
end
|
|
|
|
function dec(i, max)
|
|
if (curses.has_colors()) then
|
|
local z = 3 * math.random();
|
|
local c = curses.COLOR_PAIR(z);
|
|
curses.attrset(c);
|
|
if (math.floor(z) > 0) then
|
|
curses.attron(curses.A_BOLD);
|
|
end
|
|
end
|
|
|
|
if (i > 0) then return i - 1;
|
|
else return max;
|
|
end
|
|
end
|
|
|
|
i = 0;
|
|
while(true) do
|
|
x = c * math.random() + 2;
|
|
y = r * math.random() + 2;
|
|
|
|
curses.mvaddstr(y, x, ".");
|
|
|
|
curses.mvaddstr(ypos[i], xpos[i], "o");
|
|
|
|
i = dec(i, 4);
|
|
curses.mvaddstr(ypos[i], xpos[i], "O");
|
|
|
|
i = dec(i, 4);
|
|
curses.mvaddstr(ypos[i] - 1, xpos[i], "-");
|
|
curses.mvaddstr(ypos[i], xpos[i] - 1, "|.|");
|
|
curses.mvaddstr(ypos[i] + 1, xpos[i], "-");
|
|
|
|
i = dec(i, 4);
|
|
curses.mvaddstr(ypos[i] - 2, xpos[i], "-");
|
|
curses.mvaddstr(ypos[i] - 1, xpos[i] - 1, "/ \\");
|
|
curses.mvaddstr(ypos[i], xpos[i] - 2, "| O |");
|
|
curses.mvaddstr(ypos[i] + 1, xpos[i] - 1, "\\ /");
|
|
curses.mvaddstr(ypos[i] + 2, xpos[i], "-");
|
|
|
|
i = dec(i, 4);
|
|
curses.mvaddstr(ypos[i] - 2, xpos[i], " ");
|
|
curses.mvaddstr(ypos[i] - 1, xpos[i] - 1, " ");
|
|
curses.mvaddstr(ypos[i], xpos[i] - 2, " ");
|
|
curses.mvaddstr(ypos[i] + 1, xpos[i] - 1, " ");
|
|
curses.mvaddstr(ypos[i] + 2, xpos[i], " ");
|
|
|
|
|
|
xpos[i] = x;
|
|
ypos[i] = y;
|
|
|
|
local ch = curses.getch();
|
|
if (ch == string.byte('q', 1)) or (ch == string.byte('Q', 1)) then break; end
|
|
curses.refresh();
|
|
curses.napms(50);
|
|
end
|
|
|
|
curses.endwin();
|
|
|