详解用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程序员鲜为人知但你应该知道的17个问题
Jun 04 Python
Tornado协程在python2.7如何返回值(实现方法)
Jun 22 Python
详解K-means算法在Python中的实现
Dec 05 Python
Python读取图片为16进制表示简单代码
Jan 19 Python
python:print格式化输出到文件的实例
May 14 Python
Django中反向生成models.py的实例讲解
May 30 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
django中forms组件的使用与注意
Jul 08 Python
Python imageio读取视频并进行编解码详解
Dec 10 Python
Django 返回json数据的实现示例
Mar 05 Python
Python实现猜年龄游戏代码实例
Mar 25 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
Apr 22 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 地址栏信息的获取代码
2009/01/07 PHP
php 注释规范
2012/03/29 PHP
php网页标题中文乱码的有效解决方法
2014/03/05 PHP
PHP引用(&)各种使用方法实例详解
2014/03/20 PHP
PHP aes (ecb)解密后乱码问题
2015/06/22 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
js function定义函数使用心得
2010/04/15 Javascript
javascript整除实现代码
2010/11/23 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
详细解读JavaScript的跨浏览器事件处理
2015/08/12 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
微信小程序 for 循环详解
2016/10/09 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
9种方法优化jQuery代码详解
2020/02/04 jQuery
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
python:动态路由的Flask程序代码
2019/11/22 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
推荐10个CSS3 制作的创意下拉菜单效果
2014/02/11 HTML / CSS
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
迷你西餐厅创业计划书范文
2013/12/31 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
2014年财务部工作总结
2014/11/11 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
投标售后服务承诺书
2015/04/29 职场文书
小学运动会加油词
2015/07/18 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript