zoukankan      html  css  js  c++  java
  • Python入门必学,用Python练习画个美队盾牌

    美队盾牌

    0 环境

    Python版本:3.6.6

    操作系统:Mac OS Mojave 10.14.2

    1 引言

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

    看着看着还会笑?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专栏」,回复:美队盾牌,获取全套代码!

    Python专栏二维码
  • 相关阅读:
    物理数据库设计
    物理数据库设计
    NHibernate 帮助类(单例实际运用)
    HttpContext请求上下文对象
    SqlDataReader类
    在你不懂怎么做的时候
    System.Object 基类
    逻辑数据库设计
    逻辑数据库设计
    NHibernate使用MemCache二级缓存
  • 原文地址:https://www.cnblogs.com/moonhmily/p/10580824.html
Copyright © 2011-2022 走看看