海龟画完红色的正方形后,再单击,在画布上的项目们都会移动.
""" 获取填充块的左右上下坐标 单击后移动字和海龟,填充块会移动并且碰到边缘会反弹 """ import time import turtle from random import randint turtle.shape('turtle') turtle.penup() turtle.speed(1) turtle.fillcolor('red') turtle.begin_fill() for _ in range(4): turtle.fd(100) turtle.rt(90) turtle.end_fill() hg = turtle.getturtle() sc = turtle.getscreen() cv = turtle.getcanvas() sw = sc.window_width() # 屏宽 sh = sc.window_height() # 屏高 def move(x,y): sc.onclick(None) dx = randint(-5,5) dy = randint(-5,5) while True: cv.move(text,1,0) turtle.setx(turtle.xcor()-1) cv.move(redsquare,dx,dy) cv.update() xy = cv.coords(redsquare) left = min([xy[i] for i in range(len(xy)) if i%2==0]) right = max([xy[i] for i in range(len(xy)) if i%2==0]) top = max([xy[i] for i in range(len(xy)) if i%2==1]) bottom = min([xy[i] for i in range(len(xy)) if i%2==1]) if left<= -sw//2 or right>= sw//2:dx = -dx if top>= sh//2 or bottom<= -sh//2:dy = -dy time.sleep(0.01) redsquare = hg.items[-1] zt = ('',32,'underline') turtle.sety(turtle.ycor() + 100) turtle.write('请单击',align='center',font=zt) text = hg.items[-1] sc.onclick(move) sc.mainloop()
发表评论