用pythonturtle画简单的图案,python用turtle库绘画树形

这篇文章主要介绍了用pythonturtle画简单的图案,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

最近不少读者对 python 的 turtle 库比较感兴趣,用python画一朵玫瑰给你,之前也写了一篇文章讲过如何画一朵玫瑰花PHP与PYTHON:基于语法,功能,应用程序等的详细比较。今天在知乎上找了一个用 turtle 画树的 python 程序,一起来看看```*``

其实这种程序,主要了解下大概思路即可,有兴趣的可以去熟悉下 turtle 中每个函数的使用方法和作用,我在画玫瑰花那篇文章中也有过一些介绍,大家可以对照参考下sci论文降重技能

我先说下画这棵树的大致思路,首先这幅画可以分两大部分,一部分是树,一部分是地上的花瓣,重点是怎么画树。树又可以分为树叶和树枝,每个树枝最多分两个树杈,树叶有两种颜色。

树枝的粗细我们可以通过画笔的大小来控制,树叶的颜色我们可以使用画笔的颜色来控制,这样一来,我们只需要确认好每个位置画笔的大小和颜色即可。

不同的树枝或者不同的树叶都可以由相同的方法来实现,只是位置不一样而已,所以在程序上我们使用递归来实现,通过递归生成大量的树枝和树叶,每次递归都会在不同位置生成树枝和树叶。

树下的花瓣就容易了,直接一个循环就能搞定,每次循环画笔上下左右都随机移动一些距离即可。

下面贴出画树枝树叶的代码,大家可以对照上面提供的思路看看,完整的代码还请在本公众号后台回复关键字 "树" 获取。

#python 画树的主要实现方法

#branchLen 表示树枝的长度,t 表示turtle对象

def tree(branchLen, t):

if branchLen > 2:

if 8 <= branchLen <= 12:

if random.randint(0, 2) == 0:

t.color('snow')

else:

t.color('lightcoral')

t.pensize(branchLen / 3)

elif branchLen < 8:

if random.randint(0, 1) == 0:

t.color('snow')

else:

t.color('lightcoral')

t.pensize(branchLen / 2)

else:

t.color('sienna')

t.pensize(branchLen / 10)

t.forward(branchLen)

a = 1.5 * random.random()

t.right(20*a)

b = 1.5 * random.random()

tree(branchLen-10*b, t)

t.left(40*a)

tree(branchLen-10*b, t)

t.right(20*a)

t.up()

t.backward(branchLen)

t.down()

猜你喜欢

转载自blog.csdn.net/mynote/article/details/132702589