详解用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 22 Python
python设计模式大全
Jun 27 Python
浅谈numpy库的常用基本操作方法
Jan 09 Python
Python3多线程操作简单示例
May 22 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
对Tensorflow中的变量初始化函数详解
Jul 27 Python
如何利用python制作时间戳转换工具详解
Sep 12 Python
将python包发布到PyPI和制作whl文件方式
Dec 25 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
Nov 17 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 Python
python实现简易自习室座位预约系统
Jun 30 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
索尼ICF-SW100收音机评测
2021/03/02 无线电
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
javascript 禁止复制网页
2009/06/11 Javascript
JQuery 学习技巧总结
2010/05/21 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
js断点调试经验分享
2017/12/08 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
js 数组详细操作方法及解析合集
2018/06/01 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
Python性能优化的20条建议
2014/10/25 Python
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
Python脚本实现Web漏洞扫描工具
2016/10/25 Python
python九九乘法表的实例
2017/09/26 Python
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
Python异常处理操作实例详解
2018/08/28 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
python动态文本进度条的实例代码
2020/01/22 Python
浅谈Python中range与Numpy中arange的比较
2020/03/11 Python
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
招商专员岗位职责
2014/02/08 职场文书
大学生个人自荐信
2014/02/24 职场文书
科技活动周标语
2014/10/08 职场文书
党员评议个人总结
2014/10/20 职场文书
婚内分居协议书范文
2014/11/26 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书