新手也能立即上手,用Python90多行代码画出“樱花园”仙境(源码+注释)
还记得在大学时,靠近西边有一片特别大的樱花园,每到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多行代码画出“樱花园”仙境(源码+注释)相关推荐
- 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)
本文由"yuanrw"分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读 ...
- 掷骰子-IOS新手项目练习(抱歉,由于个人原因,图片没显示,要源码的项目私聊)...
---恢复内容开始--- 今天我们来讲的就是项目<掷骰子> 首先我们先下载资源包,也就是我们需要的图片[点击图片下载] 在我们下载完图片之后,我们就可以开始创建项目 一.我们项目的做法可以 ...
- SaaS 智慧校园云平台源码 商业级源码,可直接上手项目
支持多学校.多校园SaaS运营智慧校园云平台源码 私信了解更多! 1.互联网唯一正版商业级源码,直接上手项目. 2.本套智慧校园带云平台源码已经服务近百所中小学校,并提供版权证书. 3.智慧校园全套源 ...
- layuiadmin上手好难_【王者荣耀】凯皇教程,冰心不死流,新手也能快速上手!...
凯皇打边路比较好,一直是上单英雄,在上次版本加强之后,变得更加简单粗暴,如今的铠,强度更高回血更多,开启大招后输出抗伤能力更强.自从铠加强之后,冰心不死流是最适合的打法,下面就让我们一起来看看如何玩. ...
- java web开源项目源码_适合Java新手的开源项目集合——在 GitHub 学编程
作者:HelloGitHub-老荀 当今互联网份额最大的编程语言是哪一个?是 Java!这两年一直有听说 Java 要不行了.在走下坡路了.没错,Java 的确在走下坡路,未来的事情的确不好说,但是瘦 ...
- Grunt 5分钟上手:合并+压缩前端代码
Grunt 的各种优点这里就不扯了,对于 新手来说 合并(concat) + 压缩(uglify) 前端代码的需求量应该是最大的,这里以这俩种功能为主做一个5分钟的入门吧! 工作环境 $ node - ...
- java存入光盘_java 这是 学习笔记(jdk7)书中的光盘里的源码,不知大家需要不,里面都是新手 的好 Develop 238万源代码下载- www.pudn.com...
文件名称: java下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 1272 KB 上传时间: 2013-04-01 下载次数: 18 提 供 者: 孙鹏启 详细 ...
- java技术分享主题_Java开发入门:适合新手练手的Java项目(附源码下载)
Java作为一门古老的语言,已有20年左右的历史,这在发展日新月异的技术圈可以说是一个神话.虽然不少人曾抱怨Java语言就像老太太的裹脚布,又臭又长,有时写了500行都不能表达程序员的意图. 但从市场 ...
- pyqt快速编程指南 源码_适合 C++ 新手学习的开源项目——在 GitHub 学编程
作者:HelloGitHub-小鱼干 俗话说:万事开头难,学习编程也是一样.在 HelloGitHub 的群里,经常遇到有小伙伴询问编程语言如何入门方面的问题,如: 我要学习某一门编程语言,有什么开源 ...
最新文章
- 棋盘分割(记忆化搜索)
- python es 数据库 复合查询bool_es 入门-阿里云开发者社区
- 马化腾:用户体验的10/100/1000法则
- [云炬ThinkPython阅读笔记]1.6 形式语言和自然语言
- java spark环境配置文件_JAVA, SCALA, HADOOP, SPARK里的JAVA_HOME和环境变量设置
- antd 进行ajax请求,react+dva+antd接口调用方式
- Oracle中表连接的方式有哪些
- composer 检查镜像_检查N元树中的镜像
- AssetManager asset的使用
- android intent包装,Android 中的 Intent
- 2021高通人工智能应用创新大赛踩坑指南
- 【2018百度之星程序设计大赛初赛】degree
- 如何用计算机扫描图片变成文字,捷速OCR如何把图片转换成Word文档?
- 51单片机延时程序(以延时30ms为例)
- 到底还有没有月薪3万以下的程序员?程序员工资真的这么高!
- msp430发送pwm信号_msp430TAx PWM输出详解
- linux内核编译详解
- Cannot construct instance of `com.baomidou.mybatisplus.core.metadata.IPage` (no Creators, like defau
- QPBOC快速借贷记流程(2)
- WebGL实时视频(6) Unity里面显示视频