基于turtle模块画樱花树(*^▽^*)有注释版本

2023-11-05 20:30

本文主要是介绍基于turtle模块画樱花树(*^▽^*)有注释版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注释版的来了,基本每一句都添加了注释。作者也对这个程序理解了一下。

  • 这个程序是随机画樱花树,基本每一次树都长得不一样,可能很茂密也可能跟中年程序员的头顶一样稀疏。因为这个程序的灵魂就是random模块,通过随机数来用白色和淡珊瑚色来对樱花进行点缀,通过随机数来决定树枝长度树枝分叉几次
  • 整个程序的基础可以看作一棵二叉树,实际上就是把这棵二叉树画出来,再加以随机数导致各个树枝长短不一粗细不一加上颜色点缀就呈现出这么好看的樱花树了(玄妙)
  • 基础还是海龟绘图turtle模块,用的都是海龟绘图的基本操作,有不明白的建议移步turtle海龟绘图
  • 程序中有很多数值,比如branch的几个分界线,这都是不断测试出来的最佳数值,具体怎么来的有时间可以自己探讨,改了这些数值樱花树的效果就不是那么好了。这里不作详细解释
    以下为原文

今天看见的太好看了先马下来明天再研究研究!明天就把详细注释补上!争取让每个渣男都能拿来夺取女朋友欢心(手动滑稽)

import turtle as T#将turtle库定义为T便于调用
import random#引进random模块用于生成随机数
import time#系统时间模块def Tree(branch, t):# 画樱花的躯干的函数time.sleep(0.0005)#系统暂停0.0005sif 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)  # 6t.forward(branch)#画笔前进branch那么长a = 1.5 * random.random()#a得到一个随机值t.right(20 * a)#画笔右转20*a度b = 1.5 * random.random()#b取得一个随机值Tree(branch - 10 * b, t)#这是一个递归嵌套的过程t.left(40 * a)#画笔左转40*a度Tree(branch - 10 * b, t)#这是一个递归调用的过程t.right(20 * a)#画笔右转20*a度t.up()#画笔抬起,也即是之后的操作不会再屏幕上留下笔迹t.backward(branch)#画笔倒退branc那么远t.down()#画笔落下
# 掉落的花瓣
def Petal(m, t):for i in range(m):#m次循环a = 200 - 400 * random.random()#给a一个随机值b = 10 - 20 * random.random()#给b一个随机值t.up()#画笔抬起t.forward(b)#画笔倒退b距离t.left(90)#画笔左转90度t.forward(a)#画笔直走a距离t.down()#画笔落下t.color('lightcoral')  # 淡珊瑚色t.circle(1)#画一个半径为1的圆,其实就是花瓣t.up()#画笔抬起t.backward(a)#画笔倒退a距离t.right(90)#画笔右转90度t.backward(b)#画笔倒退b距离
# 绘图区域
def main():t = T.Turtle()# 画布大小w = T.Screen()#t.hideturtle()  # 隐藏画笔t.getscreen().tracer(5, 0)w.screensize(bg='wheat')  # wheat小麦t.left(90)#左转t.up()t.backward(150)t.down()t.color('sienna')# 画樱花的躯干Tree(60, t)# 掉落的花瓣Petal(200, t)w.exitonclick()
if __name__=='__main__':main()

在这里插入图片描述
少女行萌动。over

这篇关于基于turtle模块画樱花树(*^▽^*)有注释版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/352297

相关文章

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

nginx-rtmp-module模块实现视频点播的示例代码

《nginx-rtmp-module模块实现视频点播的示例代码》本文主要介绍了nginx-rtmp-module模块实现视频点播,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录预置条件Nginx点播基本配置点播远程文件指定多个播放位置参考预置条件配置点播服务器 192.

java中不同版本JSONObject区别小结

《java中不同版本JSONObject区别小结》本文主要介绍了java中不同版本JSONObject区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1. FastjsON2. Jackson3. Gson4. org.json6. 总结在Jav

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一