Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
93a69b9a
Commit
93a69b9a
authored
Dec 21, 2000
by
Andrew M. Kuchling
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Another demo from Thomas Gellekum (seasonally-themed, too)
parent
e4301549
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
907 additions
and
0 deletions
+907
-0
Demo/curses/README
Demo/curses/README
+1
-0
Demo/curses/xmas.py
Demo/curses/xmas.py
+906
-0
No files found.
Demo/curses/README
View file @
93a69b9a
...
...
@@ -14,6 +14,7 @@ ncurses.py -- currently only a panels demo
XXX this won't work until panel support is checked in
rain.py -- raindrops keep falling on my desktop
tclock.py -- ASCII clock, by Howard Jones
xmas.py -- I'm dreaming of an ASCII christmas
Please send bugfixes and new contributions to me or, even better,
submit them to the Python Bug Tracker on SourceForge
...
...
Demo/curses/xmas.py
0 → 100644
View file @
93a69b9a
# asciixmas
# December 1989 Larry Bartz Indianapolis, IN
#
# $Id$
#
# I'm dreaming of an ascii character-based monochrome Christmas,
# Just like the one's I used to know!
# Via a full duplex communications channel,
# At 9600 bits per second,
# Even though it's kinda slow.
#
# I'm dreaming of an ascii character-based monochrome Christmas,
# With ev'ry C program I write!
# May your screen be merry and bright!
# And may all your Christmases be amber or green,
# (for reduced eyestrain and improved visibility)!
#
#
# Notes on the Python version:
# I used a couple of `try...except curses.error' to get around some functions
# returning ERR. The errors come from using wrapping functions to fill
# windows to the last character cell. The C version doesn't have this problem,
# it simply ignores any return values.
#
import
curses
import
sys
FROMWHO
=
"Thomas Gellekum <tg@FreeBSD.org>"
def
set_color
(
win
,
color
):
if
curses
.
has_colors
():
n
=
color
+
1
curses
.
init_pair
(
n
,
color
,
my_bg
)
win
.
attroff
(
curses
.
A_COLOR
)
win
.
attron
(
curses
.
color_pair
(
n
))
def
unset_color
(
win
):
if
curses
.
has_colors
():
win
.
attrset
(
curses
.
color_pair
(
0
))
def
look_out
(
msecs
):
curses
.
napms
(
msecs
)
if
stdscr
.
getch
()
!=
-
1
:
curses
.
beep
()
sys
.
exit
(
0
)
def
boxit
():
for
y
in
range
(
0
,
20
):
stdscr
.
addch
(
y
,
7
,
ord
(
'|'
))
for
x
in
range
(
8
,
80
):
stdscr
.
addch
(
19
,
x
,
ord
(
'_'
))
for
x
in
range
(
0
,
80
):
stdscr
.
addch
(
22
,
x
,
ord
(
'_'
))
return
def
seas
():
stdscr
.
addch
(
4
,
1
,
ord
(
'S'
))
stdscr
.
addch
(
6
,
1
,
ord
(
'E'
))
stdscr
.
addch
(
8
,
1
,
ord
(
'A'
))
stdscr
.
addch
(
10
,
1
,
ord
(
'S'
))
stdscr
.
addch
(
12
,
1
,
ord
(
'O'
))
stdscr
.
addch
(
14
,
1
,
ord
(
'N'
))
stdscr
.
addch
(
16
,
1
,
ord
(
"'"
))
stdscr
.
addch
(
18
,
1
,
ord
(
'S'
))
return
def
greet
():
stdscr
.
addch
(
3
,
5
,
ord
(
'G'
))
stdscr
.
addch
(
5
,
5
,
ord
(
'R'
))
stdscr
.
addch
(
7
,
5
,
ord
(
'E'
))
stdscr
.
addch
(
9
,
5
,
ord
(
'E'
))
stdscr
.
addch
(
11
,
5
,
ord
(
'T'
))
stdscr
.
addch
(
13
,
5
,
ord
(
'I'
))
stdscr
.
addch
(
15
,
5
,
ord
(
'N'
))
stdscr
.
addch
(
17
,
5
,
ord
(
'G'
))
stdscr
.
addch
(
19
,
5
,
ord
(
'S'
))
return
def
fromwho
():
stdscr
.
addstr
(
21
,
13
,
FROMWHO
)
return
def
tree
():
set_color
(
treescrn
,
curses
.
COLOR_GREEN
)
treescrn
.
addch
(
1
,
11
,
ord
(
'/'
))
treescrn
.
addch
(
2
,
11
,
ord
(
'/'
))
treescrn
.
addch
(
3
,
10
,
ord
(
'/'
))
treescrn
.
addch
(
4
,
9
,
ord
(
'/'
))
treescrn
.
addch
(
5
,
9
,
ord
(
'/'
))
treescrn
.
addch
(
6
,
8
,
ord
(
'/'
))
treescrn
.
addch
(
7
,
7
,
ord
(
'/'
))
treescrn
.
addch
(
8
,
6
,
ord
(
'/'
))
treescrn
.
addch
(
9
,
6
,
ord
(
'/'
))
treescrn
.
addch
(
10
,
5
,
ord
(
'/'
))
treescrn
.
addch
(
11
,
3
,
ord
(
'/'
))
treescrn
.
addch
(
12
,
2
,
ord
(
'/'
))
treescrn
.
addch
(
1
,
13
,
ord
(
'
\
\
'
))
treescrn
.
addch
(
2
,
13
,
ord
(
'
\
\
'
))
treescrn
.
addch
(
3
,
14
,
ord
(
'
\
\
'
))
treescrn
.
addch
(
4
,
15
,
ord
(
'
\
\
'
))
treescrn
.
addch
(
5
,
15
,
ord
(
'
\
\
'
))
treescrn
.
addch
(
6
,
16
,
ord
(
'
\
\
'
))
treescrn
.
addch
(
7
,
17
,
ord
(
'
\
\
'
))
treescrn
.
addch
(
8
,
18
,
ord
(
'
\
\
'
))
treescrn
.
addch
(
9
,
18
,
ord
(
'
\
\
'
))
treescrn
.
addch
(
10
,
19
,
ord
(
'
\
\
'
))
treescrn
.
addch
(
11
,
21
,
ord
(
'
\
\
'
))
treescrn
.
addch
(
12
,
22
,
ord
(
'
\
\
'
))
treescrn
.
addch
(
4
,
10
,
ord
(
'_'
))
treescrn
.
addch
(
4
,
14
,
ord
(
'_'
))
treescrn
.
addch
(
8
,
7
,
ord
(
'_'
))
treescrn
.
addch
(
8
,
17
,
ord
(
'_'
))
treescrn
.
addstr
(
13
,
0
,
"////////////
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
\
"
)
treescrn
.
addstr
(
14
,
11
,
"| |"
)
treescrn
.
addstr
(
15
,
11
,
"|_|"
)
unset_color
(
treescrn
)
treescrn
.
refresh
()
w_del_msg
.
refresh
()
return
def
balls
():
treescrn
.
overlay
(
treescrn2
)
set_color
(
treescrn2
,
curses
.
COLOR_BLUE
)
treescrn2
.
addch
(
3
,
9
,
ord
(
'@'
))
treescrn2
.
addch
(
3
,
15
,
ord
(
'@'
))
treescrn2
.
addch
(
4
,
8
,
ord
(
'@'
))
treescrn2
.
addch
(
4
,
16
,
ord
(
'@'
))
treescrn2
.
addch
(
5
,
7
,
ord
(
'@'
))
treescrn2
.
addch
(
5
,
17
,
ord
(
'@'
))
treescrn2
.
addch
(
7
,
6
,
ord
(
'@'
))
treescrn2
.
addch
(
7
,
18
,
ord
(
'@'
))
treescrn2
.
addch
(
8
,
5
,
ord
(
'@'
))
treescrn2
.
addch
(
8
,
19
,
ord
(
'@'
))
treescrn2
.
addch
(
10
,
4
,
ord
(
'@'
))
treescrn2
.
addch
(
10
,
20
,
ord
(
'@'
))
treescrn2
.
addch
(
11
,
2
,
ord
(
'@'
))
treescrn2
.
addch
(
11
,
22
,
ord
(
'@'
))
treescrn2
.
addch
(
12
,
1
,
ord
(
'@'
))
treescrn2
.
addch
(
12
,
23
,
ord
(
'@'
))
unset_color
(
treescrn2
)
treescrn2
.
refresh
()
w_del_msg
.
refresh
()
return
def
star
():
treescrn2
.
attrset
(
curses
.
A_BOLD
|
curses
.
A_BLINK
)
set_color
(
treescrn2
,
curses
.
COLOR_YELLOW
)
treescrn2
.
addch
(
0
,
12
,
ord
(
'*'
))
treescrn2
.
standend
()
unset_color
(
treescrn2
)
treescrn2
.
refresh
()
w_del_msg
.
refresh
()
return
def
strng1
():
treescrn2
.
attrset
(
curses
.
A_BOLD
|
curses
.
A_BLINK
)
set_color
(
treescrn2
,
curses
.
COLOR_WHITE
)
treescrn2
.
addch
(
3
,
13
,
ord
(
'
\
'
'
))
treescrn2
.
addch
(
3
,
12
,
ord
(
':'
))
treescrn2
.
addch
(
3
,
11
,
ord
(
'.'
))
treescrn2
.
attroff
(
curses
.
A_BOLD
|
curses
.
A_BLINK
)
unset_color
(
treescrn2
)
treescrn2
.
refresh
()
w_del_msg
.
refresh
()
return
def
strng2
():
treescrn2
.
attrset
(
curses
.
A_BOLD
|
curses
.
A_BLINK
)
set_color
(
treescrn2
,
curses
.
COLOR_WHITE
)
treescrn2
.
addch
(
5
,
14
,
ord
(
'
\
'
'
))
treescrn2
.
addch
(
5
,
13
,
ord
(
':'
))
treescrn2
.
addch
(
5
,
12
,
ord
(
'.'
))
treescrn2
.
addch
(
5
,
11
,
ord
(
','
))
treescrn2
.
addch
(
6
,
10
,
ord
(
'
\
'
'
))
treescrn2
.
addch
(
6
,
9
,
ord
(
':'
))
treescrn2
.
attroff
(
curses
.
A_BOLD
|
curses
.
A_BLINK
)
unset_color
(
treescrn2
)
treescrn2
.
refresh
()
w_del_msg
.
refresh
()
return
def
strng3
():
treescrn2
.
attrset
(
curses
.
A_BOLD
|
curses
.
A_BLINK
)
set_color
(
treescrn2
,
curses
.
COLOR_WHITE
)
treescrn2
.
addch
(
7
,
16
,
ord
(
'
\
'
'
))
treescrn2
.
addch
(
7
,
15
,
ord
(
':'
))
treescrn2
.
addch
(
7
,
14
,
ord
(
'.'
))
treescrn2
.
addch
(
7
,
13
,
ord
(
','
))
treescrn2
.
addch
(
8
,
12
,
ord
(
'
\
'
'
))
treescrn2
.
addch
(
8
,
11
,
ord
(
':'
))
treescrn2
.
addch
(
8
,
10
,
ord
(
'.'
))
treescrn2
.
addch
(
8
,
9
,
ord
(
','
))
treescrn2
.
attroff
(
curses
.
A_BOLD
|
curses
.
A_BLINK
)
unset_color
(
treescrn2
)
treescrn2
.
refresh
()
w_del_msg
.
refresh
()
return
def
strng4
():
treescrn2
.
attrset
(
curses
.
A_BOLD
|
curses
.
A_BLINK
)
set_color
(
treescrn2
,
curses
.
COLOR_WHITE
)
treescrn2
.
addch
(
9
,
17
,
ord
(
'
\
'
'
))
treescrn2
.
addch
(
9
,
16
,
ord
(
':'
))
treescrn2
.
addch
(
9
,
15
,
ord
(
'.'
))
treescrn2
.
addch
(
9
,
14
,
ord
(
','
))
treescrn2
.
addch
(
10
,
13
,
ord
(
'
\
'
'
))
treescrn2
.
addch
(
10
,
12
,
ord
(
':'
))
treescrn2
.
addch
(
10
,
11
,
ord
(
'.'
))
treescrn2
.
addch
(
10
,
10
,
ord
(
','
))
treescrn2
.
addch
(
11
,
9
,
ord
(
'
\
'
'
))
treescrn2
.
addch
(
11
,
8
,
ord
(
':'
))
treescrn2
.
addch
(
11
,
7
,
ord
(
'.'
))
treescrn2
.
addch
(
11
,
6
,
ord
(
','
))
treescrn2
.
addch
(
12
,
5
,
ord
(
'
\
'
'
))
treescrn2
.
attroff
(
curses
.
A_BOLD
|
curses
.
A_BLINK
)
unset_color
(
treescrn2
)
treescrn2
.
refresh
()
w_del_msg
.
refresh
()
return
def
strng5
():
treescrn2
.
attrset
(
curses
.
A_BOLD
|
curses
.
A_BLINK
)
set_color
(
treescrn2
,
curses
.
COLOR_WHITE
)
treescrn2
.
addch
(
11
,
19
,
ord
(
'
\
'
'
))
treescrn2
.
addch
(
11
,
18
,
ord
(
':'
))
treescrn2
.
addch
(
11
,
17
,
ord
(
'.'
))
treescrn2
.
addch
(
11
,
16
,
ord
(
','
))
treescrn2
.
addch
(
12
,
15
,
ord
(
'
\
'
'
))
treescrn2
.
addch
(
12
,
14
,
ord
(
':'
))
treescrn2
.
addch
(
12
,
13
,
ord
(
'.'
))
treescrn2
.
addch
(
12
,
12
,
ord
(
','
))
treescrn2
.
attroff
(
curses
.
A_BOLD
|
curses
.
A_BLINK
)
unset_color
(
treescrn2
)
# save a fully lit tree
treescrn2
.
overlay
(
treescrn
)
treescrn2
.
refresh
()
w_del_msg
.
refresh
()
return
def
blinkit
():
treescrn8
.
touchwin
()
for
cycle
in
range
(
0
,
5
):
if
cycle
==
0
:
treescrn3
.
overlay
(
treescrn8
)
treescrn8
.
refresh
()
w_del_msg
.
refresh
()
break
elif
cycle
==
1
:
treescrn4
.
overlay
(
treescrn8
)
treescrn8
.
refresh
()
w_del_msg
.
refresh
()
break
elif
cycle
==
2
:
treescrn5
.
overlay
(
treescrn8
)
treescrn8
.
refresh
()
w_del_msg
.
refresh
()
break
elif
cycle
==
3
:
treescrn6
.
overlay
(
treescrn8
)
treescrn8
.
refresh
()
w_del_msg
.
refresh
()
break
elif
cycle
==
4
:
treescrn7
.
overlay
(
treescrn8
)
treescrn8
.
refresh
()
w_del_msg
.
refresh
()
break
treescrn8
.
touchwin
()
# ALL ON
treescrn
.
overlay
(
treescrn8
)
treescrn8
.
refresh
()
w_del_msg
.
refresh
()
return
def
deer_step
(
win
,
y
,
x
):
win
.
mvwin
(
y
,
x
)
win
.
refresh
()
w_del_msg
.
refresh
()
look_out
(
5
)
def
reindeer
():
y_pos
=
0
for
x_pos
in
range
(
70
,
62
,
-
1
):
if
x_pos
<
66
:
y_pos
=
1
for
looper
in
range
(
0
,
4
):
dotdeer0
.
addch
(
y_pos
,
x_pos
,
ord
(
'.'
))
dotdeer0
.
refresh
()
w_del_msg
.
refresh
()
dotdeer0
.
erase
()
dotdeer0
.
refresh
()
w_del_msg
.
refresh
()
look_out
(
50
)
y_pos
=
2
for
x_pos
in
range
(
x_pos
-
1
,
50
,
-
1
):
for
looper
in
range
(
0
,
4
):
if
x_pos
<
56
:
y_pos
=
3
try
:
stardeer0
.
addch
(
y_pos
,
x_pos
,
ord
(
'*'
))
except
curses
.
error
:
pass
stardeer0
.
refresh
()
w_del_msg
.
refresh
()
stardeer0
.
erase
()
stardeer0
.
refresh
()
w_del_msg
.
refresh
()
else
:
dotdeer0
.
addch
(
y_pos
,
x_pos
,
ord
(
'*'
))
dotdeer0
.
refresh
()
w_del_msg
.
refresh
()
dotdeer0
.
erase
()
dotdeer0
.
refresh
()
w_del_msg
.
refresh
()
x_pos
=
58
for
y_pos
in
range
(
2
,
5
):
lildeer0
.
touchwin
()
lildeer0
.
refresh
()
w_del_msg
.
refresh
()
for
looper
in
range
(
0
,
4
):
deer_step
(
lildeer3
,
y_pos
,
x_pos
)
deer_step
(
lildeer2
,
y_pos
,
x_pos
)
deer_step
(
lildeer1
,
y_pos
,
x_pos
)
deer_step
(
lildeer2
,
y_pos
,
x_pos
)
deer_step
(
lildeer3
,
y_pos
,
x_pos
)
lildeer0
.
touchwin
()
lildeer0
.
refresh
()
w_del_msg
.
refresh
()
x_pos
-=
2
x_pos
=
35
for
y_pos
in
range
(
5
,
10
):
middeer0
.
touchwin
()
middeer0
.
refresh
()
w_del_msg
.
refresh
()
for
looper
in
range
(
0
,
2
):
deer_step
(
middeer3
,
y_pos
,
x_pos
)
deer_step
(
middeer2
,
y_pos
,
x_pos
)
deer_step
(
middeer1
,
y_pos
,
x_pos
)
deer_step
(
middeer2
,
y_pos
,
x_pos
)
deer_step
(
middeer3
,
y_pos
,
x_pos
)
middeer0
.
touchwin
()
middeer0
.
refresh
()
w_del_msg
.
refresh
()
x_pos
-=
3
look_out
(
300
)
y_pos
=
1
for
x_pos
in
range
(
8
,
16
):
deer_step
(
bigdeer4
,
y_pos
,
x_pos
)
deer_step
(
bigdeer3
,
y_pos
,
x_pos
)
deer_step
(
bigdeer2
,
y_pos
,
x_pos
)
deer_step
(
bigdeer1
,
y_pos
,
x_pos
)
deer_step
(
bigdeer2
,
y_pos
,
x_pos
)
deer_step
(
bigdeer3
,
y_pos
,
x_pos
)
deer_step
(
bigdeer4
,
y_pos
,
x_pos
)
deer_step
(
bigdeer0
,
y_pos
,
x_pos
)
x_pos
-=
1
for
looper
in
range
(
0
,
6
):
deer_step
(
lookdeer4
,
y_pos
,
x_pos
)
deer_step
(
lookdeer3
,
y_pos
,
x_pos
)
deer_step
(
lookdeer2
,
y_pos
,
x_pos
)
deer_step
(
lookdeer1
,
y_pos
,
x_pos
)
deer_step
(
lookdeer2
,
y_pos
,
x_pos
)
deer_step
(
lookdeer3
,
y_pos
,
x_pos
)
deer_step
(
lookdeer4
,
y_pos
,
x_pos
)
deer_step
(
lookdeer0
,
y_pos
,
x_pos
)
for
y_pos
in
range
(
y_pos
,
10
):
for
looper
in
range
(
0
,
2
):
deer_step
(
bigdeer4
,
y_pos
,
x_pos
)
deer_step
(
bigdeer3
,
y_pos
,
x_pos
)
deer_step
(
bigdeer2
,
y_pos
,
x_pos
)
deer_step
(
bigdeer1
,
y_pos
,
x_pos
)
deer_step
(
bigdeer2
,
y_pos
,
x_pos
)
deer_step
(
bigdeer3
,
y_pos
,
x_pos
)
deer_step
(
bigdeer4
,
y_pos
,
x_pos
)
deer_step
(
bigdeer0
,
y_pos
,
x_pos
)
y_pos
-=
1
deer_step
(
lookdeer3
,
y_pos
,
x_pos
)
return
def
main
(
win
):
global
stdscr
stdscr
=
win
global
my_bg
,
y_pos
,
x_pos
global
treescrn
,
treescrn2
,
treescrn3
,
treescrn4
global
treescrn5
,
treescrn6
,
treescrn7
,
treescrn8
global
dotdeer0
,
stardeer0
global
lildeer0
,
lildeer1
,
lildeer2
,
lildeer3
global
middeer0
,
middeer1
,
middeer2
,
middeer3
global
bigdeer0
,
bigdeer1
,
bigdeer2
,
bigdeer3
,
bigdeer4
global
lookdeer0
,
lookdeer1
,
lookdeer2
,
lookdeer3
,
lookdeer4
global
w_holiday
,
w_del_msg
my_bg
=
curses
.
COLOR_BLACK
# curses.curs_set(0)
treescrn
=
curses
.
newwin
(
16
,
27
,
3
,
53
)
treescrn2
=
curses
.
newwin
(
16
,
27
,
3
,
53
)
treescrn3
=
curses
.
newwin
(
16
,
27
,
3
,
53
)
treescrn4
=
curses
.
newwin
(
16
,
27
,
3
,
53
)
treescrn5
=
curses
.
newwin
(
16
,
27
,
3
,
53
)
treescrn6
=
curses
.
newwin
(
16
,
27
,
3
,
53
)
treescrn7
=
curses
.
newwin
(
16
,
27
,
3
,
53
)
treescrn8
=
curses
.
newwin
(
16
,
27
,
3
,
53
)
dotdeer0
=
curses
.
newwin
(
3
,
71
,
0
,
8
)
stardeer0
=
curses
.
newwin
(
4
,
56
,
0
,
8
)
lildeer0
=
curses
.
newwin
(
7
,
53
,
0
,
8
)
lildeer1
=
curses
.
newwin
(
2
,
4
,
0
,
0
)
lildeer2
=
curses
.
newwin
(
2
,
4
,
0
,
0
)
lildeer3
=
curses
.
newwin
(
2
,
4
,
0
,
0
)
middeer0
=
curses
.
newwin
(
15
,
42
,
0
,
8
)
middeer1
=
curses
.
newwin
(
3
,
7
,
0
,
0
)
middeer2
=
curses
.
newwin
(
3
,
7
,
0
,
0
)
middeer3
=
curses
.
newwin
(
3
,
7
,
0
,
0
)
bigdeer0
=
curses
.
newwin
(
10
,
23
,
0
,
0
)
bigdeer1
=
curses
.
newwin
(
10
,
23
,
0
,
0
)
bigdeer2
=
curses
.
newwin
(
10
,
23
,
0
,
0
)
bigdeer3
=
curses
.
newwin
(
10
,
23
,
0
,
0
)
bigdeer4
=
curses
.
newwin
(
10
,
23
,
0
,
0
)
lookdeer0
=
curses
.
newwin
(
10
,
25
,
0
,
0
)
lookdeer1
=
curses
.
newwin
(
10
,
25
,
0
,
0
)
lookdeer2
=
curses
.
newwin
(
10
,
25
,
0
,
0
)
lookdeer3
=
curses
.
newwin
(
10
,
25
,
0
,
0
)
lookdeer4
=
curses
.
newwin
(
10
,
25
,
0
,
0
)
w_holiday
=
curses
.
newwin
(
1
,
27
,
3
,
27
)
w_del_msg
=
curses
.
newwin
(
1
,
20
,
23
,
60
)
try
:
w_del_msg
.
addstr
(
0
,
0
,
"Hit any key to quit"
)
except
curses
.
error
:
pass
try
:
w_holiday
.
addstr
(
0
,
0
,
"H A P P Y H O L I D A Y S"
)
except
curses
.
error
:
pass
# set up the windows for our various reindeer
lildeer1
.
addch
(
0
,
0
,
ord
(
'V'
))
lildeer1
.
addch
(
1
,
0
,
ord
(
'@'
))
lildeer1
.
addch
(
1
,
1
,
ord
(
'<'
))
lildeer1
.
addch
(
1
,
2
,
ord
(
'>'
))
try
:
lildeer1
.
addch
(
1
,
3
,
ord
(
'~'
))
except
curses
.
error
:
pass
lildeer2
.
addch
(
0
,
0
,
ord
(
'V'
))
lildeer2
.
addch
(
1
,
0
,
ord
(
'@'
))
lildeer2
.
addch
(
1
,
1
,
ord
(
'|'
))
lildeer2
.
addch
(
1
,
2
,
ord
(
'|'
))
try
:
lildeer2
.
addch
(
1
,
3
,
ord
(
'~'
))
except
curses
.
error
:
pass
lildeer3
.
addch
(
0
,
0
,
ord
(
'V'
))
lildeer3
.
addch
(
1
,
0
,
ord
(
'@'
))
lildeer3
.
addch
(
1
,
1
,
ord
(
'>'
))
lildeer3
.
addch
(
1
,
2
,
ord
(
'<'
))
try
:
lildeer2
.
addch
(
1
,
3
,
ord
(
'~'
))
# XXX
except
curses
.
error
:
pass
middeer1
.
addch
(
0
,
2
,
ord
(
'y'
))
middeer1
.
addch
(
0
,
3
,
ord
(
'y'
))
middeer1
.
addch
(
1
,
2
,
ord
(
'0'
))
middeer1
.
addch
(
1
,
3
,
ord
(
'('
))
middeer1
.
addch
(
1
,
4
,
ord
(
'='
))
middeer1
.
addch
(
1
,
5
,
ord
(
')'
))
middeer1
.
addch
(
1
,
6
,
ord
(
'~'
))
middeer1
.
addch
(
2
,
3
,
ord
(
'
\
\
'
))
middeer1
.
addch
(
2
,
5
,
ord
(
'/'
))
middeer2
.
addch
(
0
,
2
,
ord
(
'y'
))
middeer2
.
addch
(
0
,
3
,
ord
(
'y'
))
middeer2
.
addch
(
1
,
2
,
ord
(
'0'
))
middeer2
.
addch
(
1
,
3
,
ord
(
'('
))
middeer2
.
addch
(
1
,
4
,
ord
(
'='
))
middeer2
.
addch
(
1
,
5
,
ord
(
')'
))
middeer2
.
addch
(
1
,
6
,
ord
(
'~'
))
middeer2
.
addch
(
2
,
3
,
ord
(
'|'
))
middeer2
.
addch
(
2
,
5
,
ord
(
'|'
))
middeer3
.
addch
(
0
,
2
,
ord
(
'y'
))
middeer3
.
addch
(
0
,
3
,
ord
(
'y'
))
middeer3
.
addch
(
1
,
2
,
ord
(
'0'
))
middeer3
.
addch
(
1
,
3
,
ord
(
'('
))
middeer3
.
addch
(
1
,
4
,
ord
(
'='
))
middeer3
.
addch
(
1
,
5
,
ord
(
')'
))
middeer3
.
addch
(
1
,
6
,
ord
(
'~'
))
middeer3
.
addch
(
2
,
3
,
ord
(
'/'
))
middeer3
.
addch
(
2
,
5
,
ord
(
'
\
\
'
))
bigdeer1
.
addch
(
0
,
17
,
ord
(
'
\
\
'
))
bigdeer1
.
addch
(
0
,
18
,
ord
(
'/'
))
bigdeer1
.
addch
(
0
,
19
,
ord
(
'
\
\
'
))
bigdeer1
.
addch
(
0
,
20
,
ord
(
'/'
))
bigdeer1
.
addch
(
1
,
18
,
ord
(
'
\
\
'
))
bigdeer1
.
addch
(
1
,
20
,
ord
(
'/'
))
bigdeer1
.
addch
(
2
,
19
,
ord
(
'|'
))
bigdeer1
.
addch
(
2
,
20
,
ord
(
'_'
))
bigdeer1
.
addch
(
3
,
18
,
ord
(
'/'
))
bigdeer1
.
addch
(
3
,
19
,
ord
(
'^'
))
bigdeer1
.
addch
(
3
,
20
,
ord
(
'0'
))
bigdeer1
.
addch
(
3
,
21
,
ord
(
'
\
\
'
))
bigdeer1
.
addch
(
4
,
17
,
ord
(
'/'
))
bigdeer1
.
addch
(
4
,
18
,
ord
(
'/'
))
bigdeer1
.
addch
(
4
,
19
,
ord
(
'
\
\
'
))
bigdeer1
.
addch
(
4
,
22
,
ord
(
'
\
\
'
))
bigdeer1
.
addstr
(
5
,
7
,
"^~~~~~~~~// ~~U"
)
bigdeer1
.
addstr
(
6
,
7
,
"(
\
\
_____( /"
)
# ))
bigdeer1
.
addstr
(
7
,
8
,
"( ) /"
)
bigdeer1
.
addstr
(
8
,
9
,
"
\
\
\
\
/"
)
bigdeer1
.
addstr
(
9
,
11
,
"
\
\
>/>"
)
bigdeer2
.
addch
(
0
,
17
,
ord
(
'
\
\
'
))
bigdeer2
.
addch
(
0
,
18
,
ord
(
'/'
))
bigdeer2
.
addch
(
0
,
19
,
ord
(
'
\
\
'
))
bigdeer2
.
addch
(
0
,
20
,
ord
(
'/'
))
bigdeer2
.
addch
(
1
,
18
,
ord
(
'
\
\
'
))
bigdeer2
.
addch
(
1
,
20
,
ord
(
'/'
))
bigdeer2
.
addch
(
2
,
19
,
ord
(
'|'
))
bigdeer2
.
addch
(
2
,
20
,
ord
(
'_'
))
bigdeer2
.
addch
(
3
,
18
,
ord
(
'/'
))
bigdeer2
.
addch
(
3
,
19
,
ord
(
'^'
))
bigdeer2
.
addch
(
3
,
20
,
ord
(
'0'
))
bigdeer2
.
addch
(
3
,
21
,
ord
(
'
\
\
'
))
bigdeer2
.
addch
(
4
,
17
,
ord
(
'/'
))
bigdeer2
.
addch
(
4
,
18
,
ord
(
'/'
))
bigdeer2
.
addch
(
4
,
19
,
ord
(
'
\
\
'
))
bigdeer2
.
addch
(
4
,
22
,
ord
(
'
\
\
'
))
bigdeer2
.
addstr
(
5
,
7
,
"^~~~~~~~~// ~~U"
)
bigdeer2
.
addstr
(
6
,
7
,
"(( )____( /"
)
# ))
bigdeer2
.
addstr
(
7
,
7
,
"( / |"
)
bigdeer2
.
addstr
(
8
,
8
,
"
\
\
/ |"
)
bigdeer2
.
addstr
(
9
,
9
,
"|> |>"
)
bigdeer3
.
addch
(
0
,
17
,
ord
(
'
\
\
'
))
bigdeer3
.
addch
(
0
,
18
,
ord
(
'/'
))
bigdeer3
.
addch
(
0
,
19
,
ord
(
'
\
\
'
))
bigdeer3
.
addch
(
0
,
20
,
ord
(
'/'
))
bigdeer3
.
addch
(
1
,
18
,
ord
(
'
\
\
'
))
bigdeer3
.
addch
(
1
,
20
,
ord
(
'/'
))
bigdeer3
.
addch
(
2
,
19
,
ord
(
'|'
))
bigdeer3
.
addch
(
2
,
20
,
ord
(
'_'
))
bigdeer3
.
addch
(
3
,
18
,
ord
(
'/'
))
bigdeer3
.
addch
(
3
,
19
,
ord
(
'^'
))
bigdeer3
.
addch
(
3
,
20
,
ord
(
'0'
))
bigdeer3
.
addch
(
3
,
21
,
ord
(
'
\
\
'
))
bigdeer3
.
addch
(
4
,
17
,
ord
(
'/'
))
bigdeer3
.
addch
(
4
,
18
,
ord
(
'/'
))
bigdeer3
.
addch
(
4
,
19
,
ord
(
'
\
\
'
))
bigdeer3
.
addch
(
4
,
22
,
ord
(
'
\
\
'
))
bigdeer3
.
addstr
(
5
,
7
,
"^~~~~~~~~// ~~U"
)
bigdeer3
.
addstr
(
6
,
6
,
"( ()_____( /"
)
# ))
bigdeer3
.
addstr
(
7
,
6
,
"/ / /"
)
bigdeer3
.
addstr
(
8
,
5
,
"|/
\
\
"
)
bigdeer3
.
addstr
(
9
,
5
,
"/>
\
\
>"
)
bigdeer4
.
addch
(
0
,
17
,
ord
(
'
\
\
'
))
bigdeer4
.
addch
(
0
,
18
,
ord
(
'/'
))
bigdeer4
.
addch
(
0
,
19
,
ord
(
'
\
\
'
))
bigdeer4
.
addch
(
0
,
20
,
ord
(
'/'
))
bigdeer4
.
addch
(
1
,
18
,
ord
(
'
\
\
'
))
bigdeer4
.
addch
(
1
,
20
,
ord
(
'/'
))
bigdeer4
.
addch
(
2
,
19
,
ord
(
'|'
))
bigdeer4
.
addch
(
2
,
20
,
ord
(
'_'
))
bigdeer4
.
addch
(
3
,
18
,
ord
(
'/'
))
bigdeer4
.
addch
(
3
,
19
,
ord
(
'^'
))
bigdeer4
.
addch
(
3
,
20
,
ord
(
'0'
))
bigdeer4
.
addch
(
3
,
21
,
ord
(
'
\
\
'
))
bigdeer4
.
addch
(
4
,
17
,
ord
(
'/'
))
bigdeer4
.
addch
(
4
,
18
,
ord
(
'/'
))
bigdeer4
.
addch
(
4
,
19
,
ord
(
'
\
\
'
))
bigdeer4
.
addch
(
4
,
22
,
ord
(
'
\
\
'
))
bigdeer4
.
addstr
(
5
,
7
,
"^~~~~~~~~// ~~U"
)
bigdeer4
.
addstr
(
6
,
6
,
"( )______( /"
)
# )
bigdeer4
.
addstr
(
7
,
5
,
"(/
\
\
"
)
# )
bigdeer4
.
addstr
(
8
,
0
,
"v___= ----^"
)
lookdeer1
.
addstr
(
0
,
16
,
"
\
\
/
\
\
/"
)
lookdeer1
.
addstr
(
1
,
17
,
"
\
\
Y/
\
\
Y/"
)
lookdeer1
.
addstr
(
2
,
19
,
"
\
\
=/"
)
lookdeer1
.
addstr
(
3
,
17
,
"^
\
\
o o/^"
)
lookdeer1
.
addstr
(
4
,
17
,
"//( )"
)
lookdeer1
.
addstr
(
5
,
7
,
"^~~~~~~~~//
\
\
O/"
)
lookdeer1
.
addstr
(
6
,
7
,
"(
\
\
_____( /"
)
# ))
lookdeer1
.
addstr
(
7
,
8
,
"( ) /"
)
lookdeer1
.
addstr
(
8
,
9
,
"
\
\
\
\
/"
)
lookdeer1
.
addstr
(
9
,
11
,
"
\
\
>/>"
)
lookdeer2
.
addstr
(
0
,
16
,
"
\
\
/
\
\
/"
)
lookdeer2
.
addstr
(
1
,
17
,
"
\
\
Y/
\
\
Y/"
)
lookdeer2
.
addstr
(
2
,
19
,
"
\
\
=/"
)
lookdeer2
.
addstr
(
3
,
17
,
"^
\
\
o o/^"
)
lookdeer2
.
addstr
(
4
,
17
,
"//( )"
)
lookdeer2
.
addstr
(
5
,
7
,
"^~~~~~~~~//
\
\
O/"
)
lookdeer2
.
addstr
(
6
,
7
,
"(( )____( /"
)
# ))
lookdeer2
.
addstr
(
7
,
7
,
"( / |"
)
lookdeer2
.
addstr
(
8
,
8
,
"
\
\
/ |"
)
lookdeer2
.
addstr
(
9
,
9
,
"|> |>"
)
lookdeer3
.
addstr
(
0
,
16
,
"
\
\
/
\
\
/"
)
lookdeer3
.
addstr
(
1
,
17
,
"
\
\
Y/
\
\
Y/"
)
lookdeer3
.
addstr
(
2
,
19
,
"
\
\
=/"
)
lookdeer3
.
addstr
(
3
,
17
,
"^
\
\
o o/^"
)
lookdeer3
.
addstr
(
4
,
17
,
"//( )"
)
lookdeer3
.
addstr
(
5
,
7
,
"^~~~~~~~~//
\
\
O/"
)
lookdeer3
.
addstr
(
6
,
6
,
"( ()_____( /"
)
# ))
lookdeer3
.
addstr
(
7
,
6
,
"/ / /"
)
lookdeer3
.
addstr
(
8
,
5
,
"|/
\
\
"
)
lookdeer3
.
addstr
(
9
,
5
,
"/>
\
\
>"
)
lookdeer4
.
addstr
(
0
,
16
,
"
\
\
/
\
\
/"
)
lookdeer4
.
addstr
(
1
,
17
,
"
\
\
Y/
\
\
Y/"
)
lookdeer4
.
addstr
(
2
,
19
,
"
\
\
=/"
)
lookdeer4
.
addstr
(
3
,
17
,
"^
\
\
o o/^"
)
lookdeer4
.
addstr
(
4
,
17
,
"//( )"
)
lookdeer4
.
addstr
(
5
,
7
,
"^~~~~~~~~//
\
\
O/"
)
lookdeer4
.
addstr
(
6
,
6
,
"( )______( /"
)
# )
lookdeer4
.
addstr
(
7
,
5
,
"(/
\
\
"
)
# )
lookdeer4
.
addstr
(
8
,
0
,
"v___= ----^"
)
###############################################
curses
.
cbreak
()
stdscr
.
nodelay
(
1
)
while
1
:
stdscr
.
clear
()
treescrn
.
erase
()
w_del_msg
.
touchwin
()
treescrn
.
touchwin
()
treescrn2
.
erase
()
treescrn2
.
touchwin
()
treescrn8
.
erase
()
treescrn8
.
touchwin
()
stdscr
.
refresh
()
look_out
(
150
)
boxit
()
stdscr
.
refresh
()
look_out
(
150
)
seas
()
stdscr
.
refresh
()
greet
()
stdscr
.
refresh
()
look_out
(
150
)
fromwho
()
stdscr
.
refresh
()
look_out
(
150
)
tree
()
look_out
(
150
)
balls
()
look_out
(
150
)
star
()
look_out
(
150
)
strng1
()
strng2
()
strng3
()
strng4
()
strng5
()
# set up the windows for our blinking trees
#
# treescrn3
treescrn
.
overlay
(
treescrn3
)
# balls
treescrn3
.
addch
(
4
,
18
,
ord
(
' '
))
treescrn3
.
addch
(
7
,
6
,
ord
(
' '
))
treescrn3
.
addch
(
8
,
19
,
ord
(
' '
))
treescrn3
.
addch
(
11
,
22
,
ord
(
' '
))
# star
treescrn3
.
addch
(
0
,
12
,
ord
(
'*'
))
# strng1
treescrn3
.
addch
(
3
,
11
,
ord
(
' '
))
# strng2
treescrn3
.
addch
(
5
,
13
,
ord
(
' '
))
treescrn3
.
addch
(
6
,
10
,
ord
(
' '
))
# strng3
treescrn3
.
addch
(
7
,
16
,
ord
(
' '
))
treescrn3
.
addch
(
7
,
14
,
ord
(
' '
))
# strng4
treescrn3
.
addch
(
10
,
13
,
ord
(
' '
))
treescrn3
.
addch
(
10
,
10
,
ord
(
' '
))
treescrn3
.
addch
(
11
,
8
,
ord
(
' '
))
# strng5
treescrn3
.
addch
(
11
,
18
,
ord
(
' '
))
treescrn3
.
addch
(
12
,
13
,
ord
(
' '
))
# treescrn4
treescrn
.
overlay
(
treescrn4
)
# balls
treescrn4
.
addch
(
3
,
9
,
ord
(
' '
))
treescrn4
.
addch
(
4
,
16
,
ord
(
' '
))
treescrn4
.
addch
(
7
,
6
,
ord
(
' '
))
treescrn4
.
addch
(
8
,
19
,
ord
(
' '
))
treescrn4
.
addch
(
11
,
2
,
ord
(
' '
))
treescrn4
.
addch
(
12
,
23
,
ord
(
' '
))
# star
treescrn4
.
standout
()
treescrn4
.
addch
(
0
,
12
,
ord
(
'*'
))
treescrn4
.
standend
()
# strng1
treescrn4
.
addch
(
3
,
13
,
ord
(
' '
))
# strng2
# strng3
treescrn4
.
addch
(
7
,
15
,
ord
(
' '
))
treescrn4
.
addch
(
8
,
11
,
ord
(
' '
))
# strng4
treescrn4
.
addch
(
9
,
16
,
ord
(
' '
))
treescrn4
.
addch
(
10
,
12
,
ord
(
' '
))
treescrn4
.
addch
(
11
,
8
,
ord
(
' '
))
# strng5
treescrn4
.
addch
(
11
,
18
,
ord
(
' '
))
treescrn4
.
addch
(
12
,
14
,
ord
(
' '
))
# treescrn5
treescrn
.
overlay
(
treescrn5
)
# balls
treescrn5
.
addch
(
3
,
15
,
ord
(
' '
))
treescrn5
.
addch
(
10
,
20
,
ord
(
' '
))
treescrn5
.
addch
(
12
,
1
,
ord
(
' '
))
# star
treescrn5
.
addch
(
0
,
12
,
ord
(
' '
))
# strng1
treescrn5
.
addch
(
3
,
11
,
ord
(
' '
))
# strng2
treescrn5
.
addch
(
5
,
12
,
ord
(
' '
))
# strng3
treescrn5
.
addch
(
7
,
14
,
ord
(
' '
))
treescrn5
.
addch
(
8
,
10
,
ord
(
' '
))
# strng4
treescrn5
.
addch
(
9
,
15
,
ord
(
' '
))
treescrn5
.
addch
(
10
,
11
,
ord
(
' '
))
treescrn5
.
addch
(
11
,
7
,
ord
(
' '
))
# strng5
treescrn5
.
addch
(
11
,
17
,
ord
(
' '
))
treescrn5
.
addch
(
12
,
13
,
ord
(
' '
))
# treescrn6
treescrn
.
overlay
(
treescrn6
)
# balls
treescrn6
.
addch
(
6
,
7
,
ord
(
' '
))
treescrn6
.
addch
(
7
,
18
,
ord
(
' '
))
treescrn6
.
addch
(
10
,
4
,
ord
(
' '
))
treescrn6
.
addch
(
11
,
23
,
ord
(
' '
))
# star
treescrn6
.
standout
()
treescrn6
.
addch
(
0
,
12
,
ord
(
'*'
))
treescrn6
.
standend
()
# strng1
# strng2
treescrn6
.
addch
(
5
,
11
,
ord
(
' '
))
# strng3
treescrn6
.
addch
(
7
,
13
,
ord
(
' '
))
treescrn6
.
addch
(
8
,
9
,
ord
(
' '
))
# strng4
treescrn6
.
addch
(
9
,
14
,
ord
(
' '
))
treescrn6
.
addch
(
10
,
10
,
ord
(
' '
))
treescrn6
.
addch
(
11
,
6
,
ord
(
' '
))
# strng5
treescrn6
.
addch
(
11
,
16
,
ord
(
' '
))
treescrn6
.
addch
(
12
,
12
,
ord
(
' '
))
# treescrn7
treescrn
.
overlay
(
treescrn7
)
# balls
treescrn7
.
addch
(
3
,
15
,
ord
(
' '
))
treescrn7
.
addch
(
6
,
7
,
ord
(
' '
))
treescrn7
.
addch
(
7
,
18
,
ord
(
' '
))
treescrn7
.
addch
(
10
,
4
,
ord
(
' '
))
treescrn7
.
addch
(
11
,
22
,
ord
(
' '
))
# star
treescrn7
.
addch
(
0
,
12
,
ord
(
'*'
))
# strng1
treescrn7
.
addch
(
3
,
12
,
ord
(
' '
))
# strng2
treescrn7
.
addch
(
5
,
13
,
ord
(
' '
))
treescrn7
.
addch
(
6
,
9
,
ord
(
' '
))
# strng3
treescrn7
.
addch
(
7
,
15
,
ord
(
' '
))
treescrn7
.
addch
(
8
,
11
,
ord
(
' '
))
# strng4
treescrn7
.
addch
(
9
,
16
,
ord
(
' '
))
treescrn7
.
addch
(
10
,
12
,
ord
(
' '
))
treescrn7
.
addch
(
11
,
8
,
ord
(
' '
))
# strng5
treescrn7
.
addch
(
11
,
18
,
ord
(
' '
))
treescrn7
.
addch
(
12
,
14
,
ord
(
' '
))
look_out
(
150
)
reindeer
()
w_holiday
.
touchwin
()
w_holiday
.
refresh
()
w_del_msg
.
refresh
()
look_out
(
500
)
for
i
in
range
(
0
,
20
):
blinkit
()
curses
.
wrapper
(
main
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment