示例#1
0
def redCross():
	def createRedCross(w, h):
		cross = GCompound()
		rect_1 = GRect(-w / 2, -h / 2, LONG_SIDE, SHORT_SIDE)
		rect_1.setFilled(True)
		rect_1.setColor('red')
		cross.add(rect_1)
		rect_2 = GRect(-h / 2, -w / 2, SHORT_SIDE, LONG_SIDE)
		rect_2.setFilled(True)
		rect_2.setColor('red')
		cross.add(rect_2)
		return cross
	def step():
		nonlocal cross, theta
		cross.movePolar(VELOCITY, theta)
	def clickAction(e):
		nonlocal theta
		if cross.contains(e.getX(), e.getY()):
			theta = random.uniform(0,360)

	gw = GWindow(GWINDOW_WIDTH, GWINDOW_HEIGHT)
	theta = random.uniform(0,360)
	cross = createRedCross(LONG_SIDE, SHORT_SIDE)
	gw.add(cross, GWINDOW_WIDTH / 2, GWINDOW_HEIGHT / 2)
	gw.addEventListener('click', clickAction)
	timer = gw.createTimer(step, TIME_STEP)
	timer.setRepeats(True)
	timer.start()
示例#2
0
def fireworks():
    def step():
        nonlocal dx, dy, dot, x, y, timer_2
        if dot.getY() < y:
            timer.stop()
            timer_2.start()
        dot.move(dx, dy)

    def animateDot():
        nonlocal current_size, desired_size
        if current_size < desired_size:
            current_size += DELTA_RADIUS
            x = dot.getX() - DELTA_RADIUS / 2
            y = dot.getY() - DELTA_RADIUS / 2
            dot.setBounds(x, y, current_size, current_size)

    random.seed()
    colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet']
    gw = GWindow(GWINDOW_WIDTH, GWINDOW_HEIGHT)
    dot = GOval((GWINDOW_WIDTH - START_SIZE) / 2, GWINDOW_HEIGHT, START_SIZE,
                START_SIZE)
    dot.setColor(random.choice(colors))
    gw.add(dot)
    y = random.uniform(0, GWINDOW_HEIGHT / 2)
    x = random.uniform(0, GWINDOW_WIDTH)
    dy = (y - dot.getY()) / FLIGHT_TIME
    dx = (x - dot.getX()) / FLIGHT_TIME
    current_size = START_SIZE
    desired_size = DELTA_RADIUS * EXPANSION_TIME

    timer = gw.createTimer(step, FLIGHT_TIME)
    timer.setRepeats(True)
    timer.start()

    timer_2 = gw.createTimer(animateDot, EXPANSION_TIME)
    timer_2.setRepeats(True)