详解用Python练习画个美队盾牌


Posted in Python onMarch 23, 2019

详解用Python练习画个美队盾牌

0 环境

Python版本:3.6.6

操作系统:Mac OS Mojave 10.14.2

1 引言

最近我媳妇每天晚上吃饭时候也拿手机看,上厕所也在看。

看着看着还会笑?WTF?你在干嘛呢?

没错,她在看美队……

这男人比我帅?……

比我有钱?……

还是比我有腔调?……

答案很明显,我相信你们的眼睛都是雪亮的。

那问题来了,作为一个男人,怎么能忍?虽然是个明星,虽然是假的,虽然已经挽回不了败局了……那我就送个美队的盾牌给你吧……

这篇文章不是Turtle的入门篇,所以关于基本的画笔使用小胖不在这篇里赘述了。有兴趣的可以留言,我会根据你们的反馈来写一篇或者一个系列。

2 实战

先来看一个效果图:

详解用Python练习画个美队盾牌

用过Turtle的都知道,画笔是需要抬手和落笔的。这一点一定要理解,因为计算机是很死板的,你的每一个动作都必须告诉他,包括GC。

所以你的画笔一旦落下,经过的每一处都会留下字迹。如果希望隔开一段距离就需要经过「抬笔」->「移动画笔」->「落笔」。

所以我们先把这个动作封装成一个函数:

def setpen(x, y):
  # 抬笔
  t.penup()
  # 移动画笔到(x, y)
  t.goto(x, y)
  # 落笔
  t.pendown()
  t.setheading(0)

 接下来就来画盾牌。盾牌的话,注意观察美队盾牌,颜色是「红」->「白」->「红」->「蓝」。

这里有一个技巧,就是后面填充的圆圈背景色是可以覆盖之前画的圆圈的背景色。

def circle(x, y, r, color):
  # 为了保证画出的圆够圆,所以我们把圆的边设置的多一些
  n = 36
  angle = 360 / n
  pi = 3.1415926
  # 周长
  c = 2 * pi * r
  # 每条边的长度
  l = c / n
  # 起始位置
  start_x = x - l / 2
  start_y = y + r
  # 移动画笔
  setpen(start_x, start_y)
  # 选择画笔颜色
  t.pencolor(color)
  # 选择背景色
  t.fillcolor(color)
  # 填充
  t.begin_fill()
  for i in range(n):
    t.forward(l)
    t.right(angle)
  t.end_fill()

接下来就是画里面那个白色的五角星了,这里就不注释了,因为和画圈的过程差不多。

def five_star(l):
  setpen(0, 0)
  t.setheading(162)
  t.forward(150)
  t.setheading(0)
  t.fillcolor('WhiteSmoke')
  t.begin_fill()
  t.hideturtle()
  t.penup()
  for i in range(5):
    t.forward(l)
    t.right(144)
  t.end_fill()

主函数:

def sheild():
  circle(0, 0, 300, 'red')
  circle(0, 0, 250, 'white')
  circle(0, 0, 200, 'red')
  circle(0, 0, 150, 'blue')
  five_star(284)

if __name__ == '__main__':
  sheild()
  # 结束乌龟图
  turtle.done()

以上所述是小编给大家介绍的用Python练习画个美队盾牌详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python实现数通设备端口监控示例
Apr 02 Python
python面向对象_详谈类的继承与方法的重载
Jun 07 Python
Python环境搭建之OpenCV的步骤方法
Oct 20 Python
Python中property函数用法实例分析
Jun 04 Python
Python爬虫包BeautifulSoup学习实例(五)
Jun 17 Python
python队列Queue的详解
May 10 Python
python操作日志的封装方法(两种方法)
May 23 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
TensorFlow设置日志级别的几种方式小结
Feb 04 Python
关于python3.9安装wordcloud出错的问题及解决办法
Nov 02 Python
如何通过安装HomeBrew来安装Python3
Dec 23 Python
Python实现Hash算法
Mar 18 Python
详解python中TCP协议中的粘包问题
Mar 22 #Python
Python JSON格式数据的提取和保存的实现
Mar 22 #Python
Python3.4解释器用法简单示例
Mar 22 #Python
Python常见数字运算操作实例小结
Mar 22 #Python
详解python校验SQL脚本命名规则
Mar 22 #Python
pymongo中group by的操作方法教程
Mar 22 #Python
Python常用特殊方法实例总结
Mar 22 #Python
You might like
PHP Mysql编程之高级技巧
2008/08/27 PHP
用Simple Excel导出xls实现方法
2012/12/06 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
js常用排序实现代码
2010/12/28 Javascript
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
JavaScript中获取Radio被选中的值
2015/11/11 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
2017/03/06 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
VUE-cli3使用 svg-sprite-loader
2018/10/20 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python编程实现微信企业号文本消息推送功能示例
2017/08/21 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
2019/09/23 Python
如何解决django-celery启动后迅速关闭
2019/10/16 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
农民工工资发放承诺书
2014/03/31 职场文书
机械设计制造及其自动化专业求职信
2014/06/17 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
查摆问题整改措施
2014/10/24 职场文书
节约用电倡议书
2015/04/28 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书
导游词之江南周庄
2019/12/06 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
redis 解决库存并发问题实现数量控制
2022/04/08 Redis