projects
/
python-bulletml.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Action: Don't need the owner in the constructor. Factory function to create a child.
[python-bulletml.git]
/
bulletml-runner
diff --git
a/bulletml-runner
b/bulletml-runner
index
c08e3d8
..
b98e901
100755
(executable)
--- a/
bulletml-runner
+++ b/
bulletml-runner
@@
-2,10
+2,25
@@
import os
import sys
import os
import sys
+import time
import pygame
import bulletml
import pygame
import bulletml
+import bulletml.bulletyaml
+from bulletml.collision import collides_all
+
+try:
+ import yaml
+except ImportError:
+ yaml = None
+
+try:
+ import psyco
+except ImportError:
+ pass
+else:
+ psyco.full()
def main(argv):
if not argv:
def main(argv):
if not argv:
@@
-13,17
+28,23
@@
def main(argv):
pygame.display.init()
screen = pygame.display.set_mode([600, 600], pygame.DOUBLEBUF)
pygame.display.init()
screen = pygame.display.set_mode([600, 600], pygame.DOUBLEBUF)
- bullet = pygame.Surface([3, 3])
- bullet.fill([255, 0, 0])
+ red = pygame.Surface([3, 3])
+ red.fill([255, 0, 0])
+ green = pygame.Surface([3, 3])
+ green.fill([0, 255, 0])
+ blue = pygame.Surface([3, 3])
+ blue.fill([0, 0, 255])
clock = pygame.time.Clock()
target = bulletml.Bullet()
clock = pygame.time.Clock()
target = bulletml.Bullet()
+ bullets = dict(red=red, green=green, blue=blue)
+
file_idx = 0
while True:
filename = argv[file_idx % len(argv)]
file_idx = 0
while True:
filename = argv[file_idx % len(argv)]
- doc = bulletml.BulletML(open(filename, "rU"))
- source = bulletml.Bullet.FromDoc(
+ doc = bulletml.BulletML
.FromDocument
(open(filename, "rU"))
+ source = bulletml.Bullet.FromDoc
ument
(
doc, x=150, y=150, target=target, rank=0.5)
active = set([source])
doc, x=150, y=150, target=target, rank=0.5)
active = set([source])
@@
-57,17
+78,22
@@
def main(argv):
elif event.key == pygame.K_RETURN:
newfile = True
elif event.key == pygame.K_s:
elif event.key == pygame.K_RETURN:
newfile = True
elif event.key == pygame.K_s:
- source = bulletml.Bullet.FromDoc(
- doc, x=150, y=150, target=target, rank=0.5)
+ actions = [act([], 0.5) for act in doc.actions]
+ source = bulletml.Bullet(
+ x=150, y=150, target=target,
+ actions=actions, rank=0.5)
source.vanished = True
active.add(source)
target.x, target.y = pygame.mouse.get_pos()
target.x /= 2
target.y /= 2
source.vanished = True
active.add(source)
target.x, target.y = pygame.mouse.get_pos()
target.x /= 2
target.y /= 2
+ target.y = 300 - target.y
if not paused or go:
if not paused or go:
-
- for obj in list(active):
+ lactive = list(active)
+ start = time.time()
+ count = len(active)
+ for obj in lactive:
new = obj.step()
total += len(new)
active.update(new)
new = obj.step()
total += len(new)
active.update(new)
@@
-75,11
+101,19
@@
def main(argv):
or not (-50 < obj.x < 350)
or not (-50 < obj.y < 350)):
active.remove(obj)
or not (-50 < obj.x < 350)
or not (-50 < obj.y < 350)):
active.remove(obj)
+ if lactive:
+ collides_all(lactive[0], lactive)
+ elapsed = time.time() - start
frames += 1
if frames % 100 == 0:
print " Processing: %04d: %d bullets, %d active." % (
frames += 1
if frames % 100 == 0:
print " Processing: %04d: %d bullets, %d active." % (
- frames, total, len(active))
+ frames, total, count)
+ if elapsed:
+ seconds_per_bullet = elapsed / count
+ bullets_per_second = count / elapsed
+ print " %g seconds per bullet (60Hz max: %g)." % (
+ seconds_per_bullet, bullets_per_second / 60)
screen.fill([0, 0, 0])
for obj in active:
screen.fill([0, 0, 0])
for obj in active:
@@
-93,10
+127,10
@@
def main(argv):
y *= 2
x -= 1
y -= 1
y *= 2
x -= 1
y -= 1
- screen.blit(bullet, [x, y])
- pygame.display.flip()
-
+ bullet = bullets.get(obj.appearance, red)
+ screen.blit(bullet, [x, 600 - y])
clock.tick(60)
clock.tick(60)
+ pygame.display.flip()
print " Finished: %04d: %d bullets." % (frames, total)
print " Finished: %04d: %d bullets." % (frames, total)