Python入门必学,用Python练习画个美队盾牌

美队盾牌

0 环境

Python版本:3.6.6python

操做系统:Mac OS Mojave 10.14.2ide

1 引言

最近我媳妇天天晚上吃饭时候也拿手机看,上厕所也在看。函数

看着看着还会笑?WTF?你在干吗呢?动画

没错,她在看美队……spa

这男人比我帅?……操作系统

比我有钱?……code

仍是比我有腔调?……blog

答案很明显,我相信大家的眼睛都是雪亮的。ci

那问题来了,做为一个男人,怎么能忍?虽然是个明星,虽然是假的,虽然已经挽回不了败局了……那我就送个美队的盾牌给你吧……rem

这篇文章不是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专栏」,回复:美队盾牌,获取全套代码!

Python专栏二维码

相关文章
相关标签/搜索