summaryrefslogtreecommitdiff
path: root/sys/src/cmd/python/Demo/curses/rain.py
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
commit458120dd40db6b4df55a4e96b650e16798ef06a0 (patch)
tree8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/src/cmd/python/Demo/curses/rain.py
parent3a742c699f6806c1145aea5149bf15de15a0afd7 (diff)
add hg and python
Diffstat (limited to 'sys/src/cmd/python/Demo/curses/rain.py')
-rwxr-xr-xsys/src/cmd/python/Demo/curses/rain.py94
1 files changed, 94 insertions, 0 deletions
diff --git a/sys/src/cmd/python/Demo/curses/rain.py b/sys/src/cmd/python/Demo/curses/rain.py
new file mode 100755
index 000000000..c0a5fc122
--- /dev/null
+++ b/sys/src/cmd/python/Demo/curses/rain.py
@@ -0,0 +1,94 @@
+#!/bin/python
+#
+# $Id: rain.py 46625 2006-06-03 23:02:15Z andrew.kuchling $
+#
+# somebody should probably check the randrange()s...
+
+import curses
+from random import randrange
+
+def next_j(j):
+ if j == 0:
+ j = 4
+ else:
+ j -= 1
+
+ if curses.has_colors():
+ z = randrange(0, 3)
+ color = curses.color_pair(z)
+ if z:
+ color = color | curses.A_BOLD
+ stdscr.attrset(color)
+
+ return j
+
+def main(win):
+ # we know that the first argument from curses.wrapper() is stdscr.
+ # Initialize it globally for convenience.
+ global stdscr
+ stdscr = win
+
+ if curses.has_colors():
+ bg = curses.COLOR_BLACK
+ curses.init_pair(1, curses.COLOR_BLUE, bg)
+ curses.init_pair(2, curses.COLOR_CYAN, bg)
+
+ curses.nl()
+ curses.noecho()
+ # XXX curs_set() always returns ERR
+ # curses.curs_set(0)
+ stdscr.timeout(0)
+
+ c = curses.COLS - 4
+ r = curses.LINES - 4
+ xpos = [0] * c
+ ypos = [0] * r
+ for j in range(4, -1, -1):
+ xpos[j] = randrange(0, c) + 2
+ ypos[j] = randrange(0, r) + 2
+
+ j = 0
+ while True:
+ x = randrange(0, c) + 2
+ y = randrange(0, r) + 2
+
+ stdscr.addch(y, x, ord('.'))
+
+ stdscr.addch(ypos[j], xpos[j], ord('o'))
+
+ j = next_j(j)
+ stdscr.addch(ypos[j], xpos[j], ord('O'))
+
+ j = next_j(j)
+ stdscr.addch( ypos[j] - 1, xpos[j], ord('-'))
+ stdscr.addstr(ypos[j], xpos[j] - 1, "|.|")
+ stdscr.addch( ypos[j] + 1, xpos[j], ord('-'))
+
+ j = next_j(j)
+ stdscr.addch( ypos[j] - 2, xpos[j], ord('-'))
+ stdscr.addstr(ypos[j] - 1, xpos[j] - 1, "/ \\")
+ stdscr.addstr(ypos[j], xpos[j] - 2, "| O |")
+ stdscr.addstr(ypos[j] + 1, xpos[j] - 1, "\\ /")
+ stdscr.addch( ypos[j] + 2, xpos[j], ord('-'))
+
+ j = next_j(j)
+ stdscr.addch( ypos[j] - 2, xpos[j], ord(' '))
+ stdscr.addstr(ypos[j] - 1, xpos[j] - 1, " ")
+ stdscr.addstr(ypos[j], xpos[j] - 2, " ")
+ stdscr.addstr(ypos[j] + 1, xpos[j] - 1, " ")
+ stdscr.addch( ypos[j] + 2, xpos[j], ord(' '))
+
+ xpos[j] = x
+ ypos[j] = y
+
+ ch = stdscr.getch()
+ if ch == ord('q') or ch == ord('Q'):
+ return
+ elif ch == ord('s'):
+ stdscr.nodelay(0)
+ elif ch == ord(' '):
+ stdscr.nodelay(1)
+
+ curses.napms(50)
+
+curses.wrapper(main)