import pygame, sys,os
from pygame.locals import *
from math import *

pygame.init()
if not pygame.font:     print 'Warning, fonts disabled'
if not pygame.mixer:    print 'Warning, sound disabled'

screen = pygame.display.set_mode((160, 160))
clock = pygame.time.Clock()
pygame.display.set_caption('beurk')
pygame.mouse.set_visible(1)
screen.fill((0, 0, 0))

class cursor(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.rect = pygame.Rect(0,0,0,0)

    def update(self):
        self.rect.x, self.rect.y = pygame.mouse.get_pos()

    def draw(self):
        pass

cursor = cursor()

class planet(pygame.sprite.Sprite):
    def __init__(self, xpos, ypos, size,color):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface([(2*size), (2*size)])
        self.rect = pygame.Rect(xpos, ypos, 2*size, 2*size)
        self.image.fill((0,0,0))
        pygame.draw.circle(self.image, color, (size,size), size, 3)
        self.size = size
        self.color = color
        self.old = color

    def update(self):
        if self.color != self.old:
            self.old = self.color
            pygame.draw.circle(self.image, self.color, (self.size,self.size), self.size, 3)

    def draw(self):
        pass

class ship(pygame.sprite.Sprite):
    def __init__(self,src,dest):
        pygame.sprite.Sprite.__init__(self)
        self.home = src
        self.target = dest
        xpos,ypos = src.rect.centerx, src.rect.centery
        self.xdest, self.ydest = dest.rect.centerx, dest.rect.centery
        color = src.color
        self.image = pygame.Surface([5, 5])
        self.rect = pygame.Rect(xpos,ypos, 5,5)
        self.image.fill(color)

    def update(self):
        if self.rect.centerx != self.xdest or self.rect.centery != self.ydest:
            if self.rect.centerx < self.xdest:
                self.rect.move_ip(1,0)
            if self.rect.centerx > self.xdest:
                self.rect.move_ip(-1,0)
            if self.rect.centery < self.ydest:
                self.rect.move_ip(0,1)
            if self.rect.centery > self.ydest:
                self.rect.move_ip(0,-1)

    def draw(self):
        pass

mercure = planet(20,20,6,(255,255,255))
venus = planet(30,50,9,(255,255,255))
earth = planet(80,80,10,(0,0,255))
mars = planet(130,90,8,(255,255,255))
gamegrp = pygame.sprite.RenderUpdates((mercure, venus, mars))
playergrp = pygame.sprite.RenderUpdates((earth))

playersrc = None
playerdes = None

while True :
    clock.tick(15)

    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit(0)

        elif event.type == MOUSEBUTTONDOWN:
            for sprite in pygame.sprite.spritecollide (cursor, playergrp, False):
                playersrc = sprite
                print "go"

        elif event.type == MOUSEBUTTONUP:
            if playersrc != None:
                for sprite in pygame.sprite.spritecollide (cursor, gamegrp, False):
                    playerdes = sprite
                    print "die"

    if playersrc != None and playerdes != None:
        playergrp.add((ship(playersrc,playerdes)))
        playersrc = None
        playerdes = None

    collision = pygame.sprite.groupcollide (gamegrp, playergrp, False, True)
    for planet in collision:
        [craft] = collision[planet]
        if craft.target == planet:
            planet.remove(gamegrp)
            planet.add(playergrp)
            planet.color = craft.home.color
            craft.kill()

    screen.fill((0, 0, 0))
    cursor.update()
    
    gamegrp.update()
    gamegrp.draw(screen)
    
    playergrp.update()
    playergrp.draw(screen)

    pygame.display.flip()
