/bouncetest.py
#!/usr/bin/env python

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 = (1280,1024)
resolution = (640,480)
#resolution = (320,240)

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.color = (random.random(),random.random(),random.random(), 0.5)
		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.velocity[1] -= 1.0

		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()