详解用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中用sleep()方法操作时间的教程
May 22 Python
Python进程间通信用法实例
Jun 04 Python
Python中函数的参数传递与可变长参数介绍
Jun 30 Python
Python中的FTP通信模块ftplib的用法整理
Jul 08 Python
vscode 远程调试python的方法
Dec 01 Python
15行Python代码带你轻松理解令牌桶算法
Mar 21 Python
对Python中数组的几种使用方法总结
Jun 28 Python
python常用数据重复项处理方法
Nov 22 Python
python实现局域网内实时通信代码
Dec 22 Python
Pycharm安装python库的方法
Nov 24 Python
Python 流媒体播放器的实现(基于VLC)
Apr 28 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 16 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数字转汉字代码(算法)
2011/10/08 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
2018/11/22 PHP
JavaScript判断密码强度(自写代码)
2013/09/06 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
Document.body.scrollTop的值总为零的快速解决办法
2016/06/09 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
跟老齐学Python之重回函数
2014/10/10 Python
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
python框架django基础指南
2016/09/08 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
python和c语言哪个更适合初学者
2020/06/22 Python
程序集与命名空间有什么不同
2014/07/25 面试题
音乐系毕业生自荐信
2013/10/27 职场文书
大学生素质拓展活动方案
2014/02/11 职场文书
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
产品推广策划方案
2014/05/10 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
goland 设置project gopath的操作
2021/05/06 Golang
pytorch 如何使用batch训练lstm网络
2021/05/28 Python
Python道路车道线检测的实现
2021/06/27 Python