12 raise SystemExit("Usage: %s filename ..." % sys
.argv
[0])
15 screen
= pygame
.display
.set_mode([600, 600], pygame
.DOUBLEBUF
)
16 bullet
= pygame
.Surface([3, 3])
17 bullet
.fill([255, 0, 0])
18 clock
= pygame
.time
.Clock()
19 target
= bulletml
.Bullet()
24 filename
= argv
[file_idx
% len(argv
)]
25 doc
= bulletml
.BulletML(open(filename
, "rU"))
26 source
= bulletml
.Bullet
.FromDoc(
27 doc
, x
=150, y
=150, target
=target
, rank
=0.5)
29 active
= set([source
])
30 source
.vanished
= True
32 print " Loaded %d top-level actions." % len(source
.actions
)
38 pygame
.display
.set_caption(os
.path
.basename(filename
))
40 while active
and not newfile
:
43 for event
in pygame
.event
.get():
44 if event
.type == pygame
.QUIT
:
46 elif event
.type == pygame
.KEYDOWN
:
47 if event
.key
== pygame
.K_SPACE
:
49 elif event
.key
== pygame
.K_RIGHT
:
51 elif event
.key
== pygame
.K_PAGEUP
:
54 elif event
.key
== pygame
.K_PAGEDOWN
:
57 elif event
.key
== pygame
.K_RETURN
:
59 elif event
.key
== pygame
.K_s
:
60 source
= bulletml
.Bullet
.FromDoc(
61 doc
, x
=150, y
=150, target
=target
, rank
=0.5)
62 source
.vanished
= True
64 target
.x
, target
.y
= pygame
.mouse
.get_pos()
70 for obj
in list(active
):
75 or not (-50 < obj
.x
< 350)
76 or not (-50 < obj
.y
< 350)):
81 print " Processing: %04d: %d bullets, %d active." % (
82 frames
, total
, len(active
))
84 screen
.fill([0, 0, 0])
88 except AttributeError:
96 screen
.blit(bullet
, [x
, y
])
101 for event
in pygame
.event
.get():
102 if event
.type == pygame
.QUIT
:
104 elif event
.type == pygame
.KEYDOWN
:
105 if event
.key
== pygame
.K_SPACE
:
107 elif event
.key
== pygame
.K_RIGHT
:
110 print " Finished: %04d: %d bullets." % (frames
, total
)
112 if __name__
== "__main__":