如何用python的turtle模块在界面中实现自动画图
turtle模块在界面中实现自动画图构想
我想用turtle模块实现一些动态的,或者说自动完成一些简单画作,当然我们不是为了学画画,重点是我们如何知道python代码是怎么去实现的。
思路、想法
我想画一棵树
然后画点叶子
然后再画点果子
为了好看,增加一些不同的果子
这个树放在夜晚
那么给夜晚加点光,比如繁星
下面先看看的具体实现,进一步方便理解我们想要实现的界面,文章这块好像不能直接发视频,那只能发下调试中的画的图片片段。
turtle模块画画的片段
前面的果实不够明显,星空用了红色,星空也改成白色,并对果实和叶子的区域进行了调试得到以下的碎片。
以下是电脑画作过程
以下是完整代码
import turtle
import random
# 初始化画布和画笔
t = turtle.Turtle()
t.speed(3) # 最快速度
t.left(90) # 初始方向朝上
t.penup()
t.goto(0, -200) # 移动到画布底部中央
t.pendown()
# 设置颜色模式为HSV(便于颜色渐变)
turtle.colormode(255)
turtle.bgcolor("#1a1a1a") # 深灰色背景
def draw_tree(branch_len, angle, width):
"""递归绘制分形树"""
if branch_len > 5:
# 根据分支长度计算颜色(渐变色)
r = int(50 + branch_len * 2)
g = int(100 + branch_len * 1.5)
b = int(150 - branch_len * 0.5)
t.pencolor(r, g, b)
t.pensize(width)
t.forward(branch_len)
# 绘制右侧分支
t.right(angle)
draw_tree(branch_len - random.randint(10,15), angle * 0.8, width * 0.7)
# 绘制左侧分支
t.left(angle * 2)
draw_tree(branch_len - random.randint(10,15), angle * 0.8, width * 0.7)
# 返回原位置
t.right(angle)
t.backward(branch_len)
# 开始绘制(初始参数可调整效果)
draw_tree(80, 30, 12)
# 添加装饰性星星
for _ in range(60):
t.penup()
t.goto(random.randint(-150,85), random.randint(-100,75))
t.pendown()
t.pencolor("green")#gold 金色
t.dot(random.randint(3,6))#画圆心,用随机直径()像素,你也可以画其他的
for _ in range(60):
t.penup()
t.goto(random.randint(-150,85), random.randint(-100,75))
t.pendown()
t.pencolor("gold")#gold 金色
t.dot(random.randint(5,10))#画圆心,用随机直径()像素,你也可以画其他的
for _ in range(60):
t.penup()
t.goto(random.randint(-150,85), random.randint(-100,75))
t.pendown()
t.pencolor("red")#gold 金色
t.dot(random.randint(5,10))#画圆心,用随机直径()像素,你也可以画其他的
for _ in range(60):#画的个数
t.penup()
t.goto(random.randint(-150,80), random.randint(-80,50))#x(左负,右正),y轴(下负上正)
t.pendown()
t.pencolor("#ffff99")
t.dot(random.randint(2,5))
for _ in range(80):
t.penup()
t.goto(random.randint(-300,300), random.randint(-200,300))
t.pendown()
t.pencolor("#ffff99") # 浅黄色
#t.pencolor("white")
t.dot(random.randint(2,5))
for _ in range(80):
t.penup()
t.goto(random.randint(-300,300), random.randint(-200,300))
t.pendown()
#t.pencolor("#ffff99") # 浅黄色
t.pencolor("white")#加点亮一点的星星
t.dot(random.randint(2,5))
# 开始绘制
t.hideturtle()
turtle.done()
你也可以增加下别的什么东西,你怎么想就怎么加吧,我玩累了。创造都很难,一点也不容易,要不是一点兴趣,这三瓜两枣的真不愿意,推送全看头条君的心情,能看到的全看缘分,即见既所的,以此献给一些刻苦学习的有缘之人。