详解用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根据给定文件返回文件名和扩展名的方法
Mar 27 Python
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
Python的爬虫程序编写框架Scrapy入门学习教程
Jul 02 Python
Python实现删除排序数组中重复项的两种方法示例
Jan 31 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 Python
python实现生成Word、docx文件的方法分析
Aug 30 Python
python图形开发GUI库pyqt5的基本使用方法详解
Feb 14 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 Python
Python自动化测试中yaml文件读取操作
Aug 20 Python
如何在python中实现ECDSA你知道吗
Nov 23 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
一个用php3编写的简单计数器
2006/10/09 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
php单链表实现代码分享
2016/07/04 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
AngularJS中的包含详细介绍及实现示例
2016/07/28 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
2018/07/19 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
京东优选小程序的实现代码示例
2020/02/25 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
python 爬取学信网登录页面的例子
2019/08/13 Python
django删除表重建的实现方法
2019/08/28 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
Python timeit模块原理及使用方法
2020/10/10 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
三星俄罗斯授权在线商店:Samsung俄罗斯
2019/09/28 全球购物
考试作弊被抓检讨书
2014/01/10 职场文书
人事局接收函
2015/01/30 职场文书
中国世界遗产导游词
2015/02/13 职场文书
科技活动总结范文
2015/05/11 职场文书
该怎么书写道歉信?
2019/07/03 职场文书