还记得在大学时,靠近西边有一片特别大的樱花园,每到3-4月,樱花开了,美的啊!那片区域特别多学妹与学姐来拍照,男生个个面如带花,实际心如一头狼,就想偶遇个小学妹,不怕嘲笑,我也去蹲点过,还幸运的与校园女神产生了一见钟情,对的,他看上了我,还拉住我的手在樱花园里述说着情话,那娇羞的表情,告诉我梦里什么都有。

樱花林


了解命令说明,有利于了解源码是怎么运行的

screensize(width, height, bg=color) 设置画幕大小及颜色
setup(p1, p2) 设置画幕大小,当 p1、p2 为小数表示屏幕占比;当 p1、p2 为整数表示像素
tracer(speed) 设置绘制速度,speed越大表示绘制速度越快
penup() 起笔(可以想象成画画的时候沾墨之后提笔)
forward() 向前移动
backward() 向后移动
left(degree) 逆时针旋转 degree 度
right(degree) 顺时针旋转 degree 度
pendown() 落笔
pencolor(color) 笔墨颜色为 color
circle® 画一个半径为 r 的圆

源码分享

可以直接复制下面的源码去运行,不会出错。

import turtlefrom random import random
from random import randintdef draw_petal(turtle_obj, flower):# 绘制掉落的花瓣for i in range(int(flower)):# 有正有负就可以让画笔往二个方向走x = flower - 4 * flower * random()# 花瓣整体宽度(-10, 10)y = 10 - 20 * random()# 提笔,向前y,左转90,走x,落笔turtle_obj.penup()turtle_obj.forward(y)turtle_obj.left(90)turtle_obj.forward(x)turtle_obj.pendown()# 珊瑚色turtle_obj.pencolor("lightcoral")# 画圆turtle_obj.circle(1)# 回到起点# 提笔,后退x,右转90,后退y,落笔turtle_obj.penup()turtle_obj.backward(x)turtle_obj.right(90)turtle_obj.backward(y)turtle_obj.pendown()# 画树枝部分
def draw_tree(turtle_obj, branch, tree_color):# 设置一个最小分支长度min_branch = 4if branch > min_branch:if branch < 8:# 以0.5的概率,向左、右分支if randint(0, 1) == 0:# 左为白色turtle_obj.pencolor("snow")else:# 右为珊瑚色turtle_obj.pencolor("lightcoral")# 枝干turtle_obj.pensize(branch / 2)elif 8 <= branch <= 16:# 以0.33的概率,分为左、中、右分支if randint(0, 2) == 0:# 左为白色turtle_obj.pencolor("snow")else:# 中、右为珊瑚色turtle_obj.pencolor("lightcoral")# 树枝turtle_obj.pensize(branch / 4)else:# 褐色turtle_obj.pencolor(tree_color)# 细枝turtle_obj.pensize(branch / 10)# 最开始的树干长度turtle_obj.forward(branch)# 随机度数因子a = 1.5 * random()# 顺时针旋转随机角度(0~30度)turtle_obj.right(20 * a)# 随机长度因子b = 1.5 * random()# 往右画,直到画不动为止draw_tree(turtle_obj, branch - 10 * b, tree_color)# 左转随机角度turtle_obj.left(40 * a)# 往左画,直到画不动位置draw_tree(turtle_obj, branch - 10 * b, tree_color)# 右转一定角度turtle_obj.right(20 * a)# 提笔turtle_obj.penup()# 递归结束回到起点turtle_obj.backward(branch)turtle_obj.pendown()def get_screen(width, height, color, speed):# 创建画幕screen_obj = turtle.Screen()# 画布大小:(width, height),颜色:colorscreen_obj.screensize(width, height, bg=color)screen_obj.setup(1.0, 1.0)# speed倍加速screen_obj.tracer(speed)return screen_obj# 绘制多棵树
def trees(tree_num):# 颜色color = ['brown', 'tan', 'black']for j in range(tree_num):# 树干颜色tree_color = color[randint(0, len(color) - 1)]# 画笔大小pensize = randint(2, 5)# 前进像素forward = ((-1) ** pensize) * pensize * randint(20, 50)# 后退像素if pensize <= 3:backward = ((-1) ** pensize) * (5 - pensize) * randint(10, 15)else:backward = pensize * randint(45, 50)# 创建画笔turtle_obj = turtle.Turtle()# 画笔粗细turtle_obj.pensize(pensize)# 提笔,向前forward,左转90,backward,落笔turtle_obj.penup()turtle_obj.forward(forward)turtle_obj.left(90)turtle_obj.backward(backward)turtle_obj.pendown()# 画笔颜色:褐色turtle_obj.pencolor(tree_color)# 枝干粗细branch = pensize * 15# 落花数flowers = branch# 第j棵树draw_tree(turtle_obj, branch, tree_color)# 花瓣draw_petal(turtle_obj, flowers)if __name__ == '__main__':# 创建画幕my_screen_width = 800my_screen_height = 600my_screen_color = 'wheat'my_screen_speed = 5my_screen_obj = get_screen(my_screen_width, my_screen_height,my_screen_color, my_screen_speed)# 樱花树# 棵数my_tree_num = 5trees(my_tree_num)# 点击关闭画布my_screen_obj.exitonclick()

你们的三连(点赞,收藏,评论)是我持续输出的动力。
在兴趣中学习,效益超乎想象,有趣的源码与学习经验,工具安装包,欢迎加我的微信号:bobin1124,一起交流学习与分享。

新手也能立即上手,用Python90多行代码画出“樱花园”仙境(源码+注释)相关推荐

  1. 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)

    本文由"yuanrw"分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读 ...

  2. 掷骰子-IOS新手项目练习(抱歉,由于个人原因,图片没显示,要源码的项目私聊)...

    ---恢复内容开始--- 今天我们来讲的就是项目<掷骰子> 首先我们先下载资源包,也就是我们需要的图片[点击图片下载] 在我们下载完图片之后,我们就可以开始创建项目 一.我们项目的做法可以 ...

  3. SaaS 智慧校园云平台源码 商业级源码,可直接上手项目

    支持多学校.多校园SaaS运营智慧校园云平台源码 私信了解更多! 1.互联网唯一正版商业级源码,直接上手项目. 2.本套智慧校园带云平台源码已经服务近百所中小学校,并提供版权证书. 3.智慧校园全套源 ...

  4. layuiadmin上手好难_【王者荣耀】凯皇教程,冰心不死流,新手也能快速上手!...

    凯皇打边路比较好,一直是上单英雄,在上次版本加强之后,变得更加简单粗暴,如今的铠,强度更高回血更多,开启大招后输出抗伤能力更强.自从铠加强之后,冰心不死流是最适合的打法,下面就让我们一起来看看如何玩. ...

  5. java web开源项目源码_适合Java新手的开源项目集合——在 GitHub 学编程

    作者:HelloGitHub-老荀 当今互联网份额最大的编程语言是哪一个?是 Java!这两年一直有听说 Java 要不行了.在走下坡路了.没错,Java 的确在走下坡路,未来的事情的确不好说,但是瘦 ...

  6. Grunt 5分钟上手:合并+压缩前端代码

    Grunt 的各种优点这里就不扯了,对于 新手来说 合并(concat) + 压缩(uglify) 前端代码的需求量应该是最大的,这里以这俩种功能为主做一个5分钟的入门吧! 工作环境 $ node - ...

  7. java存入光盘_java 这是 学习笔记(jdk7)书中的光盘里的源码,不知大家需要不,里面都是新手 的好 Develop 238万源代码下载- www.pudn.com...

    文件名称: java下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 1272 KB 上传时间: 2013-04-01 下载次数: 18 提 供 者: 孙鹏启 详细 ...

  8. java技术分享主题_Java开发入门:适合新手练手的Java项目(附源码下载)

    Java作为一门古老的语言,已有20年左右的历史,这在发展日新月异的技术圈可以说是一个神话.虽然不少人曾抱怨Java语言就像老太太的裹脚布,又臭又长,有时写了500行都不能表达程序员的意图. 但从市场 ...

  9. pyqt快速编程指南 源码_适合 C++ 新手学习的开源项目——在 GitHub 学编程

    作者:HelloGitHub-小鱼干 俗话说:万事开头难,学习编程也是一样.在 HelloGitHub 的群里,经常遇到有小伙伴询问编程语言如何入门方面的问题,如: 我要学习某一门编程语言,有什么开源 ...

最新文章

  1. 棋盘分割(记忆化搜索)
  2. python es 数据库 复合查询bool_es 入门-阿里云开发者社区
  3. 马化腾:用户体验的10/100/1000法则
  4. [云炬ThinkPython阅读笔记]1.6 形式语言和自然语言
  5. java spark环境配置文件_JAVA, SCALA, HADOOP, SPARK里的JAVA_HOME和环境变量设置
  6. antd 进行ajax请求,react+dva+antd接口调用方式
  7. Oracle中表连接的方式有哪些
  8. composer 检查镜像_检查N元树中的镜像
  9. AssetManager asset的使用
  10. android intent包装,Android 中的 Intent
  11. 2021高通人工智能应用创新大赛踩坑指南
  12. 【2018百度之星程序设计大赛初赛】degree
  13. 如何用计算机扫描图片变成文字,捷速OCR如何把图片转换成Word文档?
  14. 51单片机延时程序(以延时30ms为例)
  15. 到底还有没有月薪3万以下的程序员?程序员工资真的这么高!
  16. msp430发送pwm信号_msp430TAx PWM输出详解
  17. linux内核编译详解
  18. Cannot construct instance of `com.baomidou.mybatisplus.core.metadata.IPage` (no Creators, like defau
  19. QPBOC快速借贷记流程(2)
  20. WebGL实时视频(6) Unity里面显示视频

热门文章

  1. 深度学习Pytorch框架Tensor张量
  2. 超强后浪:14岁考上研究生,如今17岁的他或将成为全国最小的博士生!
  3. 如何到top5%?NLP-情感分析实战训练来教你!
  4. Windows XP源代码泄露,外媒从中发现隐藏Mac主题
  5. 用AI实现C++、Java、Python代码互译,运行成功率最高达80.9%
  6. 有了四步解题法模板,再也不害怕动态规划!
  7. 我想说:mysql 的 join 真的很弱
  8. Linux之复制、移动文件及目录命令
  9. CV新手避坑指南:计算机视觉常见的8个错误
  10. 基于OpenCV的位姿估计