about summary refs log tree commit diff stats
path: root/hanoi.teliva
diff options
context:
space:
mode:
Diffstat (limited to 'hanoi.teliva')
-rw-r--r--hanoi.teliva37
1 files changed, 19 insertions, 18 deletions
diff --git a/hanoi.teliva b/hanoi.teliva
index 47fde20..1277e36 100644
--- a/hanoi.teliva
+++ b/hanoi.teliva
@@ -1,8 +1,8 @@
-local curses = require "curses"
+window = curses.stdscr()
 
 tower = {{6, 5, 4, 3, 2}, {}, {}}
 
-local function len(array)
+function len(array)
   local result = 0
   for k in pairs(array) do
     result = result+1
@@ -10,22 +10,22 @@ local function len(array)
   return result
 end
 
-local function pop(array)
+function pop(array)
   return table.remove(array)
 end
 
-local function lines(window)
+function lines(window)
   local lines, cols = window:getmaxyx()
   return lines
 end
 
-local function cols(window)
+function cols(window)
   local lines, cols = window:getmaxyx()
   return cols
 end
 
 
-local function render_disk(window, line, col, size)
+function render_disk(window, line, col, size)
   col = col-size+1
   for i=1,size do
     window:attron(curses.color_pair(size))
@@ -35,7 +35,7 @@ local function render_disk(window, line, col, size)
   end
 end
 
-local function render_tower(window, line, col, tower_index, tower)
+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)
@@ -54,7 +54,7 @@ local function render_tower(window, line, col, tower_index, tower)
   end
 end
 
-local function render(window)
+function render(window)
   window:clear()
   local lines, cols = window:getmaxyx()
   local line = math.floor(lines/2)
@@ -66,12 +66,12 @@ local function render(window)
 end
 
 
-local function make_move(from, to)
+function make_move(from, to)
   local disk = pop(tower[from])
   table.insert(tower[to], disk)
 end
 
-local function update(window)
+function update(window)
   window:mvaddstr(lines(window)-2, 5, "tower to remove top disk from? ")
   local from = curses.getch() - 96
   window:mvaddstr(lines(window)-1, 5, "tower to stack it on? ")
@@ -80,13 +80,14 @@ local function update(window)
 end
 
 
-local window = curses.stdscr()
-for i=1,7 do
-  curses.init_pair(i, 0, i)
-end
+function main()
+  for i=1,7 do
+    curses.init_pair(i, 0, i)
+  end
 
-while true do
-  render(window)
-  update(window)
+  while true do
+    render(window)
+    update(window)
+  end
 end
-
+main()