symbian-qemu-0.9.1-12/python-2.6.1/Demo/curses/rain.py
changeset 1 2fb8b9db1c86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/python-2.6.1/Demo/curses/rain.py	Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,94 @@
+#!/usr/bin/env 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)