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)