from JyModule import *
from math import *

bluecenters = []
basis = [[1, 0], [0.5, math.sqrt(3)/2]]
for i in range(-10, 10):
    for j in range(-10, 10):
        bluecenters.append([
            i*basis[0][0] + j*basis[1][0],
            i*basis[0][1] + j*basis[1][1]])
redcenters = []

def draw():
    beginpage()
    center()

    gsave()
    scale(50)
    setlinewidth(2)

    for p in bluecenters:
        newpath()
        circle(p, 0.5)
        fill([0.7, 0.7, 1])
        stroke(0.4)

    for p in redcenters:
        newpath()
        circle(p, 0.5)
        fill([1, 0.7, 0.7])
        stroke(0.4)

    placemoveable(point)
    grestore()

    endpage()

def dist(center, x, y):
    dx = center[0] - x
    dy = center[1] - y
    return sqrt(dx*dx + dy*dy)

def click(point, x, y):
    for p in bluecenters:
        if dist(p, x, y) < 0.5:
            bluecenters.remove(p)
            redcenters.append(p)
            return
    for p in redcenters:
        if dist(p, x, y) < 0.5:
            redcenters.remove(p)
            bluecenters.append(p)

point = Moveablepoint(0, 0, click)
point.setsize(500)
point.setfilled(False)
point.setstroked(False)
point.listentoclicksonly(True)
addmoveable(point)

openframe(400, 400, draw)
