import pygame
from pygame.locals import *
import random


def foo():
  pass

# Initialize PyGame
pygame.init()
pygame.display.set_caption('Drawing Screen')

size = width, height = 640, 480
screen = pygame.display.set_mode(size)
screen.fill((255,255,255))
points = []	

# Fill background
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((255, 255, 255))

font = pygame.font.Font(None, 30)


def write(screen,s,(x,y),color=(10,10,10)):
   text = font.render(s, 1, color)
   textpos = text.get_rect()
   textpos.centerx = x
   textpos.centery = y
   return screen.blit(text, textpos)


def go(points):
  while 1:
    info = []
    pygame.time.delay(1000)
    #First, render points at original location
    for p in points:
      psurf = pygame.Surface(screen.get_size())
      psurf.fill((255,255,255))
      orect = p.draw(psurf,(p.x,p.y))
      write(psurf,p.name,(p.x-15,p.y-15))
      crect = orect
      speed = [random.randint(-20,20),random.randint(-20,20)]
      info.append([psurf,orect,crect,speed])
  
    for tick in range(70):
      pygame.time.delay(50)
      # Handle events
      for event in pygame.event.get():
          if event.type == QUIT:
	    pygame.quit()
            return
	  elif event.type == KEYDOWN:
              if event.key == K_ESCAPE:return

      screen.fill((255,255,255))
      write(screen,"tick="+str(tick),(40,20))
      for p in info:
	p[2] = p[2].move(p[3])
	if p[2].left < 0 or p[2].right > width:
	  p[3][0] = -p[3][0]
	if p[2].top < 0 or p[2].top > height:
	  p[3][1] = -p[3][1]
	screen.blit(p[0],p[2].inflate(40,40),p[1].inflate(40,40))
      pygame.display.flip()
    
    for p in points:
      p.jump(random.randint(0,width),random.randint(0,height))

#-----------------------------------------------------

def shMove(p,(x,y)):
  dx = x / 50.0
  dy = y / 50.0
  
  psurf = pygame.Surface(screen.get_size())
  psurf.fill((255,255,255))
  orect = p.draw(psurf,(p.x,p.y))
  crect = orect

  for i in range(50):
    screen.fill((255,255,255),crect)
    crect = crect.move(( int(i * dx), int(i*dy)))
    screen.blit(psurf,crect,orect)
    pygame.display.flip()
    pygame.time.delay(70)

    
  
