blob: 2399d7f4389fa07a393cb304e0a5589d5be87407 [file] [log] [blame]
Andrew M. Kuchling15c3c2b2000-12-15 00:41:48 +00001#!/usr/bin/env python
2#
3# $Id$
4#
5# somebody should probably check the randrange()s...
6
7import curses
8from random import randrange
9
10def next_j(j):
11 if j == 0:
12 j = 4
13 else:
14 j -= 1
15
16 if curses.has_colors():
17 z = randrange(0, 3)
18 color = curses.color_pair(z)
19 if z:
20 color = color | curses.A_BOLD
21 stdscr.attrset(color)
22
23 return j
24
25def main(win):
26 # we know that the first argument from curses.wrapper() is stdscr.
27 # Initialize it globally for convenience.
28 global stdscr
29 stdscr = win
30
31 if curses.has_colors():
32 bg = curses.COLOR_BLACK
33 curses.init_pair(1, curses.COLOR_BLUE, bg)
34 curses.init_pair(2, curses.COLOR_CYAN, bg)
35
36 curses.nl()
37 curses.noecho()
38 # XXX curs_set() always returns ERR
39 # curses.curs_set(0)
40 stdscr.timeout(0)
41
42 c = curses.COLS - 4
43 r = curses.LINES - 4
44 xpos = [0] * c
45 ypos = [0] * r
46 for j in range(4, -1, -1):
47 xpos[j] = randrange(0, c) + 2
48 ypos[j] = randrange(0, r) + 2
49
50 j = 0
51 while 1:
52 x = randrange(0, c) + 2
53 y = randrange(0, r) + 2
54
55 stdscr.addch(y, x, ord('.'))
56
57 stdscr.addch(ypos[j], xpos[j], ord('o'))
58
59 j = next_j(j)
60 stdscr.addch(ypos[j], xpos[j], ord('O'))
61
62 j = next_j(j)
63 stdscr.addch( ypos[j] - 1, xpos[j], ord('-'))
64 stdscr.addstr(ypos[j], xpos[j] - 1, "|.|")
65 stdscr.addch( ypos[j] + 1, xpos[j], ord('-'))
66
67 j = next_j(j)
68 stdscr.addch( ypos[j] - 2, xpos[j], ord('-'))
69 stdscr.addstr(ypos[j] - 1, xpos[j] - 1, "/ \\")
70 stdscr.addstr(ypos[j], xpos[j] - 2, "| O |")
71 stdscr.addstr(ypos[j] + 1, xpos[j] - 1, "\\ /")
72 stdscr.addch( ypos[j] + 2, xpos[j], ord('-'))
73
74 j = next_j(j)
75 stdscr.addch( ypos[j] - 2, xpos[j], ord(' '))
76 stdscr.addstr(ypos[j] - 1, xpos[j] - 1, " ")
77 stdscr.addstr(ypos[j], xpos[j] - 2, " ")
78 stdscr.addstr(ypos[j] + 1, xpos[j] - 1, " ")
79 stdscr.addch( ypos[j] + 2, xpos[j], ord(' '))
80
81 xpos[j] = x
82 ypos[j] = y
83
84 ch = stdscr.getch()
85 if ch == ord('q') or ch == ord('Q'):
86 return 0
87 elif ch == ord('s'):
88 stdscr.nodelay(0)
89 elif ch == ord(' '):
90 stdscr.nodelay(1)
91
92 curses.napms(50)
93
94curses.wrapper(main)