import random
import sys
import pygame
from pygame.locals import *
from Richter.Sprite import Sprite
import Richter.Engine as Engine
from Numeric import array,reshape
try:
from OpenGL.GL import *
from OpenGL.GLU import *
except:
print 'This requires PyOpenGL'
raise SystemExit
resolution = (640,480)
if sys.argv[1:]:
spritefile = sys.argv[1:]
else:
spritefile = 'img/ball.png'
class Bouncer:
def __init__(self):
self.velocity = [random.uniform(-10,10),random.uniform(-10,10)]
self.sprite = Sprite(spritefile)
self.sprite.framerate = 9.0
self.sprite.play()
self.sprite.position = [random.randrange(0,resolution[0]),random.randrange(0,resolution[1])]
self.sprite.gen_displaylist()
self.draw = self.sprite.draw
def update(self):
if self.sprite.position[0] < 0:
self.sprite.position[0] = 0
self.velocity[0] = -self.velocity[0]
elif self.sprite.position[0] > resolution[0]:
self.sprite.position[0] = resolution[0]
self.velocity[0] = -self.velocity[0]
if self.sprite.position[1] < 0:
self.sprite.position[1] = 0
self.velocity[1] = -self.velocity[1]
elif self.sprite.position[1] > resolution[1]:
self.sprite.position[1] = resolution[1]
self.velocity[1] = -self.velocity[1]
self.sprite.position[0] += self.velocity[0]
self.sprite.position[1] += self.velocity[1]
Engine.init(resolution)
bouncers = []
for i in range(0,1000):
h = Bouncer()
bouncers.append(h)
pygame.display.set_caption("bouncetest")
def update():
for b in bouncers:
b.update()
Engine.updaters.append(update)
def draw():
for b in bouncers:
b.draw()
Engine.drawers.append(draw)
n = 0
def fpsthing():
global n
n += 1
if n == 100:
fps = "%0.1f FPS" % Engine.fpsman.get_fps()
pygame.display.set_caption("bouncetest [%s]" % fps)
print fps
n = 0
Engine.updaters.append(fpsthing)
Engine.run()