diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-11-05 23:30:21 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-11-05 23:52:58 -0700 |
commit | 9275c954c88cbdfc278fdcf7f89e34cdaf254acf (patch) | |
tree | 5d36b1bdc049db90cfa82a4227db649bfaef0ffb /src | |
parent | 52d73ff930e62e37586970493c3c063949ca9d67 (diff) | |
download | teliva-9275c954c88cbdfc278fdcf7f89e34cdaf254acf.tar.gz |
readme and docs
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile | 2 | ||||
-rw-r--r-- | src/hanoi.lua | 102 |
2 files changed, 1 insertions, 103 deletions
diff --git a/src/Makefile b/src/Makefile index ccf1969..36bb294 100644 --- a/src/Makefile +++ b/src/Makefile @@ -30,7 +30,7 @@ CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \ LIB_O= lauxlib.o lbaselib.o lcurseslib.o ldblib.o liolib.o lmathlib.o \ loslib.o ltablib.o lstrlib.o loadlib.o linit.o -LUA_T= lua +LUA_T= teliva LUA_O= lua.o LUAC_T= luac diff --git a/src/hanoi.lua b/src/hanoi.lua deleted file mode 100644 index ea3b1d6..0000000 --- a/src/hanoi.lua +++ /dev/null @@ -1,102 +0,0 @@ -local curses = require "curses" - - -tower = {{6, 5, 4, 3, 2}, {}, {}} - - -local function len(array) - local result = 0 - for k in pairs(array) do - result = result+1 - end - return result -end - - -local function pop(array) - return table.remove(array) -end - -local function lines(window) - local lines, cols = window:getmaxyx() - return lines -end - -local function cols(window) - local lines, cols = window:getmaxyx() - return cols -end - - -local function render_disk(window, line, col, size) - col = col-size+1 - for i=1,size do - window:attron(curses.color_pair(1)) - window:mvaddstr(line, col, " ") - window:attroff(curses.color_pair(1)) - col = col+2 - end -end - -local function render_tower(window, line, col, tower_index, tower) - window:attron(curses.A_BOLD) - window:mvaddch(line+2, col, string.char(96+tower_index)) - window:attroff(curses.A_BOLD) - window:attron(curses.color_pair(2)) - window:mvaddstr(line+1, col-6, " ") - window:attroff(curses.color_pair(2)) - for i, n in ipairs(tower) do - render_disk(window, line, col, n) - line = line - 1 - end - for i=1,5-len(tower)+1 do - window:attron(curses.color_pair(2)) - window:mvaddstr(line, col, " ") - window:attroff(curses.color_pair(2)) - line = line - 1 - end -end - - -local function render(window) - window:clear() - local lines, cols = window:getmaxyx() - local line = math.floor(lines/2) - local col = math.floor(cols/4) - for i,t in ipairs(tower) do - render_tower(window, line, i*col, i, t) - end - curses.refresh() -end - - -local function make_move(from, to) - local disk = pop(tower[from]) - table.insert(tower[to], disk) -end - - -local function update(window) - window:mvaddstr(lines(window)-2, 5, "tower to remove top disk from? ") - local from = curses.getch() - 96 - curses.refresh() - window:mvaddstr(lines(window)-1, 5, "tower to stack it on? ") - local to = curses.getch() - 96 - curses.refresh() - make_move(from, to) -end - - -local function main() - local window = curses.stdscr() - curses.init_pair(1, 0, 2) - curses.init_pair(2, 0, 8) - - while true do - render(window) - update(window) - end -end - - -main() |