symbian-qemu-0.9.1-12/python-2.6.1/Demo/curses/xmas.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 # asciixmas
       
     2 # December 1989             Larry Bartz           Indianapolis, IN
       
     3 #
       
     4 # $Id: xmas.py 46623 2006-06-03 22:59:23Z andrew.kuchling $
       
     5 #
       
     6 # I'm dreaming of an ascii character-based monochrome Christmas,
       
     7 # Just like the ones I used to know!
       
     8 # Via a full duplex communications channel,
       
     9 # At 9600 bits per second,
       
    10 # Even though it's kinda slow.
       
    11 #
       
    12 # I'm dreaming of an ascii character-based monochrome Christmas,
       
    13 # With ev'ry C program I write!
       
    14 # May your screen be merry and bright!
       
    15 # And may all your Christmases be amber or green,
       
    16 # (for reduced eyestrain and improved visibility)!
       
    17 #
       
    18 #
       
    19 # Notes on the Python version:
       
    20 # I used a couple of `try...except curses.error' to get around some functions
       
    21 # returning ERR. The errors come from using wrapping functions to fill
       
    22 # windows to the last character cell. The C version doesn't have this problem,
       
    23 # it simply ignores any return values.
       
    24 #
       
    25 
       
    26 import curses
       
    27 import sys
       
    28 
       
    29 FROMWHO = "Thomas Gellekum <tg@FreeBSD.org>"
       
    30 
       
    31 def set_color(win, color):
       
    32     if curses.has_colors():
       
    33         n = color + 1
       
    34         curses.init_pair(n, color, my_bg)
       
    35         win.attroff(curses.A_COLOR)
       
    36         win.attron(curses.color_pair(n))
       
    37 
       
    38 def unset_color(win):
       
    39     if curses.has_colors():
       
    40         win.attrset(curses.color_pair(0))
       
    41 
       
    42 def look_out(msecs):
       
    43     curses.napms(msecs)
       
    44     if stdscr.getch() != -1:
       
    45         curses.beep()
       
    46         sys.exit(0)
       
    47 
       
    48 def boxit():
       
    49     for y in range(0, 20):
       
    50         stdscr.addch(y, 7, ord('|'))
       
    51 
       
    52     for x in range(8, 80):
       
    53         stdscr.addch(19, x, ord('_'))
       
    54 
       
    55     for x in range(0, 80):
       
    56         stdscr.addch(22, x, ord('_'))
       
    57 
       
    58     return
       
    59 
       
    60 def seas():
       
    61     stdscr.addch(4, 1, ord('S'))
       
    62     stdscr.addch(6, 1, ord('E'))
       
    63     stdscr.addch(8, 1, ord('A'))
       
    64     stdscr.addch(10, 1, ord('S'))
       
    65     stdscr.addch(12, 1, ord('O'))
       
    66     stdscr.addch(14, 1, ord('N'))
       
    67     stdscr.addch(16, 1, ord("'"))
       
    68     stdscr.addch(18, 1, ord('S'))
       
    69 
       
    70     return
       
    71 
       
    72 def greet():
       
    73     stdscr.addch(3, 5, ord('G'))
       
    74     stdscr.addch(5, 5, ord('R'))
       
    75     stdscr.addch(7, 5, ord('E'))
       
    76     stdscr.addch(9, 5, ord('E'))
       
    77     stdscr.addch(11, 5, ord('T'))
       
    78     stdscr.addch(13, 5, ord('I'))
       
    79     stdscr.addch(15, 5, ord('N'))
       
    80     stdscr.addch(17, 5, ord('G'))
       
    81     stdscr.addch(19, 5, ord('S'))
       
    82 
       
    83     return
       
    84 
       
    85 def fromwho():
       
    86     stdscr.addstr(21, 13, FROMWHO)
       
    87     return
       
    88 
       
    89 def tree():
       
    90     set_color(treescrn, curses.COLOR_GREEN)
       
    91     treescrn.addch(1, 11, ord('/'))
       
    92     treescrn.addch(2, 11, ord('/'))
       
    93     treescrn.addch(3, 10, ord('/'))
       
    94     treescrn.addch(4, 9, ord('/'))
       
    95     treescrn.addch(5, 9, ord('/'))
       
    96     treescrn.addch(6, 8, ord('/'))
       
    97     treescrn.addch(7, 7, ord('/'))
       
    98     treescrn.addch(8, 6, ord('/'))
       
    99     treescrn.addch(9, 6, ord('/'))
       
   100     treescrn.addch(10, 5, ord('/'))
       
   101     treescrn.addch(11, 3, ord('/'))
       
   102     treescrn.addch(12, 2, ord('/'))
       
   103 
       
   104     treescrn.addch(1, 13, ord('\\'))
       
   105     treescrn.addch(2, 13, ord('\\'))
       
   106     treescrn.addch(3, 14, ord('\\'))
       
   107     treescrn.addch(4, 15, ord('\\'))
       
   108     treescrn.addch(5, 15, ord('\\'))
       
   109     treescrn.addch(6, 16, ord('\\'))
       
   110     treescrn.addch(7, 17, ord('\\'))
       
   111     treescrn.addch(8, 18, ord('\\'))
       
   112     treescrn.addch(9, 18, ord('\\'))
       
   113     treescrn.addch(10, 19, ord('\\'))
       
   114     treescrn.addch(11, 21, ord('\\'))
       
   115     treescrn.addch(12, 22, ord('\\'))
       
   116 
       
   117     treescrn.addch(4, 10, ord('_'))
       
   118     treescrn.addch(4, 14, ord('_'))
       
   119     treescrn.addch(8, 7, ord('_'))
       
   120     treescrn.addch(8, 17, ord('_'))
       
   121 
       
   122     treescrn.addstr(13, 0, "//////////// \\\\\\\\\\\\\\\\\\\\\\\\")
       
   123 
       
   124     treescrn.addstr(14, 11, "| |")
       
   125     treescrn.addstr(15, 11, "|_|")
       
   126 
       
   127     unset_color(treescrn)
       
   128     treescrn.refresh()
       
   129     w_del_msg.refresh()
       
   130 
       
   131     return
       
   132 
       
   133 def balls():
       
   134     treescrn.overlay(treescrn2)
       
   135 
       
   136     set_color(treescrn2, curses.COLOR_BLUE)
       
   137     treescrn2.addch(3, 9, ord('@'))
       
   138     treescrn2.addch(3, 15, ord('@'))
       
   139     treescrn2.addch(4, 8, ord('@'))
       
   140     treescrn2.addch(4, 16, ord('@'))
       
   141     treescrn2.addch(5, 7, ord('@'))
       
   142     treescrn2.addch(5, 17, ord('@'))
       
   143     treescrn2.addch(7, 6, ord('@'))
       
   144     treescrn2.addch(7, 18, ord('@'))
       
   145     treescrn2.addch(8, 5, ord('@'))
       
   146     treescrn2.addch(8, 19, ord('@'))
       
   147     treescrn2.addch(10, 4, ord('@'))
       
   148     treescrn2.addch(10, 20, ord('@'))
       
   149     treescrn2.addch(11, 2, ord('@'))
       
   150     treescrn2.addch(11, 22, ord('@'))
       
   151     treescrn2.addch(12, 1, ord('@'))
       
   152     treescrn2.addch(12, 23, ord('@'))
       
   153 
       
   154     unset_color(treescrn2)
       
   155     treescrn2.refresh()
       
   156     w_del_msg.refresh()
       
   157     return
       
   158 
       
   159 def star():
       
   160     treescrn2.attrset(curses.A_BOLD | curses.A_BLINK)
       
   161     set_color(treescrn2, curses.COLOR_YELLOW)
       
   162 
       
   163     treescrn2.addch(0, 12, ord('*'))
       
   164     treescrn2.standend()
       
   165 
       
   166     unset_color(treescrn2)
       
   167     treescrn2.refresh()
       
   168     w_del_msg.refresh()
       
   169     return
       
   170 
       
   171 def strng1():
       
   172     treescrn2.attrset(curses.A_BOLD | curses.A_BLINK)
       
   173     set_color(treescrn2, curses.COLOR_WHITE)
       
   174 
       
   175     treescrn2.addch(3, 13, ord('\''))
       
   176     treescrn2.addch(3, 12, ord(':'))
       
   177     treescrn2.addch(3, 11, ord('.'))
       
   178 
       
   179     treescrn2.attroff(curses.A_BOLD | curses.A_BLINK)
       
   180     unset_color(treescrn2)
       
   181 
       
   182     treescrn2.refresh()
       
   183     w_del_msg.refresh()
       
   184     return
       
   185 
       
   186 def strng2():
       
   187     treescrn2.attrset(curses.A_BOLD | curses.A_BLINK)
       
   188     set_color(treescrn2, curses.COLOR_WHITE)
       
   189 
       
   190     treescrn2.addch(5, 14, ord('\''))
       
   191     treescrn2.addch(5, 13, ord(':'))
       
   192     treescrn2.addch(5, 12, ord('.'))
       
   193     treescrn2.addch(5, 11, ord(','))
       
   194     treescrn2.addch(6, 10, ord('\''))
       
   195     treescrn2.addch(6, 9, ord(':'))
       
   196 
       
   197     treescrn2.attroff(curses.A_BOLD | curses.A_BLINK)
       
   198     unset_color(treescrn2)
       
   199 
       
   200     treescrn2.refresh()
       
   201     w_del_msg.refresh()
       
   202     return
       
   203 
       
   204 def strng3():
       
   205     treescrn2.attrset(curses.A_BOLD | curses.A_BLINK)
       
   206     set_color(treescrn2, curses.COLOR_WHITE)
       
   207 
       
   208     treescrn2.addch(7, 16, ord('\''))
       
   209     treescrn2.addch(7, 15, ord(':'))
       
   210     treescrn2.addch(7, 14, ord('.'))
       
   211     treescrn2.addch(7, 13, ord(','))
       
   212     treescrn2.addch(8, 12, ord('\''))
       
   213     treescrn2.addch(8, 11, ord(':'))
       
   214     treescrn2.addch(8, 10, ord('.'))
       
   215     treescrn2.addch(8, 9, ord(','))
       
   216 
       
   217     treescrn2.attroff(curses.A_BOLD | curses.A_BLINK)
       
   218     unset_color(treescrn2)
       
   219 
       
   220     treescrn2.refresh()
       
   221     w_del_msg.refresh()
       
   222     return
       
   223 
       
   224 def strng4():
       
   225     treescrn2.attrset(curses.A_BOLD | curses.A_BLINK)
       
   226     set_color(treescrn2, curses.COLOR_WHITE)
       
   227 
       
   228     treescrn2.addch(9, 17, ord('\''))
       
   229     treescrn2.addch(9, 16, ord(':'))
       
   230     treescrn2.addch(9, 15, ord('.'))
       
   231     treescrn2.addch(9, 14, ord(','))
       
   232     treescrn2.addch(10, 13, ord('\''))
       
   233     treescrn2.addch(10, 12, ord(':'))
       
   234     treescrn2.addch(10, 11, ord('.'))
       
   235     treescrn2.addch(10, 10, ord(','))
       
   236     treescrn2.addch(11, 9, ord('\''))
       
   237     treescrn2.addch(11, 8, ord(':'))
       
   238     treescrn2.addch(11, 7, ord('.'))
       
   239     treescrn2.addch(11, 6, ord(','))
       
   240     treescrn2.addch(12, 5, ord('\''))
       
   241 
       
   242     treescrn2.attroff(curses.A_BOLD | curses.A_BLINK)
       
   243     unset_color(treescrn2)
       
   244 
       
   245     treescrn2.refresh()
       
   246     w_del_msg.refresh()
       
   247     return
       
   248 
       
   249 def strng5():
       
   250     treescrn2.attrset(curses.A_BOLD | curses.A_BLINK)
       
   251     set_color(treescrn2, curses.COLOR_WHITE)
       
   252 
       
   253     treescrn2.addch(11, 19, ord('\''))
       
   254     treescrn2.addch(11, 18, ord(':'))
       
   255     treescrn2.addch(11, 17, ord('.'))
       
   256     treescrn2.addch(11, 16, ord(','))
       
   257     treescrn2.addch(12, 15, ord('\''))
       
   258     treescrn2.addch(12, 14, ord(':'))
       
   259     treescrn2.addch(12, 13, ord('.'))
       
   260     treescrn2.addch(12, 12, ord(','))
       
   261 
       
   262     treescrn2.attroff(curses.A_BOLD | curses.A_BLINK)
       
   263     unset_color(treescrn2)
       
   264 
       
   265     # save a fully lit tree
       
   266     treescrn2.overlay(treescrn)
       
   267 
       
   268     treescrn2.refresh()
       
   269     w_del_msg.refresh()
       
   270     return
       
   271 
       
   272 def blinkit():
       
   273     treescrn8.touchwin()
       
   274 
       
   275     for cycle in range(5):
       
   276         if cycle == 0:
       
   277             treescrn3.overlay(treescrn8)
       
   278             treescrn8.refresh()
       
   279             w_del_msg.refresh()
       
   280             break
       
   281         elif cycle == 1:
       
   282             treescrn4.overlay(treescrn8)
       
   283             treescrn8.refresh()
       
   284             w_del_msg.refresh()
       
   285             break
       
   286         elif cycle == 2:
       
   287             treescrn5.overlay(treescrn8)
       
   288             treescrn8.refresh()
       
   289             w_del_msg.refresh()
       
   290             break
       
   291         elif cycle == 3:
       
   292             treescrn6.overlay(treescrn8)
       
   293             treescrn8.refresh()
       
   294             w_del_msg.refresh()
       
   295             break
       
   296         elif cycle == 4:
       
   297             treescrn7.overlay(treescrn8)
       
   298             treescrn8.refresh()
       
   299             w_del_msg.refresh()
       
   300             break
       
   301 
       
   302         treescrn8.touchwin()
       
   303 
       
   304     # ALL ON
       
   305     treescrn.overlay(treescrn8)
       
   306     treescrn8.refresh()
       
   307     w_del_msg.refresh()
       
   308 
       
   309     return
       
   310 
       
   311 def deer_step(win, y, x):
       
   312     win.mvwin(y, x)
       
   313     win.refresh()
       
   314     w_del_msg.refresh()
       
   315     look_out(5)
       
   316 
       
   317 def reindeer():
       
   318     y_pos = 0
       
   319 
       
   320     for x_pos in range(70, 62, -1):
       
   321         if x_pos < 66: y_pos = 1
       
   322         for looper in range(0, 4):
       
   323             dotdeer0.addch(y_pos, x_pos, ord('.'))
       
   324             dotdeer0.refresh()
       
   325             w_del_msg.refresh()
       
   326             dotdeer0.erase()
       
   327             dotdeer0.refresh()
       
   328             w_del_msg.refresh()
       
   329             look_out(50)
       
   330 
       
   331     y_pos = 2
       
   332 
       
   333     for x_pos in range(x_pos - 1, 50, -1):
       
   334         for looper in range(0, 4):
       
   335             if x_pos < 56:
       
   336                 y_pos = 3
       
   337 
       
   338                 try:
       
   339                     stardeer0.addch(y_pos, x_pos, ord('*'))
       
   340                 except curses.error:
       
   341                     pass
       
   342                 stardeer0.refresh()
       
   343                 w_del_msg.refresh()
       
   344                 stardeer0.erase()
       
   345                 stardeer0.refresh()
       
   346                 w_del_msg.refresh()
       
   347             else:
       
   348                 dotdeer0.addch(y_pos, x_pos, ord('*'))
       
   349                 dotdeer0.refresh()
       
   350                 w_del_msg.refresh()
       
   351                 dotdeer0.erase()
       
   352                 dotdeer0.refresh()
       
   353                 w_del_msg.refresh()
       
   354 
       
   355     x_pos = 58
       
   356 
       
   357     for y_pos in range(2, 5):
       
   358         lildeer0.touchwin()
       
   359         lildeer0.refresh()
       
   360         w_del_msg.refresh()
       
   361 
       
   362         for looper in range(0, 4):
       
   363             deer_step(lildeer3, y_pos, x_pos)
       
   364             deer_step(lildeer2, y_pos, x_pos)
       
   365             deer_step(lildeer1, y_pos, x_pos)
       
   366             deer_step(lildeer2, y_pos, x_pos)
       
   367             deer_step(lildeer3, y_pos, x_pos)
       
   368 
       
   369             lildeer0.touchwin()
       
   370             lildeer0.refresh()
       
   371             w_del_msg.refresh()
       
   372 
       
   373             x_pos -= 2
       
   374 
       
   375     x_pos = 35
       
   376 
       
   377     for y_pos in range(5, 10):
       
   378 
       
   379         middeer0.touchwin()
       
   380         middeer0.refresh()
       
   381         w_del_msg.refresh()
       
   382 
       
   383         for looper in range(2):
       
   384             deer_step(middeer3, y_pos, x_pos)
       
   385             deer_step(middeer2, y_pos, x_pos)
       
   386             deer_step(middeer1, y_pos, x_pos)
       
   387             deer_step(middeer2, y_pos, x_pos)
       
   388             deer_step(middeer3, y_pos, x_pos)
       
   389 
       
   390             middeer0.touchwin()
       
   391             middeer0.refresh()
       
   392             w_del_msg.refresh()
       
   393 
       
   394             x_pos -= 3
       
   395 
       
   396     look_out(300)
       
   397 
       
   398     y_pos = 1
       
   399 
       
   400     for x_pos in range(8, 16):
       
   401         deer_step(bigdeer4, y_pos, x_pos)
       
   402         deer_step(bigdeer3, y_pos, x_pos)
       
   403         deer_step(bigdeer2, y_pos, x_pos)
       
   404         deer_step(bigdeer1, y_pos, x_pos)
       
   405         deer_step(bigdeer2, y_pos, x_pos)
       
   406         deer_step(bigdeer3, y_pos, x_pos)
       
   407         deer_step(bigdeer4, y_pos, x_pos)
       
   408         deer_step(bigdeer0, y_pos, x_pos)
       
   409 
       
   410     x_pos -= 1
       
   411 
       
   412     for looper in range(0, 6):
       
   413         deer_step(lookdeer4, y_pos, x_pos)
       
   414         deer_step(lookdeer3, y_pos, x_pos)
       
   415         deer_step(lookdeer2, y_pos, x_pos)
       
   416         deer_step(lookdeer1, y_pos, x_pos)
       
   417         deer_step(lookdeer2, y_pos, x_pos)
       
   418         deer_step(lookdeer3, y_pos, x_pos)
       
   419         deer_step(lookdeer4, y_pos, x_pos)
       
   420 
       
   421     deer_step(lookdeer0, y_pos, x_pos)
       
   422 
       
   423     for y_pos in range(y_pos, 10):
       
   424         for looper in range(0, 2):
       
   425             deer_step(bigdeer4, y_pos, x_pos)
       
   426             deer_step(bigdeer3, y_pos, x_pos)
       
   427             deer_step(bigdeer2, y_pos, x_pos)
       
   428             deer_step(bigdeer1, y_pos, x_pos)
       
   429             deer_step(bigdeer2, y_pos, x_pos)
       
   430             deer_step(bigdeer3, y_pos, x_pos)
       
   431             deer_step(bigdeer4, y_pos, x_pos)
       
   432         deer_step(bigdeer0, y_pos, x_pos)
       
   433 
       
   434     y_pos -= 1
       
   435 
       
   436     deer_step(lookdeer3, y_pos, x_pos)
       
   437     return
       
   438 
       
   439 def main(win):
       
   440     global stdscr
       
   441     stdscr = win
       
   442 
       
   443     global my_bg, y_pos, x_pos
       
   444     global treescrn, treescrn2, treescrn3, treescrn4
       
   445     global treescrn5, treescrn6, treescrn7, treescrn8
       
   446     global dotdeer0, stardeer0
       
   447     global lildeer0, lildeer1, lildeer2, lildeer3
       
   448     global middeer0, middeer1, middeer2, middeer3
       
   449     global bigdeer0, bigdeer1, bigdeer2, bigdeer3, bigdeer4
       
   450     global lookdeer0, lookdeer1, lookdeer2, lookdeer3, lookdeer4
       
   451     global w_holiday, w_del_msg
       
   452 
       
   453     my_bg = curses.COLOR_BLACK
       
   454     # curses.curs_set(0)
       
   455 
       
   456     treescrn = curses.newwin(16, 27, 3, 53)
       
   457     treescrn2 = curses.newwin(16, 27, 3, 53)
       
   458     treescrn3 = curses.newwin(16, 27, 3, 53)
       
   459     treescrn4 = curses.newwin(16, 27, 3, 53)
       
   460     treescrn5 = curses.newwin(16, 27, 3, 53)
       
   461     treescrn6 = curses.newwin(16, 27, 3, 53)
       
   462     treescrn7 = curses.newwin(16, 27, 3, 53)
       
   463     treescrn8 = curses.newwin(16, 27, 3, 53)
       
   464 
       
   465     dotdeer0 = curses.newwin(3, 71, 0, 8)
       
   466 
       
   467     stardeer0 = curses.newwin(4, 56, 0, 8)
       
   468 
       
   469     lildeer0 = curses.newwin(7, 53, 0, 8)
       
   470     lildeer1 = curses.newwin(2, 4, 0, 0)
       
   471     lildeer2 = curses.newwin(2, 4, 0, 0)
       
   472     lildeer3 = curses.newwin(2, 4, 0, 0)
       
   473 
       
   474     middeer0 = curses.newwin(15, 42, 0, 8)
       
   475     middeer1 = curses.newwin(3, 7, 0, 0)
       
   476     middeer2 = curses.newwin(3, 7, 0, 0)
       
   477     middeer3 = curses.newwin(3, 7, 0, 0)
       
   478 
       
   479     bigdeer0 = curses.newwin(10, 23, 0, 0)
       
   480     bigdeer1 = curses.newwin(10, 23, 0, 0)
       
   481     bigdeer2 = curses.newwin(10, 23, 0, 0)
       
   482     bigdeer3 = curses.newwin(10, 23, 0, 0)
       
   483     bigdeer4 = curses.newwin(10, 23, 0, 0)
       
   484 
       
   485     lookdeer0 = curses.newwin(10, 25, 0, 0)
       
   486     lookdeer1 = curses.newwin(10, 25, 0, 0)
       
   487     lookdeer2 = curses.newwin(10, 25, 0, 0)
       
   488     lookdeer3 = curses.newwin(10, 25, 0, 0)
       
   489     lookdeer4 = curses.newwin(10, 25, 0, 0)
       
   490 
       
   491     w_holiday = curses.newwin(1, 27, 3, 27)
       
   492 
       
   493     w_del_msg = curses.newwin(1, 20, 23, 60)
       
   494 
       
   495     try:
       
   496         w_del_msg.addstr(0, 0, "Hit any key to quit")
       
   497     except curses.error:
       
   498         pass
       
   499 
       
   500     try:
       
   501         w_holiday.addstr(0, 0, "H A P P Y  H O L I D A Y S")
       
   502     except curses.error:
       
   503         pass
       
   504 
       
   505     # set up the windows for our various reindeer
       
   506     lildeer1.addch(0, 0, ord('V'))
       
   507     lildeer1.addch(1, 0, ord('@'))
       
   508     lildeer1.addch(1, 1, ord('<'))
       
   509     lildeer1.addch(1, 2, ord('>'))
       
   510     try:
       
   511         lildeer1.addch(1, 3, ord('~'))
       
   512     except curses.error:
       
   513         pass
       
   514 
       
   515     lildeer2.addch(0, 0, ord('V'))
       
   516     lildeer2.addch(1, 0, ord('@'))
       
   517     lildeer2.addch(1, 1, ord('|'))
       
   518     lildeer2.addch(1, 2, ord('|'))
       
   519     try:
       
   520         lildeer2.addch(1, 3, ord('~'))
       
   521     except curses.error:
       
   522         pass
       
   523 
       
   524     lildeer3.addch(0, 0, ord('V'))
       
   525     lildeer3.addch(1, 0, ord('@'))
       
   526     lildeer3.addch(1, 1, ord('>'))
       
   527     lildeer3.addch(1, 2, ord('<'))
       
   528     try:
       
   529         lildeer2.addch(1, 3, ord('~'))  # XXX
       
   530     except curses.error:
       
   531         pass
       
   532 
       
   533     middeer1.addch(0, 2, ord('y'))
       
   534     middeer1.addch(0, 3, ord('y'))
       
   535     middeer1.addch(1, 2, ord('0'))
       
   536     middeer1.addch(1, 3, ord('('))
       
   537     middeer1.addch(1, 4, ord('='))
       
   538     middeer1.addch(1, 5, ord(')'))
       
   539     middeer1.addch(1, 6, ord('~'))
       
   540     middeer1.addch(2, 3, ord('\\'))
       
   541     middeer1.addch(2, 5, ord('/'))
       
   542 
       
   543     middeer2.addch(0, 2, ord('y'))
       
   544     middeer2.addch(0, 3, ord('y'))
       
   545     middeer2.addch(1, 2, ord('0'))
       
   546     middeer2.addch(1, 3, ord('('))
       
   547     middeer2.addch(1, 4, ord('='))
       
   548     middeer2.addch(1, 5, ord(')'))
       
   549     middeer2.addch(1, 6, ord('~'))
       
   550     middeer2.addch(2, 3, ord('|'))
       
   551     middeer2.addch(2, 5, ord('|'))
       
   552 
       
   553     middeer3.addch(0, 2, ord('y'))
       
   554     middeer3.addch(0, 3, ord('y'))
       
   555     middeer3.addch(1, 2, ord('0'))
       
   556     middeer3.addch(1, 3, ord('('))
       
   557     middeer3.addch(1, 4, ord('='))
       
   558     middeer3.addch(1, 5, ord(')'))
       
   559     middeer3.addch(1, 6, ord('~'))
       
   560     middeer3.addch(2, 3, ord('/'))
       
   561     middeer3.addch(2, 5, ord('\\'))
       
   562 
       
   563     bigdeer1.addch(0, 17, ord('\\'))
       
   564     bigdeer1.addch(0, 18, ord('/'))
       
   565     bigdeer1.addch(0, 19, ord('\\'))
       
   566     bigdeer1.addch(0, 20, ord('/'))
       
   567     bigdeer1.addch(1, 18, ord('\\'))
       
   568     bigdeer1.addch(1, 20, ord('/'))
       
   569     bigdeer1.addch(2, 19, ord('|'))
       
   570     bigdeer1.addch(2, 20, ord('_'))
       
   571     bigdeer1.addch(3, 18, ord('/'))
       
   572     bigdeer1.addch(3, 19, ord('^'))
       
   573     bigdeer1.addch(3, 20, ord('0'))
       
   574     bigdeer1.addch(3, 21, ord('\\'))
       
   575     bigdeer1.addch(4, 17, ord('/'))
       
   576     bigdeer1.addch(4, 18, ord('/'))
       
   577     bigdeer1.addch(4, 19, ord('\\'))
       
   578     bigdeer1.addch(4, 22, ord('\\'))
       
   579     bigdeer1.addstr(5, 7, "^~~~~~~~~//  ~~U")
       
   580     bigdeer1.addstr(6, 7, "( \\_____( /")       # ))
       
   581     bigdeer1.addstr(7, 8, "( )    /")
       
   582     bigdeer1.addstr(8, 9, "\\\\   /")
       
   583     bigdeer1.addstr(9, 11, "\\>/>")
       
   584 
       
   585     bigdeer2.addch(0, 17, ord('\\'))
       
   586     bigdeer2.addch(0, 18, ord('/'))
       
   587     bigdeer2.addch(0, 19, ord('\\'))
       
   588     bigdeer2.addch(0, 20, ord('/'))
       
   589     bigdeer2.addch(1, 18, ord('\\'))
       
   590     bigdeer2.addch(1, 20, ord('/'))
       
   591     bigdeer2.addch(2, 19, ord('|'))
       
   592     bigdeer2.addch(2, 20, ord('_'))
       
   593     bigdeer2.addch(3, 18, ord('/'))
       
   594     bigdeer2.addch(3, 19, ord('^'))
       
   595     bigdeer2.addch(3, 20, ord('0'))
       
   596     bigdeer2.addch(3, 21, ord('\\'))
       
   597     bigdeer2.addch(4, 17, ord('/'))
       
   598     bigdeer2.addch(4, 18, ord('/'))
       
   599     bigdeer2.addch(4, 19, ord('\\'))
       
   600     bigdeer2.addch(4, 22, ord('\\'))
       
   601     bigdeer2.addstr(5, 7, "^~~~~~~~~//  ~~U")
       
   602     bigdeer2.addstr(6, 7, "(( )____( /")        # ))
       
   603     bigdeer2.addstr(7, 7, "( /    |")
       
   604     bigdeer2.addstr(8, 8, "\\/    |")
       
   605     bigdeer2.addstr(9, 9, "|>   |>")
       
   606 
       
   607     bigdeer3.addch(0, 17, ord('\\'))
       
   608     bigdeer3.addch(0, 18, ord('/'))
       
   609     bigdeer3.addch(0, 19, ord('\\'))
       
   610     bigdeer3.addch(0, 20, ord('/'))
       
   611     bigdeer3.addch(1, 18, ord('\\'))
       
   612     bigdeer3.addch(1, 20, ord('/'))
       
   613     bigdeer3.addch(2, 19, ord('|'))
       
   614     bigdeer3.addch(2, 20, ord('_'))
       
   615     bigdeer3.addch(3, 18, ord('/'))
       
   616     bigdeer3.addch(3, 19, ord('^'))
       
   617     bigdeer3.addch(3, 20, ord('0'))
       
   618     bigdeer3.addch(3, 21, ord('\\'))
       
   619     bigdeer3.addch(4, 17, ord('/'))
       
   620     bigdeer3.addch(4, 18, ord('/'))
       
   621     bigdeer3.addch(4, 19, ord('\\'))
       
   622     bigdeer3.addch(4, 22, ord('\\'))
       
   623     bigdeer3.addstr(5, 7, "^~~~~~~~~//  ~~U")
       
   624     bigdeer3.addstr(6, 6, "( ()_____( /")       # ))
       
   625     bigdeer3.addstr(7, 6, "/ /       /")
       
   626     bigdeer3.addstr(8, 5, "|/          \\")
       
   627     bigdeer3.addstr(9, 5, "/>           \\>")
       
   628 
       
   629     bigdeer4.addch(0, 17, ord('\\'))
       
   630     bigdeer4.addch(0, 18, ord('/'))
       
   631     bigdeer4.addch(0, 19, ord('\\'))
       
   632     bigdeer4.addch(0, 20, ord('/'))
       
   633     bigdeer4.addch(1, 18, ord('\\'))
       
   634     bigdeer4.addch(1, 20, ord('/'))
       
   635     bigdeer4.addch(2, 19, ord('|'))
       
   636     bigdeer4.addch(2, 20, ord('_'))
       
   637     bigdeer4.addch(3, 18, ord('/'))
       
   638     bigdeer4.addch(3, 19, ord('^'))
       
   639     bigdeer4.addch(3, 20, ord('0'))
       
   640     bigdeer4.addch(3, 21, ord('\\'))
       
   641     bigdeer4.addch(4, 17, ord('/'))
       
   642     bigdeer4.addch(4, 18, ord('/'))
       
   643     bigdeer4.addch(4, 19, ord('\\'))
       
   644     bigdeer4.addch(4, 22, ord('\\'))
       
   645     bigdeer4.addstr(5, 7, "^~~~~~~~~//  ~~U")
       
   646     bigdeer4.addstr(6, 6, "( )______( /")       # )
       
   647     bigdeer4.addstr(7, 5, "(/          \\")     # )
       
   648     bigdeer4.addstr(8, 0, "v___=             ----^")
       
   649 
       
   650     lookdeer1.addstr(0, 16, "\\/     \\/")
       
   651     lookdeer1.addstr(1, 17, "\\Y/ \\Y/")
       
   652     lookdeer1.addstr(2, 19, "\\=/")
       
   653     lookdeer1.addstr(3, 17, "^\\o o/^")
       
   654     lookdeer1.addstr(4, 17, "//( )")
       
   655     lookdeer1.addstr(5, 7, "^~~~~~~~~// \\O/")
       
   656     lookdeer1.addstr(6, 7, "( \\_____( /")      # ))
       
   657     lookdeer1.addstr(7, 8, "( )    /")
       
   658     lookdeer1.addstr(8, 9, "\\\\   /")
       
   659     lookdeer1.addstr(9, 11, "\\>/>")
       
   660 
       
   661     lookdeer2.addstr(0, 16, "\\/     \\/")
       
   662     lookdeer2.addstr(1, 17, "\\Y/ \\Y/")
       
   663     lookdeer2.addstr(2, 19, "\\=/")
       
   664     lookdeer2.addstr(3, 17, "^\\o o/^")
       
   665     lookdeer2.addstr(4, 17, "//( )")
       
   666     lookdeer2.addstr(5, 7, "^~~~~~~~~// \\O/")
       
   667     lookdeer2.addstr(6, 7, "(( )____( /")       # ))
       
   668     lookdeer2.addstr(7, 7, "( /    |")
       
   669     lookdeer2.addstr(8, 8, "\\/    |")
       
   670     lookdeer2.addstr(9, 9, "|>   |>")
       
   671 
       
   672     lookdeer3.addstr(0, 16, "\\/     \\/")
       
   673     lookdeer3.addstr(1, 17, "\\Y/ \\Y/")
       
   674     lookdeer3.addstr(2, 19, "\\=/")
       
   675     lookdeer3.addstr(3, 17, "^\\o o/^")
       
   676     lookdeer3.addstr(4, 17, "//( )")
       
   677     lookdeer3.addstr(5, 7, "^~~~~~~~~// \\O/")
       
   678     lookdeer3.addstr(6, 6, "( ()_____( /")      # ))
       
   679     lookdeer3.addstr(7, 6, "/ /       /")
       
   680     lookdeer3.addstr(8, 5, "|/          \\")
       
   681     lookdeer3.addstr(9, 5, "/>           \\>")
       
   682 
       
   683     lookdeer4.addstr(0, 16, "\\/     \\/")
       
   684     lookdeer4.addstr(1, 17, "\\Y/ \\Y/")
       
   685     lookdeer4.addstr(2, 19, "\\=/")
       
   686     lookdeer4.addstr(3, 17, "^\\o o/^")
       
   687     lookdeer4.addstr(4, 17, "//( )")
       
   688     lookdeer4.addstr(5, 7, "^~~~~~~~~// \\O/")
       
   689     lookdeer4.addstr(6, 6, "( )______( /")      # )
       
   690     lookdeer4.addstr(7, 5, "(/          \\")    # )
       
   691     lookdeer4.addstr(8, 0, "v___=             ----^")
       
   692 
       
   693     ###############################################
       
   694     curses.cbreak()
       
   695     stdscr.nodelay(1)
       
   696 
       
   697     while 1:
       
   698         stdscr.clear()
       
   699         treescrn.erase()
       
   700         w_del_msg.touchwin()
       
   701         treescrn.touchwin()
       
   702         treescrn2.erase()
       
   703         treescrn2.touchwin()
       
   704         treescrn8.erase()
       
   705         treescrn8.touchwin()
       
   706         stdscr.refresh()
       
   707         look_out(150)
       
   708         boxit()
       
   709         stdscr.refresh()
       
   710         look_out(150)
       
   711         seas()
       
   712         stdscr.refresh()
       
   713         greet()
       
   714         stdscr.refresh()
       
   715         look_out(150)
       
   716         fromwho()
       
   717         stdscr.refresh()
       
   718         look_out(150)
       
   719         tree()
       
   720         look_out(150)
       
   721         balls()
       
   722         look_out(150)
       
   723         star()
       
   724         look_out(150)
       
   725         strng1()
       
   726         strng2()
       
   727         strng3()
       
   728         strng4()
       
   729         strng5()
       
   730 
       
   731         # set up the windows for our blinking trees
       
   732         #
       
   733         # treescrn3
       
   734         treescrn.overlay(treescrn3)
       
   735 
       
   736         # balls
       
   737         treescrn3.addch(4, 18, ord(' '))
       
   738         treescrn3.addch(7, 6, ord(' '))
       
   739         treescrn3.addch(8, 19, ord(' '))
       
   740         treescrn3.addch(11, 22, ord(' '))
       
   741 
       
   742         # star
       
   743         treescrn3.addch(0, 12, ord('*'))
       
   744 
       
   745         # strng1
       
   746         treescrn3.addch(3, 11, ord(' '))
       
   747 
       
   748         # strng2
       
   749         treescrn3.addch(5, 13, ord(' '))
       
   750         treescrn3.addch(6, 10, ord(' '))
       
   751 
       
   752         # strng3
       
   753         treescrn3.addch(7, 16, ord(' '))
       
   754         treescrn3.addch(7, 14, ord(' '))
       
   755 
       
   756         # strng4
       
   757         treescrn3.addch(10, 13, ord(' '))
       
   758         treescrn3.addch(10, 10, ord(' '))
       
   759         treescrn3.addch(11, 8, ord(' '))
       
   760 
       
   761         # strng5
       
   762         treescrn3.addch(11, 18, ord(' '))
       
   763         treescrn3.addch(12, 13, ord(' '))
       
   764 
       
   765         # treescrn4
       
   766         treescrn.overlay(treescrn4)
       
   767 
       
   768         # balls
       
   769         treescrn4.addch(3, 9, ord(' '))
       
   770         treescrn4.addch(4, 16, ord(' '))
       
   771         treescrn4.addch(7, 6, ord(' '))
       
   772         treescrn4.addch(8, 19, ord(' '))
       
   773         treescrn4.addch(11, 2, ord(' '))
       
   774         treescrn4.addch(12, 23, ord(' '))
       
   775 
       
   776         # star
       
   777         treescrn4.standout()
       
   778         treescrn4.addch(0, 12, ord('*'))
       
   779         treescrn4.standend()
       
   780 
       
   781         # strng1
       
   782         treescrn4.addch(3, 13, ord(' '))
       
   783 
       
   784         # strng2
       
   785 
       
   786         # strng3
       
   787         treescrn4.addch(7, 15, ord(' '))
       
   788         treescrn4.addch(8, 11, ord(' '))
       
   789 
       
   790         # strng4
       
   791         treescrn4.addch(9, 16, ord(' '))
       
   792         treescrn4.addch(10, 12, ord(' '))
       
   793         treescrn4.addch(11, 8, ord(' '))
       
   794 
       
   795         # strng5
       
   796         treescrn4.addch(11, 18, ord(' '))
       
   797         treescrn4.addch(12, 14, ord(' '))
       
   798 
       
   799         # treescrn5
       
   800         treescrn.overlay(treescrn5)
       
   801 
       
   802         # balls
       
   803         treescrn5.addch(3, 15, ord(' '))
       
   804         treescrn5.addch(10, 20, ord(' '))
       
   805         treescrn5.addch(12, 1, ord(' '))
       
   806 
       
   807         # star
       
   808         treescrn5.addch(0, 12, ord(' '))
       
   809 
       
   810         # strng1
       
   811         treescrn5.addch(3, 11, ord(' '))
       
   812 
       
   813         # strng2
       
   814         treescrn5.addch(5, 12, ord(' '))
       
   815 
       
   816         # strng3
       
   817         treescrn5.addch(7, 14, ord(' '))
       
   818         treescrn5.addch(8, 10, ord(' '))
       
   819 
       
   820         # strng4
       
   821         treescrn5.addch(9, 15, ord(' '))
       
   822         treescrn5.addch(10, 11, ord(' '))
       
   823         treescrn5.addch(11, 7, ord(' '))
       
   824 
       
   825         # strng5
       
   826         treescrn5.addch(11, 17, ord(' '))
       
   827         treescrn5.addch(12, 13, ord(' '))
       
   828 
       
   829         # treescrn6
       
   830         treescrn.overlay(treescrn6)
       
   831 
       
   832         # balls
       
   833         treescrn6.addch(6, 7, ord(' '))
       
   834         treescrn6.addch(7, 18, ord(' '))
       
   835         treescrn6.addch(10, 4, ord(' '))
       
   836         treescrn6.addch(11, 23, ord(' '))
       
   837 
       
   838         # star
       
   839         treescrn6.standout()
       
   840         treescrn6.addch(0, 12, ord('*'))
       
   841         treescrn6.standend()
       
   842 
       
   843         # strng1
       
   844 
       
   845         # strng2
       
   846         treescrn6.addch(5, 11, ord(' '))
       
   847 
       
   848         # strng3
       
   849         treescrn6.addch(7, 13, ord(' '))
       
   850         treescrn6.addch(8, 9, ord(' '))
       
   851 
       
   852         # strng4
       
   853         treescrn6.addch(9, 14, ord(' '))
       
   854         treescrn6.addch(10, 10, ord(' '))
       
   855         treescrn6.addch(11, 6, ord(' '))
       
   856 
       
   857         # strng5
       
   858         treescrn6.addch(11, 16, ord(' '))
       
   859         treescrn6.addch(12, 12, ord(' '))
       
   860 
       
   861         #  treescrn7
       
   862 
       
   863         treescrn.overlay(treescrn7)
       
   864 
       
   865         # balls
       
   866         treescrn7.addch(3, 15, ord(' '))
       
   867         treescrn7.addch(6, 7, ord(' '))
       
   868         treescrn7.addch(7, 18, ord(' '))
       
   869         treescrn7.addch(10, 4, ord(' '))
       
   870         treescrn7.addch(11, 22, ord(' '))
       
   871 
       
   872         # star
       
   873         treescrn7.addch(0, 12, ord('*'))
       
   874 
       
   875         # strng1
       
   876         treescrn7.addch(3, 12, ord(' '))
       
   877 
       
   878         # strng2
       
   879         treescrn7.addch(5, 13, ord(' '))
       
   880         treescrn7.addch(6, 9, ord(' '))
       
   881 
       
   882         # strng3
       
   883         treescrn7.addch(7, 15, ord(' '))
       
   884         treescrn7.addch(8, 11, ord(' '))
       
   885 
       
   886         # strng4
       
   887         treescrn7.addch(9, 16, ord(' '))
       
   888         treescrn7.addch(10, 12, ord(' '))
       
   889         treescrn7.addch(11, 8, ord(' '))
       
   890 
       
   891         # strng5
       
   892         treescrn7.addch(11, 18, ord(' '))
       
   893         treescrn7.addch(12, 14, ord(' '))
       
   894 
       
   895         look_out(150)
       
   896         reindeer()
       
   897 
       
   898         w_holiday.touchwin()
       
   899         w_holiday.refresh()
       
   900         w_del_msg.refresh()
       
   901 
       
   902         look_out(500)
       
   903         for i in range(0, 20):
       
   904             blinkit()
       
   905 
       
   906 curses.wrapper(main)