admin管理员组文章数量:1794759
用 turtle 绘制一颗樱花树
用 turtle 绘制一颗樱花树,大概长下面这样
1. 导入库
代码语言:javascript代码运行次数:0运行复制import turtle
import random
- turtle: 用于绘图的库,提供了简单的图形绘制接口。
- random: 用于生成随机数,增加绘制树枝和花瓣的自然效果。
2. 设置画布
代码语言:javascript代码运行次数:0运行复制turtle.bgcolor("skyblue")
t = turtle.Turtle()
t.speed(0)
- turtle.bgcolor(“skyblue”): 设置背景颜色为天空蓝。
- t = turtle.Turtle(): 创建一个
Turtle
对象,用于绘图。 - t.speed(0): 设置绘制速度为最快(0表示最快)。
3. 绘制树的函数
代码语言:javascript代码运行次数:0运行复制def draw_tree(branch_len, t):
if branch_len < 10:
t.color("pink")
t.begin_fill()
t.circle(5)
t.end_fill()
t.color("brown")
return
- draw_tree: 递归函数,用于绘制树。
- if branch_len < 10: 当分支长度小于10时,绘制花瓣。
- t.color(“pink”): 设置颜色为粉色,准备绘制花瓣。
- t.circle(5): 绘制半径为5的圆,模拟樱花。
- return: 结束当前递归,回到上一级。
4. 绘制树枝
代码语言:javascript代码运行次数:0运行复制 t.pensize(branch_len / 10)
t.forward(branch_len)
- t.pensize(branch_len / 10): 根据分支长度设置笔的粗细。
- t.forward(branch_len): 向前移动画笔,绘制当前树枝。
5. 递归绘制左右分支
代码语言:javascript代码运行次数:0运行复制 t.right(20)
draw_tree(branch_len - random.randint(10, 15), t)
t.left(40)
draw_tree(branch_len - random.randint(10, 15), t)
t.right(20)
t.backward(branch_len)
- t.right(20): 向右转20度,为右侧分支准备。
- draw_tree(…): 递归调用绘制右侧分支,长度随机减少。
- t.left(40): 向左转40度,为左侧分支准备。
- draw_tree(…): 递归调用绘制左侧分支,长度随机减少。
- t.right(20): 回到原来的方向。
- t.backward(branch_len): 回到当前树枝的起点。
6. 主程序
代码语言:javascript代码运行次数:0运行复制def main():
t.color("brown")
t.left(90) # 面朝上
t.up()
t.goto(0, -200) # 向上移动到中心位置
t.down()
t.forward(100) # 向上移动
draw_tree(100, t)
turtle.done()
- t.color(“brown”): 设置树干颜色为棕色。
- t.left(90): 画笔向左旋转90度,面朝上。
- t.up(): 抬起画笔,移动时不绘制。
- t.goto(0, -200): 移动到坐标(0, -200),调整树的位置。
- t.down(): 放下画笔,准备绘制。
- t.forward(100): 向上绘制树干的底部。
- draw_tree(100, t): 调用绘制树的函数,从长度为100开始。
- turtle.done(): 完成绘制,保持窗口开启。
总代码如下:
代码语言:javascript代码运行次数:0运行复制import turtle
import random
# 设置画布
turtle.bgcolor("skyblue")
t = turtle.Turtle()
t.speed(0)
# 绘制树的函数
def draw_tree(branch_len, t):
if branch_len < 10:
# 画花瓣
t.color("pink")
t.begin_fill()
t.circle(5)
t.end_fill()
t.color("brown")
return
# 绘制树枝
t.pensize(branch_len / 10)
t.forward(branch_len)
# 右侧分支
t.right(20)
draw_tree(branch_len - random.randint(10, 15), t)
# 左侧分支
t.left(40)
draw_tree(branch_len - random.randint(10, 15), t)
# 返回到主干
t.right(20)
t.backward(branch_len)
# 主程序
def main():
t.color("brown")
t.left(90) # 面朝上
t.up()
t.goto(0, -400) # 向上移动到中心位置
t.down()
t.forward(100) # 向上移动
draw_tree(100, t)
turtle.done()
if __name__ == "__main__":
main()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-10-23,如有侵权请联系 cloudcommunity@tencent 删除函数branchdrawtree递归本文标签: 用 turtle 绘制一颗樱花树
版权声明:本文标题:用 turtle 绘制一颗樱花树 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754641170a1704680.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论