美文网首页清风Python
端午节用Python教你画绿豆糕

端午节用Python教你画绿豆糕

作者: 清风Python | 来源:发表于2019-06-07 23:52 被阅读79次
    忙晕了

    最近这几天忙得飞起...
    刚开公众号,想保持每天更新,又不用以前写过的东西。这就让人累惨了...
    然后公司这几天又有个比较紧急的需求要支撑,基本天天3点多睡觉....
    说了这么多,主题是什么?
    是我以为6月8号才是端午节!6号中午就在想今天高考,我晚上回家该写个什么文章和高考做对应。
    好嘞,最终搞了一篇成语之王的文章推送出来(貌似大家还不怎么买账....)
    可早上睡醒,才知道刚刚7号是端午。没赶上去给老佛爷请安,果然没一会儿电话就过来了,被一顿训。

    端午节

    今天大家是怎么过的端午节呢?
    反正我比较实在,继续窝在电脑旁边学习...结果就是老婆发飙了。说我一天就知道对着电脑,端午节都不过。
    听此开战宣言,赶紧下机去厨房热粽子。吃完粽子,她又要吃绿豆糕。我就纳闷了,为什么端午节除了吃粽子,还要吃绿豆糕、咸鸭蛋呢?
    跑去买绿豆糕回来的路上,我就决定了这篇文章,我要盘它--绿豆糕!
    怎么盘?当然是拿Python喽...

    python & turtle

    python的turtle库,最早还是在小甲鱼的【零基础入门学习Python】中接触的,好久没用了有些生疏,带大家一起回顾下模块的使用吧。
    如果你是想认真学习这个库,推荐去官网仔细学习 https://docs.python.org/3.6/library/turtle.html
    但如果你只是跟我一样玩票性质的,那么你简单看看就好。我帮你整理了一些常用的方法:

    参数 说明
    turtle.setup(width,height,startx,starty) 起始点坐标:左上角相对于屏幕的坐标,默认在屏幕中央
    turtle.begin_fill() 准备开始填充图形
    turtle.end_fill() 填充完成
    turtle.goto(x,y) 将海龟走到该坐标位置 绝对坐标
    turtle.bk(d) 海龟后退 海龟坐标
    turtle.fd(d) 海龟前进
    turtle.circle(r,angle) 海龟左侧某一点为圆心曲线运行
    turtle.seth(angle) 海龟转向,绝对坐标
    turtle.left(angle) 左转
    turtle.right(angle) 右转
    penup() 抬起画笔
    pendown() 落下画笔
    pencolor() 笔的颜色
    pensize() 笔的大小
    turtle.colormode(mode) 改变RGB模式,mode=1.0小数值,mode=255整数值 RGB颜色,如white的RGB整数值为:255.255.255,修改数值可以改变颜色
    turtle.done() 画完之后不关闭窗口

    就以上这些完全够你强势装13了...

    画绿豆糕

    话不多说,先来一波!
    然后,还没开团呢,先送一血了...为什么pycharm会告警呢?


    Pycharm告警.png

    但是使用又是正常的好奇怪,网上搜了一下解决办法。从import turtle进入源码,把142行开始的all注释掉,手动引用下turtle的所有方法即可。

    # __all__ = (_tg_classes + _tg_screen_functions + _tg_turtle_functions +
    #            _tg_utilities + ['Terminator']) # + _math_functions)
    
    __all__ = ['ScrolledCanvas', 'TurtleScreen', 'Screen', 'RawTurtle', 'Turtle', 'RawPen', 'Pen', 'Shape', 'Vec2D', 'back',
               'backward', 'begin_fill', 'begin_poly', 'bk', 'addshape', 'bgcolor', 'bgpic', 'bye', 'clearscreen',
               'colormode', 'delay', 'exitonclick', 'getcanvas', 'getshapes', 'listen', 'mainloop', 'mode', 'numinput',
               'onkey', 'onkeypress', 'onkeyrelease', 'onscreenclick', 'ontimer', 'register_shape', 'resetscreen',
               'screensize', 'setup', 'Terminator', 'setworldcoordinates', 'textinput', 'title', 'tracer', 'turtles',
               'update', 'window_height', 'window_width', 'write_docstringdict', 'done', 'circle', 'clear', 'clearstamp',
               'clearstamps', 'clone', 'color', 'degrees', 'distance', 'dot', 'down', 'end_fill', 'end_poly', 'fd',
               'fillcolor', 'filling', 'forward', 'get_poly', 'getpen', 'getscreen', 'get_shapepoly', 'getturtle', 'goto',
               'heading', 'hideturtle', 'home', 'ht', 'isdown', 'isvisible', 'left', 'lt', 'onclick', 'ondrag', 'onrelease',
               'pd', 'pen', 'pencolor', 'pendown', 'pensize', 'penup', 'pos', 'position', 'pu', 'radians', 'right', 'reset',
               'resizemode', 'rt', 'seth', 'setheading', 'setpos', 'setposition', 'settiltangle', 'setundobuffer', 'setx',
               'sety', 'shape', 'shapesize', 'shapetransform', 'shearfactor', 'showturtle', 'speed', 'st', 'stamp', 'tilt',
               'tiltangle', 'towards', 'turtlesize', 'undo', 'undobufferentries', 'up', 'width', 'write', 'xcor', 'ycor']
    

    问题解决了,开始写吧:

    # -*- coding: utf-8 -*-
    # @Author   : 王翔
    # @JianShu  : 清风Python
    # @Date     : 2019/6/7 23:19
    # @Software : PyCharm
    # @version  :Python 3.6.8
    # @File     : fristblood.py
    import turtle
    
    
    def goto(x,y):
        turtle.penup()
        turtle.goto(x,y)
        turtle.pendown()
    
    def zhengfang():
        turtle.begin_fill()
        goto(200, -200)
        for _ in range(4):
            turtle.left(90)
            turtle.forward(400)
        turtle.end_fill()
    
    
    def huabian():
        for _ in range(4):
            turtle.begin_fill()
            for _ in range(5):
                turtle.circle(40, 180)
                turtle.right(180)
            turtle.right(90)
            turtle.forward(400)
            turtle.end_fill()
            turtle.left(180)
            turtle.forward(400)
    
    
    def neitu():
        turtle.color('#D1C185', "#D1C185")
        goto(0, -25)
        for _ in range(12):
            turtle.begin_fill()
            turtle.circle(150, 60)
            turtle.left(90)
            turtle.circle(150, 60)
            turtle.end_fill()
    
    def wirte():
    
        goto(-40,10)
        turtle.color("red")
        turtle.write("端午快乐", font=("Time", 18, "bold"))
    
    
    if __name__ == '__main__':
        turtle.speed(10)
        turtle.color('#D1C185', "#839F26")
        zhengfang()
        huabian()
        neitu()
        wirte()
    
    turtle.done()
    

    看看效果:

    自我感觉良好的绿豆糕.gif

    我都准备发了,我媳妇儿过来看了一眼,说好丑,为什么不是圆的绿豆糕,可我中午吃的就是方的啊!
    今天买的绿豆糕已经都在肚子里了,想要圆的,只能临摹百度上找的绿豆糕了,大概像下面的样子:


    720e9c2403fef93d05eb13424f13647c.jpg

    照着再画一版吧,最终版这个样子:


    最终版的绿豆糕.gif

    大家觉得哪一版好看呢?
    如果大家想了解绿豆糕画法,关注我的公众号【清风Python】,回复端午节,即可获取。
    好了,今天的内容就到这里,如果觉得有帮助,记得点赞支持。欢迎大家关注我的公众号【清风Python】,获取更多Python相关的知识,公众号内有整理好的各类福利数据供大家下载,扫码关注:

    清风Python.gif

    相关文章

      网友评论

        本文标题:端午节用Python教你画绿豆糕

        本文链接:https://www.haomeiwen.com/subject/rglbxctx.html