详解用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通过scapy获取局域网所有主机mac地址示例
May 04 Python
Python随机生成数模块random使用实例
Apr 13 Python
python查看zip包中文件及大小的方法
Jul 09 Python
Python实现将Excel转换为json的方法示例
Aug 05 Python
Django管理员账号和密码忘记的完美解决方法
Dec 06 Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 Python
TensorFlow2.0矩阵与向量的加减乘实例
Feb 07 Python
pycharm如何实现跨目录调用文件
Feb 28 Python
Python基于gevent实现高并发代码实例
May 15 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
Jul 14 Python
Python Pygame实战在打砖块游戏的实现
Mar 17 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 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 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
微信红包随机生成算法php版
2016/07/21 PHP
javascript间隔刷新的简单实例
2013/11/14 Javascript
js data日期初始化的5种方法
2013/12/29 Javascript
cookie的secure属性详解
2015/04/08 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
详解python并发获取snmp信息及性能测试
2017/03/27 Python
浅谈python日志的配置文件路径问题
2018/04/28 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
关于python多重赋值的小问题
2019/04/17 Python
python 反编译exe文件为py文件的实例代码
2019/06/27 Python
keras 解决加载lstm+crf模型出错的问题
2020/06/10 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
几个数据库方面的面试题
2016/07/01 面试题
经理职责范文
2013/11/08 职场文书
大学生职业生涯规划范文
2014/01/08 职场文书
心理健康课教学反思
2014/02/13 职场文书
中班中秋节活动反思
2014/02/18 职场文书
捐款倡议书
2014/04/14 职场文书
护士找工作求职信
2014/07/02 职场文书
绿色小区申报材料
2014/08/22 职场文书
大学生实训报告总结
2014/11/05 职场文书
行政复议决定书
2015/06/24 职场文书
详解nodejs内置模块
2021/05/06 NodeJs
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
Python读写yaml文件
2022/03/20 Python
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技