您的位置:首页 > 科技 > IT业 > 台州网站建设开发_如何制作微信打卡小程序_日照网络推广公司_seo网站快速排名外包

台州网站建设开发_如何制作微信打卡小程序_日照网络推广公司_seo网站快速排名外包

2024/12/26 10:11:14 来源:https://blog.csdn.net/cnds123/article/details/144632809  浏览:    关键词:台州网站建设开发_如何制作微信打卡小程序_日照网络推广公司_seo网站快速排名外包
台州网站建设开发_如何制作微信打卡小程序_日照网络推广公司_seo网站快速排名外包

使用Turtle库实现,鼠标左键绘制路径,用鼠标右键结束绘制,小海龟并沿路径移动

Turtle库是Python标准库的一部分,它提供了一种基于命令的图形绘制方式。Turtle模块通过一个“海龟”(Turtle)对象在屏幕上移动和绘制图形,支持诸如前进、后退、左转、右转等操作。此外,Turtle还支持设置颜色等功能。

现在,使用Turtle库实现,鼠标左键绘制路径,用鼠标右键结束绘制时,小海龟并沿路径移动。


源码如下:

# 鼠标左键绘制路径,用鼠标右键结束绘制时,小海龟并沿路径移动。
import turtle
import math# 全局变量
screen = None
draw_turtle = None
move_turtle = None
path = []def setup_screen():global screen, draw_turtle, move_turtle# 设置屏幕screen = turtle.Screen()screen.title("海龟跟随鼠标绘制路径")screen.setup(width=800, height=600)# 创建绘图海龟draw_turtle = turtle.Turtle()draw_turtle.hideturtle()draw_turtle.speed(0)# 创建移动海龟move_turtle = turtle.Turtle()move_turtle.shape('turtle')move_turtle.color('red')#move_turtle.penup()#move_turtle.hideturtle()def start_drawing(x, y):global  path# 开始绘制路径path = [(x, y)]# 准备绘图海龟draw_turtle.penup()draw_turtle.goto(x, y)draw_turtle.pendown()def continue_drawing(x, y):global path# 继续绘制路径draw_turtle.goto(x, y)path.append((x, y))def calculate_angle(index):# 计算海龟前进角度if index + 1 < len(path):current = path[index]next_point = path[index + 1]dx = next_point[0] - current[0]dy = next_point[1] - current[1]return math.degrees(math.atan2(dy, dx))return 0def move_along_path(index=0):# 沿路径移动if index < len(path) - 1:current = path[index]next_point = path[index + 1]# 计算距离和角度distance = math.sqrt((next_point[0] - current[0])**2 + (next_point[1] - current[1])**2)# 设置海龟朝向angle = calculate_angle(index)move_turtle.setheading(angle)# 移动move_turtle.goto(next_point[0], next_point[1])# 递归移动到下一个点screen.ontimer(lambda: move_along_path(index + 1), 50  # 移动间隔时间)else:# 路径结束move_turtle.penup()def finish_drawing(x, y):    # 显示并移动海龟if len(path) > 1:move_turtle.showturtle()start_x, start_y = path[0]move_turtle.goto(start_x, start_y)move_turtle.pendown()move_turtle.setheading(calculate_angle(0))# 开始沿路径移动move_along_path()def main():# 初始化屏幕和海龟setup_screen()# 绑定鼠标事件screen.onscreenclick(start_drawing, 1)  # 左键开始绘制screen.onscreenclick(continue_drawing, 1)  # 左键继续绘制screen.onscreenclick(finish_drawing, 3)  # 右键结束绘制screen.listen()# 启动主循环turtle.done()# 运行程序
if __name__ == "__main__":main()

附、Python的turtle模块的事件处理 https://blog.csdn.net/cnds123/article/details/143509310

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com