turtle是一只神奇的小海龟,可以画出大千世界。而turtle加入了python大家族,像是如龟得水,变得更加受欢迎。

从网站建设到定制行业解决方案,为提供网站设计制作、成都网站制作服务体系,各种行业企业客户提供网站建设解决方案,助力业务快速发展。成都创新互联公司将不断加快创新步伐,提供优质的建站服务。
古人有诗云“庭中有奇树,绿叶发华滋”,树之美,或婀娜、或繁茂、或苍劲、或青翠。python-turtle笔下的树更是别有一番风味。
小园新种红樱树,闲绕花行便当游。
- # coding=gbk
 - import turtle as Timport randomimport time
 - # 画樱花的躯干(60,t)
 - def Tree(branch, t): time.sleep(0.0005)
 - if branch > 3:
 - if 8 <= branch <= 12:
 - if random.randint(0, 2) == 0:
 - t.color('snow') # 白
 - else:
 - t.color('lightcoral') # 淡珊瑚色
 - t.pensize(branch / 3)
 - elif branch < 8:
 - if random.randint(0, 1) == 0:
 - t.color('snow')
 - else:
 - t.color('lightcoral') # 淡珊瑚色
 - t.pensize(branch / 2)
 - else:
 - t.color('sienna') # 赭(zhě)色
 - t.pensize(branch / 10) # 6
 - t.forward(branch) a = 1.5 * random.random()
 - t.right(20 * a)
 - b = 1.5 * random.random()
 - Tree(branch - 10 * b, t)
 - t.left(40 * a)
 - Tree(branch - 10 * b, t)
 - t.right(20 * a)
 - t.up() t.backward(branch) t.down()# 掉落的花瓣def Petal(m, t): for i in range(m):
 - a = 200 - 400 * random.random()
 - b = 10 - 20 * random.random()
 - t.up() t.forward(b) t.left(90)
 - t.forward(a) t.down() t.color('lightcoral') # 淡珊瑚色
 - t.circle(1)
 - t.up() t.backward(a) t.right(90)
 - t.backward(b)# 绘图区域t = T.Turtle()# 画布大小w = T.Screen()# 隐藏画笔t.hideturtle() t.getscreen().tracer(5, 0)
 - # wheat小麦w.screensize(bg='white')
 - t.left(90)
 - t.up()t.backward(150)
 - t.down()t.color('sienna')
 - # 画樱花的躯干Tree(60, t)
 - # 掉落的花瓣Petal(200, t)
 - w.exitonclick()
 
江南有丹橘,经冬犹绿林
- # coding=gbk
 - from turtle import *from random import *
 - from math import *
 - class Tree: def __init__(self): setup(1000, 500)
 - bgcolor(1, 1, 1) # 背景色
 - # ht() # 隐藏turtle speed(10) # 速度 1-10渐进,0 最快
 - # tracer(1, 100) # 设置绘图屏幕刷新频率,参数1设置在正常刷新频次的第参数1次刷新,参数2设置每次刷新的时延
 - tracer(0, 0)
 - pu() # 抬笔 backward(100)
 - # 保证笔触箭头方向始终不向下,此处使其左转90度,而不是右转
 - left(90) # 左转90度
 - backward(300) # 后退300
 - def tree(self, n, l): pd() # 下笔 # 阴影效果 t = cos(radians(heading() + 45)) / 8 + 0.25
 - pencolor(t, t, t) pensize(n / 1.2)
 - forward(l) # 画树枝 if n > 0:
 - b = random() * 15 + 10 # 右分支偏转角度
 - c = random() * 15 + 10 # 左分支偏转角度
 - d = l * (random() * 0.25 + 0.7) # 下一个分支的长度
 - # 右转一定角度,画右分支 right(b) self.tree(n - 1, d)
 - # 左转一定角度,画左分支 left(b + c) self.tree(n - 1, d)
 - # 转回来 right(c) else:
 - # 画叶子 right(90)
 - n = cos(radians(heading() - 45)) / 4 + 0.5
 - pencolor(n, n * 0.8, n * 0.8)
 - fillcolor(n, n * 0.8, n * 0.8)
 - begin_fill() circle(3)
 - left(90)
 - end_fill() # 添加0.3倍的飘落叶子
 - if random() > 0.7:
 - pu() # 飘落 t = heading() an = -40 + random() * 40
 - setheading(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.5
 - pencolor(n * 0.5 + 0.5, 0.4 + n * 0.4, 0.4 + n * 0.4)
 - fillcolor(n, n * 0.8, n * 0.8)
 - begin_fill() circle(2)
 - left(90)
 - end_fill() pu() # 返回 t = heading() setheading(an) backward(dis) setheading(t) # pass pu() backward(l) # 退回def main(): tree = Tree() tree.tree(12, 100) # 递归7层
 - done()if __name__ == '__main__':
 - main()
 
落红不是无情物,化作春泥更护花
- # coding=gbk
 - from turtle import *
 - from random import *
 - # 画树方法def drawTree(n, l): pendown() pencolor('#5d3c3c')
 - pensize( n / 1.5)
 - forward(l) if n > 0:
 - dr = randint(30, 40)
 - dl = randint(30, 40)
 - move = l * (random() * 0.4 + 0.5)
 - right(dr) drawTree(n - 1, move)
 - left(dr + dl) drawTree(n - 1, move)
 - right(dl) else:
 - drawPetal(3)
 - penup() backward(l)# 花瓣位置生成def petalPlace(m, x, y): penup() goto(x, y)
 - pendown() setheading(0)
 - tracer(False) for i in range(m):
 - if i == 0:
 - drawPetal(5)
 - else:
 - penup() goto(x, y)
 - a = randint(20, 400)
 - b = randint(-50, 50)
 - forward(a) left(90)
 - forward(b) right(90)
 - pendown() drawPetal(5)
 - # 花朵绘画方法def drawPetal(n): colormode(255)
 - r = randint(200, 255)
 - g = randint(8, 158)
 - b = randint(8, 158)
 - begin_fill() fillcolor(r, g, b) pencolor(r, g, b) circle(n) end_fill()# 启动方法def run(): setup(1.0, 1.0)
 - penup() goto(-50, -150)
 - left(90)
 - pendown() hideturtle() tracer(False) drawTree(13, 150)
 - petalPlace(160, -100, -150)
 - run()done()
 
川原秋色静,芦苇晚风鸣
- import turtle
 - import randomstack = []def createWord(max_it, word, proc_rules, x, y, turn):
 - turtle.up() turtle.home() turtle.goto(x, y) turtle.right(turn) turtle.down() t = 0
 - while t < max_it:
 - word = rewrite(word, proc_rules) drawit(word, 5, 20)
 - tt = t+1
 - def rewrite(word, proc_rules):
 - wordList = list(word) for i in range(len(wordList)):
 - curChar = wordList[i] if curChar in proc_rules:
 - wordList[i] = proc_rules[curChar] return "".join(wordList)
 - def drawit(newWord, d, angle):
 - newWordLs = list(newWord) for i in range(len(newWordLs)):
 - cur_Char = newWordLs[i] if cur_Char == 'F':
 - turtle.forward(d) elif cur_Char == '+':
 - turtle.right(angle) elif cur_Char == '-':
 - turtle.left(angle) elif cur_Char == '[':
 - state_push() elif cur_Char == ']':
 - state_pop()def state_push():
 - global stack
 - stack.append((turtle.position(), turtle.heading()))def state_pop():
 - global stack
 - position, heading = stack.pop() turtle.up() turtle.goto(position) turtle.setheading(heading) turtle.down()def randomStart():
 - x = random.randint(-300, 300)
 - y = random.randint(-320, -280)
 - heading = random.randint(-100, -80)
 - return ((x, y), heading)
 - def main():
 - rule_sets = [] rule_sets.append(((3, 5), 'F', {'F':'F[+F][-F]F'}))
 - rule_sets.append(((4, 6), 'B', {'B':'F[-B][+ B]', 'F':'FF'}))
 - rule_sets.append(((2, 4), 'F', {'F':'FF+[+F-F-F]-[-F+F+F]'}))
 - tree_count = 50
 - turtle.tracer(10, 0)
 - for x in range(tree_count):
 - rand_i = random.randint(0, len(rule_sets) - 1)
 - selected_ruleset = rule_sets[rand_i] i_range, word, rule = selected_ruleset low, high = i_range i = random.randint(low, high) start_position, start_heading = randomStart() start_x, start_y = start_position createWord(i, word, rule, start_x, start_y, start_heading)if __name__ == '__main__': main()
 
                本文名称:Python笔下那些神奇的树
                
                URL网址:http://www.csdahua.cn/qtweb/news3/2503.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网