怎么用Python实现神奇的树效果
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,本篇内容主要讲解"怎么用Python实现神奇的树效果",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么用Python实现神奇的树效果"吧!turtle是一
千家信息网最后更新 2025年02月01日怎么用Python实现神奇的树效果
本篇内容主要讲解"怎么用Python实现神奇的树效果",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么用Python实现神奇的树效果"吧!
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实现神奇的树效果"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
分支
神奇
效果
方法
角度
参数
叶子
珊瑚
花瓣
内容
躯干
樱花
学习
绘图
便当
更深
繁茂
青翠
婀娜
苍劲
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
黑河市网络安全监察大队
戴尔服务器小企业租赁
软件开发设计公司简介
网络技术法的例子
计算机网络技术专业有什么要求
深圳自主可控软件开发代理价格
宝山区会计软件开发收费标准
重置数据库监听
先进的网络技术和信息传播渠道
2016服务器网络驱动
辽宁电视墙服务器设备
什么叫软件开发需求
his数据库 设计
全国网络安全 2021
兄弟互联网科技
计算机科学涉及网络安全吗
典型的网络安全事故案例分析
数据库一般连接sql语句
竹溪智能软件开发技术指导
亿佰特na111串口服务器芯片
我的世界纯净服服务器下载
手机外国代理服务器
软件开发知识产权的 约定
外派软件开发员怎么样
软件开发大数据的基础知识
移动通信网络技术应用
工业网络安全常识学习
数据库中实体的概念
计算机网络技术移动通信
医院网络安全教育培训计划