详解用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 03 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
实现python版本的按任意键继续/退出
Sep 26 Python
python安装教程 Pycharm安装详细教程
May 02 Python
Python实现购物车功能的方法分析
Nov 10 Python
对python多线程中Lock()与RLock()锁详解
Jan 11 Python
Python3中函数参数传递方式实例详解
May 05 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
Aug 26 Python
Python 列表的清空方式
Jan 13 Python
python 错误处理 assert详解
Apr 20 Python
基于pycharm实现批量修改变量名
Jun 02 Python
如何用Python提取10000份log中的产品信息
Jan 14 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
一个更简单的无限级分类菜单代码
2007/01/16 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
php实现概率性随机抽奖代码
2016/01/02 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
Jquery 在页面加载后执行的几种方式
2014/03/14 Javascript
Javascript Objects详解
2014/09/04 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
浅谈React中组件间抽象
2018/01/27 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
Element input树型下拉框的实现代码
2018/12/21 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
Python微信库:itchat的用法详解
2017/08/14 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
Python初学者常见错误详解
2019/07/02 Python
django创建简单的页面响应实例教程
2019/09/06 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
2014庆六一活动方案
2014/03/02 职场文书
治庸问责工作总结
2015/08/11 职场文书
忠诚教育学习心得体会
2016/01/23 职场文书
八年级作文之我的母亲
2019/12/10 职场文书