详解用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中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
Flask框架WTForm表单用法示例
Jul 20 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
Python分割训练集和测试集的方法示例
Sep 19 Python
pytorch构建多模型实例
Jan 15 Python
Python ORM编程基础示例
Feb 02 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
基于Python的Jenkins的二次开发操作
May 12 Python
Python读取二进制文件代码方法解析
Jun 22 Python
通过Python pyecharts输出保存图片代码实例
Nov 25 Python
python 如何在 Matplotlib 中绘制垂直线
Apr 02 Python
Python制作动态字符画的源码
Aug 04 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安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
php简单操作mysql数据库的类
2015/04/16 PHP
php HTML无刷新提交表单
2016/04/05 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
2016/07/20 PHP
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
JavaScript必知必会(六) delete in instanceof
2016/06/08 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
使用 bootstrap modal遇到的问题小结
2016/11/09 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
HTML5实现微信拍摄上传照片功能
2017/04/21 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
js 判断当前时间是否处于某个一个时间段内
2019/09/19 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
对于Python的Django框架部署的一些建议
2015/04/09 Python
利用python批量修改word文件名的方法示例
2017/10/17 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
python使用Matplotlib画饼图
2018/09/25 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
网上书店创业计划书
2014/01/12 职场文书
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
战友聚会策划方案
2014/06/13 职场文书
《烈火英雄》观后感:致敬和平时代的英雄
2019/11/11 职场文书
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL