mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	
		
			
	
	
		
			95 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			95 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								#!/usr/bin/env python
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# $Id$
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# 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 1:
							 | 
						||
| 
								 | 
							
								        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 0
							 | 
						||
| 
								 | 
							
								        elif ch == ord('s'):
							 | 
						||
| 
								 | 
							
								            stdscr.nodelay(0)
							 | 
						||
| 
								 | 
							
								        elif ch == ord(' '):
							 | 
						||
| 
								 | 
							
								            stdscr.nodelay(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        curses.napms(50)
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								curses.wrapper(main)
							 |