使用 Python 绘制中秋月饼案例,大家中秋节快乐

发布于:2022-12-24 ⋅ 阅读:(574) ⋅ 点赞:(0)

文章目录

2022.9.10 既是中秋节又是教师节,在这里祝大家阖家团圆,中秋快乐,也祝天下的老师桃李满园,教师节快乐!这里为大家呈现上一个 Python 小项目 —— 使用 turtle 绘制月饼。

月。光辉,皎洁。耀乾坤,静空阔。圆满中秋,玩争诗哲。玉兔镝难穿,桂枝人共折。万象照乃无私,琼台岂遮君谒。抱琴对弹别鹤声,不得知音声不切。——【唐】李绅《赋月》

环境准备

macbook 运行环境准备

mac 默认 Python 版本为 3.8.x,在运行 turtle 时,会出现黑屏闪烁的情况。为了正常运行 turtle,我们需要安装更新的 Python 版本。

安装过程很简单,双击安装包

一直点击继续即可。

然后设置 python 和 pip 两个命令指向 python3.10.6 和 pip3.10 ,这样做的目的就是改变系统上主要使用的 Python 的版本,这样在命令行中输入 Python 就会显示如下内容:

在命令行中查看已经安装的 Pyhton 包:

那么,到底是怎么实现的呢?在家目录下(比如: /Users/zhangjiaming ),创建两个文件( touch .zshrc 、 touch bash_profile ),内容如下:

turtle 库

turtle 官网: https://pythonturtle.org

PythonTurtle致力于提供学习(或教授)Python编程语言软件开发的最低门槛方法。学生使用交互式Python shell(类似于空闲开发环境)并使用Python函数移动屏幕上显示的海龟。一个带插图的帮助屏幕向学生介绍Python编程的基础知识,同时演示如何移动海龟。

turtle 是一个十分方便的 Python 绘图库,只需要使用简单的过程方法,就可以绘制出许多有趣的图形。

turtle 模拟了用笔绘图的过程:

  • 落笔 —— turtle.pendown()
  • 起笔 —— turtle.penup()
  • 画直线 —— turtle.forward(xxx)
  • 笔的尺寸 —— turtle.pensize(xxx)
  • 向左转多少度 —— turtle.left(xxx)

封装一个自己的函数

就像是画画的时候一样,总有一个起笔——移动——落笔的过程,我们使用下面的函数来实现这三个步骤,否则,画笔会显示出画笔移动的轨迹。

def goto(x, y):
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()

月饼主体

我们的月饼分为以下几个部分:

  1. 最外侧花边

  2. 内侧花边

  3. 圆形

  4. 矩形

  5. 中心花瓣

  6. 文字

def draw():
    
    # 最外侧花边
    turtle.pensize(20)
    goto(0, 0)
    turtle.color("#83572F") 
    for _ in range(30):
        turtle.left(12)
        turtle.begin_fill()
        turtle.forward(200)
        turtle.circle(25, 180)
        turtle.goto(0, 0)
        turtle.left(180)
        turtle.end_fill()
    
    # 内侧花边
    goto(0, 0)
    turtle.color("#E1A43B") 
    for _ in range(30):
        turtle.left(12)
        turtle.begin_fill()
        turtle.forward(180)
        turtle.circle(25, 180)
        turtle.goto(0, 0)
        turtle.left(180)
        turtle.end_fill()
    
    # 圆形
    goto(0, -180)
    turtle.color("#F2C54D") 
    turtle.begin_fill()
    turtle.circle(180)
    turtle.end_fill()
    
    # 矩形
    x = 125
    y = 2*x
    turtle.pensize(15)
    turtle.color("#C97E2E") 
    goto(-x, x)
    turtle.pensize(10)
    turtle.forward(y)
    goto(-x, x-y)
    turtle.forward(y)
    goto(-x, x)
    turtle.right(90)
    turtle.forward(y)
    goto(x, x)
    turtle.forward(y)
    
    # 中心花瓣
    goto(0, 0)
    turtle.pensize(10)
    turtle.color("#36210E") 
    for _ in range(30):
        turtle.left(12)
        # turtle.begin_fill()
        turtle.forward(100)
        turtle.circle(25)
        turtle.goto(0, 0)

写一段文字

turtle 实现了绘制文字的函数,我们可以直接调用以实现文字效果。

def wirte():
    goto(200, -270) # 从哪里开始写
    turtle.color("black") # 画笔颜色
    turtle.write("祝:\n\n各位中秋节快乐,\n吉祥如意!\n\n , font=("Time",20,"bold")) # 书写内容、文字样式

完整代码:

import turtle

def goto(x, y):
    turtle.penup()
    turtle.goto(x, y)
    turtle.pendown()

def draw():
    
    turtle.pensize(20)
    goto(0, 0)
    turtle.color("#83572F") 
    for _ in range(30):
        turtle.left(12)
        turtle.begin_fill()
        turtle.forward(200)
        turtle.circle(25, 180)
        turtle.goto(0, 0)
        turtle.left(180)
        turtle.end_fill()
    
    goto(0, 0)
    turtle.color("#E1A43B") 
    for _ in range(30):
        turtle.left(12)
        turtle.begin_fill()
        turtle.forward(180)
        turtle.circle(25, 180)
        turtle.goto(0, 0)
        turtle.left(180)
        turtle.end_fill()
    
    goto(0, -180)
    turtle.color("#F2C54D") 
    turtle.begin_fill()
    turtle.circle(180)
    turtle.end_fill()
    
    x = 125
    y = 2*x
    turtle.pensize(15)
    turtle.color("#C97E2E") 
    goto(-x, x)
    turtle.pensize(10)
    turtle.forward(y)
    goto(-x, x-y)
    turtle.forward(y)
    goto(-x, x)
    turtle.right(90)
    turtle.forward(y)
    goto(x, x)
    turtle.forward(y)
        
    goto(0, 0)
    turtle.pensize(10)
    turtle.color("#36210E") 
    for _ in range(30):
        turtle.left(12)
        # turtle.begin_fill()
        turtle.forward(100)
        turtle.circle(25)
        turtle.goto(0, 0)
        # turtle.left(180)
        # turtle.end_fill()
    
    
        
def wirte():
    goto(200, -270)
    turtle.color("black")
    turtle.write("祝:\n\n各位中秋节快乐,\n吉祥如意!\n\n    Jia ming", font=("Time",20,"bold"))


if __name__ == '__main__':
    turtle.speed(9000)
    turtle.hideturtle() # 隐藏笔头
    
    draw()
    wirte()
    turtle.done()

最终效果

点击下方名片获取哦~备注“月饼” 


网站公告

今日签到

点亮在社区的每一天
去签到