0 环境
Python 版本: 3.6.6
操作系统: Mac OS Mojave 10.14.2
最近我媳妇每天晚上吃饭时候也拿手机看, 上厕所也在看.
看着看着还会笑? WTF? 你在干嘛呢?
没错, 她在看美队......
这男人比我帅?......
比我有钱?......
还是比我有腔调?......
答案很明显, 我相信你们的眼睛都是雪亮的.
那问题来了, 作为一个男人, 怎么能忍? 虽然是个明星, 虽然是假的, 虽然已经挽回不了败局了...... 那我就送个美队的盾牌给你吧......
这篇文章不是 Turtle 的入门篇, 所以关于基本的画笔使用小胖不在这篇里赘述了. 有兴趣的可以留言, 我会根据你们的反馈来写一篇或者一个系列.
2 实战
先来看一个效果图:
用过 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()
3 总结
这是一篇用 Python 画画的文章, 更多有趣, 好玩的 Python 应用, 实战尽在知识星球「人人都是 Pythonista」.
关注公众号「Python 专栏」, 回复: 美队盾牌, 获取全套代码!
来源: https://www.cnblogs.com/moonhmily/p/10580824.html