Example #1
0
class Star():
    def __init__(self, radius, color):
        self.color = color
        self.setSize(radius)

    def setSize(self, size):
        # First triangle, size is radius of circumcircle, center at (0,0)
        self.tri1 = GeneralPath()
        self.tri1.moveTo(size, 0)
        self.tri1.lineTo(int(-0.5 * size), int(0.866 * size))
        self.tri1.lineTo(int(-0.5 * size), int(-0.866 * size))
        self.tri1.closePath()

        # Second triangle like first, but rotated 180 degrees
        self.tri2 = self.tri1.clone()
        t = AffineTransform()
        t.rotate(math.pi)
        self.tri2.transform(t)

    def turn(self, angle):
        t = AffineTransform()
        t.rotate(angle)
        self.tri1.transform(t)
        self.tri2.transform(t)

    def showAt(self, mx, my):
        bg.setPaintColor(self.color)
        t = AffineTransform()
        t.translate(mx, -50 + my % 650)  # Restrict to playground
        # Cloning to avoid side effects
        gp1 = self.tri1.clone()
        gp2 = self.tri2.clone()
        gp1.transform(t)
        gp2.transform(t)
        bg.fillGeneralPath(gp1)
        bg.fillGeneralPath(gp2)