樱花飘落

文章目录

  • 樱花飘落
    • 导入模块和设置屏幕
    • 定义树枝绘制函数
    • 计算树枝参数
    • 绘制左右分支
    • 绘制树叶和飘落效果
    • 定义樱花绘制函数
    • 绘制樱花并定时重复
    • 设置屏幕和绘制树
    • 开始樱花动画
    • 启动事件循环

屏幕录制 2024-06-21 155836


樱花飘落

导入模块和设置屏幕

通过递归函数tree绘制了一棵分形的樱花树,并通过draw_sakura函数实现了樱花飘落的动画效果。程序使用了Turtle库的基本命令,如forward、right、left、circle等来绘制图形,并通过ontimer实现了定时重复执行某个函数的功能。

from turtle import *
from random import *
from math import *

导入Turtle图形库、random和math模块。

定义树枝绘制函数

def tree(n, l):pd()  # 下笔# 阴影效果t = cos(radians(heading() + 45)) / 8 + 0.25pencolor(t, t, t)pensize(n / 3)forward(l)  # 画树枝

定义一个绘制树枝的函数tree,参数n代表树枝分叉的层次,l代表树枝的长度。pd()是Turtle库的命令,表示将画笔放下(开始绘制)。

计算树枝参数

    if n > 0:b = random() * 15 + 10  # 右分支偏转角度c = random() * 15 + 10  # 左分支偏转角度d = l * (random() * 0.25 + 0.7)  # 下一个分支的长度

如果树枝的层次n大于0,就计算左右分支的角度和下一个分支的长度。

绘制左右分支

        # 右转一定角度,画右分支right(b)tree(n - 1, d)# 左转一定角度,画左分支left(b + c)tree(n - 1, d)# 转回来right(c)

通过递归调用tree函数来绘制左右分支。

绘制树叶和飘落效果

    else:# 画叶子right(90)n = cos(radians(heading() - 45)) / 4 + 0.5ran = random()# 这里相比于原来随机添加了填充的圆圈,让樱花叶子看起来更多一点if (ran > 0.7):begin_fill()circle(3)fillcolor('pink')# 把原来随机生成的叶子换成了统一的粉色pencolor("pink")circle(3)if (ran > 0.7):end_fill()left(90)

如果树枝的层次n不大于0,就绘制叶子。叶子是随机填充的粉色圆圈。

# 添加0.3倍的飘落叶子if (random() > 0.7):pu()# 飘落t = heading()an = -40 + random() * 40setheading(an)dis = int(800 * random() * 0.5 + 400 * random() * 0.3 + 200 * random() * 0.2)forward(dis)setheading(t)# 画叶子pd()right(90)n = cos(radians(heading() - 45)) / 4 + 0.5pencolor(n * 0.5 + 0.5, 0.4 + n * 0.4, 0.4 + n * 0.4)circle(2)left(90)pu()# 返回t = heading()setheading(an)backward(dis)setheading(t)

添加飘落的叶子,通过随机数决定是否绘制飘落的叶子,以及叶子的位置和颜色。

pu()
backward(l)  # 退回

将画笔抬起,并退回到上一级树枝的起点。

定义樱花绘制函数

def draw_sakura():# 随机生成樱花的位置和颜色x = randrange(-600, 600)y = randrange(-600, 600)n = random()pencolor(n * 0.5 + 0.5, 0.4 + n * 0.4, 0.4 + n * 0.4)

定义一个绘制樱花的函数draw_sakura,随机生成樱花的位置和颜色。

绘制樱花并定时重复

	# 移动到随机位置并绘制樱花up()goto(x, y)down()begin_fill()circle(2)fillcolor('pink')end_fill()up()# 设置ontimer以便在一段时间后再次调用此函数ontimer(draw_sakura, 50)

移动到随机位置,绘制一个填充为粉色的圆作为樱花,并设置一个定时器ontimer,这样在50毫秒后会再次调用draw_sakura函数,从而产生樱花飘落的效果。

设置屏幕和绘制树

# 设置屏幕
setup(800, 600)
bgcolor(0.956, 0.9255, 0.9882)
ht()
speed(0)
tracer(0, 0)

设置屏幕的大小为800x600像素,背景颜色为浅色调,隐藏turtle的箭头,设置绘制速度为最快,并且关闭动画效果(即立即显示绘制结果)。

# 绘制树
pu()
backward(50)
left(90)
pu()
backward(300)
tree(12, 100)

移动到起始位置,并调用tree函数开始绘制树,树枝的层次为12,初始长度为100。

开始樱花动画

# 开始绘制樱花动画
draw_sakura()

调用draw_sakura函数开始绘制樱花动画。

启动事件循环

# 启动事件循环
done()

启动Turtle的事件循环,这样程序会一直运行,直到用户关闭图形窗口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/856961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ollama部署大模型并安装WebUi

Ollama用于在本地运行和部署大型语言模型(LLMs)的工具,可以非常方便的部署本地大模型 安装 Linux curl -fsSL https://ollama.com/install.sh | sh 我是ubuntu系统安装,其他系统可以看项目的开源地址有写 GitHub - ollama/oll…

Autosar规范的ARM内核平台/PowerPC内核平台的微控制器的开发解决方案

Autosar规范的ARM内核平台/PowerPC内核平台的微控制器的开发解决方案 Autosar规范的ARM内核平台/PowerPC内核平台的微控制器的开发解决方案 目录 引言Autosar简介ARM内核平台的开发解决方案 3.1 ARM架构概述3.2 Autosar在ARM平台的实现3.3 典型的ARM微控制器3.4 开发工具和环…

html渲染的文字样式大小不统一解决方案

React Hooks 封装可粘贴图片的输入框组件(wangeditor)_react 支持图片拖拽的输入框-CSDN博客 这篇文章中的wangediter可粘贴图片的输入框,输入的文字和粘贴的文字在dangerouslySetInnerHTML渲染后出现了字体不统一的情况 在html中右键检查可…

zerotier-one自建根服务器方法二

一、简介 zerotier-one免费账户有25设备的限制,如果自己的设备多了就需要付费。不过zerotier-one是开源软件,我们可以自己建立根服务器,不用付费速度还很快。 由于时间关系上一篇文章没有写完,今天继续。 二、准备工作 准备一…

postman测试接口使用

背景: 隔了一段时间没有用postman,有些忘记了,谨以此文来记录postman的使用,如有忘记就可以快速回忆 使用: 点击这个号,是创建接口页面 这里的复选框可供我们选择接口的rest方式 请求路径: …

什么是停车资产数字化运营管理?“AI空间管理”是什么意思?

停车资产数字化运营管理,由捷顺科技子公司捷顺智城率先创新性提出,其指的是一种以数字化技术和专业运营手段为基础的管理模式,旨在通过AI空间数字化、绿色低碳化、生态商业化、服务标准化等举措,降低企业成本、提升资产管理效率,并…

一站式实时数仓Hologres整体能力介绍

讲师:阿里云Hologres PD丁烨 一、产品定位 随着技术的进步,大数据正从规模化转向实时化处理。用户对传统的T1分析已不满足,期望获得更高时效性的计算和分析能力。例如实时大屏,城市大脑的交通监控、风控和实时的个性化推荐&…

mybatis框架相关问题总结(本地笔记搬运)

1、背景 2、运行启动问题 问题一 运行spring boot项目时报错:‘factoryBeanObjectType‘: java.lang.String 解决一 版本问题,springframework版本和mybatis/mybatis-plus版本不兼容。现spring-boot使用3.3.0版本,mybatis-plus使用3.5.7…

下班时间如何安排?

随着互联网的飞速发展和数字化时代的来临,越来越多的人开始探索除了主业以外的赚钱途径,以增加收入来源。本文将为您介绍几种当前热门的高薪副业项目,包括网络任务赚钱、开设个人网店、电商导购推广、在线辅导教学、技能变现服务、视频创作分…

ansys apdl如何将选中的节点储存到变量中

步骤如下: 1.使用 *GET 命令来获取选中节点的数量 *GET, numNodes, NODE, 0, COUNT这里,numNodes 是你用来存储节点数量的变量。 2.接着,使用 *DIM 命令来定义一个用于存储节点标签的数组 *DIM, nodeList, , numNodesnodeList 就是用来存储…

ROS程序设计系列 - 4.ROS Programming

ROS程序设计系列 - 4.ROS Programming 1. 源由2. 概念2.1 ROS services2.2 ROS actions2.3 ROS time2.4 ROS bags2.5 Debugging 3. 常见应用4. 示例4.1 运行4.2 代码 5. 视频课程 1. 源由 继续学习ROS编程,本章主要是一些基本组件和概念。并结合示例代码进行阐述。…

知识篇| 全面认识Git lfs

我们经常在使用hugging face上模型和数据集时候,如果要想模下载到本地,要使用git lfs 方式下载。 那么与git有什么关系?什么是git lfs? 现在最流行的代码管理工具就是git, Git 是业界流行的分布式版本控制工具,仓库与远端仓库同样保存了全量的文件和变更历史&am…

java:Multiple Bounds--类型变量(TypeVariable)定义的高级用法--<A extends ClassAIfAIfB >

做Java开发工作好多年了。今天偶然翻到 java.lang.TypeVariable的源码&#xff0c;好奇为什么 TypeVariable.getBounds()返回类型是个数组。 一般不都是<T extends Number> 这样用码&#xff1f;T难道还能extends多个类型&#xff1f; 同问&#xff1a;不应该是extend,为…

CSS-0_2 CSS和继承(inherit initial)

文章目录 CSS的层叠和继承inheritinitial很多你以为的样式初始值&#xff0c;其实是用户代理样式 碎碎念 CSS的层叠和继承 在上一篇 CSS和层叠、样式优先级 里已经讲过了层叠和优先级之间的关系&#xff0c;但是在CSS中的层叠除了体现在争抢露脸机会的优先级之外&#xff0c;还…

Python自动化(2)——键盘模拟

Python自动化(2)——键盘模拟 前台键盘模拟 前台键盘模拟和后台键盘模拟的区别在于&#xff0c;是否绑定窗口。即前台模拟是只模拟键盘操作&#xff0c;例如按下按键a&#xff0c;如果聚焦在一个文本文档的编辑区&#xff0c;那么就会把这个a输入进去。但如果是聚焦到了浏览器…

等保测评--第一级通用要求2

安全管理制度 管理 制 度 应建立日常管理活动中常用的安全管理制度 安全管理机构 岗位设置 应设立系统管理员等岗位,并定义各个工作岗位的职责 人员配备 应配备一定数量的系统管理员 授权和审批 应根据各个部门和岗位的职责明确授权审批事项、审批部门和批准人等 安全…

前端面试js高频手写大全

res.push(fn(arr[i])) } return res } 3. reduce实现数组的map方法 Array.prototype.myMap function(fn,thisValue){ var res []; thisValue thisValue||[]; this.reduce(function(pre,cur,index,arr){ return res.push(fn.call(thisValue,cur,index,arr)); },[])…

云计算考试题

Cloud ❀ 云计算-虚拟化常见的两种架构_裸金属架构和宿主型架构的区别-CSDN博客 为啥要成2 11 bcd 16 acd abcd BCD NAS为啥支持文件存储的协议 选BCD 什么是网络文件系统 选bcd 错题 选abc 选bcd 选 abd

Spring Cloud Gateway网关下的文档聚合(knife4j)

文章目录 引言I 服务发现自动聚合(discover)1.1 配置1.2 服务发现的路由聚合策略-数据来源1.3 编写动态路由实现类1.4 依赖II 其他2.1 网关动态加载swagger路由和配置2.2 无法处理 lb://URI,返回503错误。2.3 SpringBoot3 解决NoResourceFoundException: No static resource f…

让PG停摆一周的大会?2024 PGConf.dev 技术大盘点(下)

PGCon.Dev 的前身是 PGCon —— 最知名的 PostgreSQL Hacker 年度聚会&#xff0c;也可以说是决定 PostgreSQL 未来的会议。从 2007 年成立以来&#xff0c;一直都是在加拿大渥太华举办至今。 有多隆重呢&#xff1f;PG 核心组的 Peter Eisentraut 在会后做了一个统计&#xff…