13 raise SystemExit("Usage: %s filename ..." % sys
.argv
[0])
16 screen
= pygame
.display
.set_mode([600, 600], pygame
.DOUBLEBUF
)
17 bullet
= pygame
.Surface([3, 3])
18 bullet
.fill([255, 0, 0])
19 clock
= pygame
.time
.Clock()
20 target
= bulletml
.Bullet()
25 filename
= argv
[file_idx
% len(argv
)]
26 doc
= bulletml
.BulletML(open(filename
, "rU"))
27 source
= bulletml
.Bullet
.FromDoc(
28 doc
, x
=150, y
=150, target
=target
, rank
=0.5)
30 active
= set([source
])
31 source
.vanished
= True
33 print " Loaded %d top-level actions." % len(source
._actions
)
39 pygame
.display
.set_caption(os
.path
.basename(filename
))
41 while active
and not newfile
:
44 for event
in pygame
.event
.get():
45 if event
.type == pygame
.QUIT
:
47 elif event
.type == pygame
.KEYDOWN
:
48 if event
.key
== pygame
.K_SPACE
:
50 elif event
.key
== pygame
.K_RIGHT
:
52 elif event
.key
== pygame
.K_PAGEUP
:
55 elif event
.key
== pygame
.K_PAGEDOWN
:
58 elif event
.key
== pygame
.K_RETURN
:
60 elif event
.key
== pygame
.K_s
:
61 source
= bulletml
.Bullet
.FromDoc(
62 doc
, x
=150, y
=150, target
=target
, rank
=0.5)
63 source
.vanished
= True
65 target
.x
, target
.y
= pygame
.mouse
.get_pos()
73 for obj
in list(active
):
78 or not (-50 < obj
.x
< 350)
79 or not (-50 < obj
.y
< 350)):
81 elapsed
= time
.time() - start
85 seconds_per_bullet
= elapsed
/ count
86 bullets_per_second
= count
/ elapsed
87 print " Processing: %04d: %d bullets, %d active." % (
89 print " %g seconds per bullet (60Hz max: %g)." % (
90 seconds_per_bullet
, bullets_per_second
/ 60)
92 screen
.fill([0, 0, 0])
96 except AttributeError:
104 screen
.blit(bullet
, [x
, y
])
106 pygame
.display
.flip()
108 print " Finished: %04d: %d bullets." % (frames
, total
)
110 if __name__
== "__main__":