最近学习了海龟画图科赫雪花,总感觉不是很像,在广东上班很多年没见过雪花了,于是百度一下,图片如下
一般都是有6个分支,也有极少数为5个分支,每个分支都是一样的,因此可以定义一个分支的函数
import turtle as t
def fork(l): #定义分支的左右叉函数
t.pendown()
t.left(60)
t.fd(l)
t.penup()
t.fd(-l)
t.pendown()
t.right(120)
t.fd(l)
t.penup()
t.fd(-l)
t.left(60)
t.pendown()
def branch(l,n): 定义雪花分支函数
# t.pencolor(random.random(), random.random(), random.random())
t.fd(l)
k = [l/n/3, l/n, 3*l/2/n, 2*l/n, 3*l/2/n, 2*l/n/3, l/n/3, 2*l/n/3, l/n/3]
for i in range (n-1):
if i == 3 and n >= 7: #当分支的左右叉数量多于7的时候在第四个叉上再增加分支,更接近于图2
t.fd(-l / n)
t.left(60)
branch(3*l/n, 3)
t.right(120)
branch(3 * l / n, 3)
t.left(60)
else:
t.penup()
t.fd(-l/n)
fork(k[i])
t.fd(-l/n)
这里我用了两个参数,分别代表雪花的半径和分支的数量
分支写好了再来个for循环生成雪花了
def snow(l,m,n):
for i in range(m):
t.right(360/m)
branch(l,n)
运行结果如下,自我感觉还不错,有那么点雪花的意思了
不知道有没有这种雪花
然后小朋友说我想要好多雪花,而且要不一样的随机出现,想一下如何结合random函数实现呢
其实只要snow()函数的3个参数随机就好啦,但要注意合理范围,于是我又有了这个
import random
def random_snow():
l = random.randint(10,100)
m = random.randint(5,6)
n = random.randint(6,9)
snow(l, m, n)
主函数带个雪花数量参数
def main(j):
t.setup(800,600)
t.speed(0)
for i in range(j):
xy()
random_snow()
t.done()
最后直接获取用户输入数量
main(eval(input("请输入需要生成雪花的数量:")))
来个5片雪花的
再来个多点的20片吧
叠在了一起太乱了,来点颜色吧,生活就要五彩斑斓,尽管雪花不是彩色的
10片彩色雪花
雪花一片一片飘啊飘