image.png

自古以来,月饼作为吉祥与团圆的象征,是中秋节必不可少的节日美食。它的形状意味着「团圆」,它的香气传递着「思念」。每一次品尝都寄托着深深的牵挂,每一次分享都传递着美好的情谊。

在这个特别节日到来之际,PieCloudDB 社区将为大家奉上一份「程序员」专属月饼制作「食谱」,手把手教大家如何用 Python 绘制一个独属于你的中秋月饼。

image.png

image.png

image.png

在制作月饼之前,需要准备好以下内容:

  • Python:V3.10.4 或以上版本
  • Turtle:V0.0.1

我们将使用 Turtle 来进行月饼的制作,Turtle 库是 Python 中常用的绘制图像的函数库,俗称海龟绘图,通过编写代码,指挥一只虚拟的“海龟”在一个画布上进行移动和转向,完成绘图。

在 Python 环境中导入所需的 Turtle 库后,我们的准备工作就完成啦~

import turtle as t

image.png

接下来,和我们一起动手制作月饼吧!制作过程将分为五步进行:

步骤 1:制作“饼皮”

首先,我们来制作月饼的“饼皮”。为了让这个特别的月饼更加美观,我们将“饼皮”分为橘色和白色两层,并在边缘处进行圆点装饰。

def Pattern(num,p_color,f_color,distance,radius): # 绘制外层的饼皮
    t.speed(0) # 设置画笔速度
    t.pensize(1) # 设置画笔粗细
    t.pencolor(p_color) # 设置画笔颜色
    for _ in range(num):
        t.penup() # 抬起画笔,移动时不进行绘制
        t.left(360/num) # 向左旋转画笔方向
        t.fillcolor(f_color) # 填充图形颜色
        t.begin_fill() # 开始填充
        t.forward(distance) # 向当前方向前进
        t.pendown() # 放下画笔,进行绘制
        t.circle(radius, 180) # 绘制一个圆
        t.penup()
        t.goto(0, 0) # 将画笔移动至(0,0)点
        t.left(180)
        t.end_fill() # 结束填充

def Draw_dot(num,color,distance,diameter): # 绘制装饰的圆点
    t.speed(0)
    t.setheading(1.5*360/num) # 设置画笔初始角度
    for _ in range(num):
        t.penup()
        t.left(360/num)
        t.forward(distance)
        t.pendown()
        t.dot(diameter,color) 
        t.penup()
        t.goto(0,0)

步骤 2:预留“内馅”填充

“饼皮”准备好后,我们将在中间区域预留填充“月饼陷”的部位,并进行装饰。

def Draw_circle(radius,color): # 绘制中心圆
    t.speed(0)
    t.setheading(0)
    t.goto(0, -radius)
    t.pendown()
    t.fillcolor(color)
    t.begin_fill()
    t.circle(radius,360)
    t.penup()
    t.end_fill()  

def Draw_texture(x,y,angle,color): # 绘制四周的花纹
    t.speed(0)
    t.pensize(3)
    t.penup()
    t.goto(x, y)
    t.pendown()
    t.color(color)
    t.setheading(angle)
    t.forward(20)
    t.right(90)
    t.circle(-100, 30)
    t.penup()
    t.goto(x, y)
    t.pendown()
    t.setheading(angle)
    t.right(90)
    t.circle(-100, 40)
    t.left(90)
    t.forward(45)
    t.left(95)
    t.circle(190, 70)
    t.left(95)
    t.forward(45)
    t.left(90)
    t.circle(-100, 40)
    t.setheading(angle)
    t.forward(20)
    t.left(90)
    t.circle(100, 30)
    t.penup()
    t.home() # 画笔返回原点

步骤 3:填充“馅料”

这是“月饼”制作过程中最重要的一步。我们在预留区域,填充“馅料”——π。π 不仅仅是一个数学符号,它代表着永恒与无限,正如亲友间无尽的情感,无论相隔多远,心中的那份牵挂从未停歇。

def Draw_pi(): # 绘制OpenPie Logo图形
    t.speed(10)
    t.penup()
    t.goto(0, 0)
    t.dot(260, "#cf2722")
    t.goto(-44, 24)
    t.pendown()
    ## 绘制图形π
    t.pencolor("white")
    t.fillcolor("white")
    t.begin_fill()
    t.circle(20, -90)
    t.setheading(0)
    t.forward(100)
    t.circle(-20, 90)
    t.setheading(-180)
    t.forward(20)
    t.setheading(-90)
    t.forward(50)
    t.circle(10, 90)
    t.forward(10)
    t.setheading(-90)
    t.forward(20)
    t.setheading(-180)
    t.forward(30)
    t.circle(-16, 90)
    t.forward(64)
    t.setheading(-180)
    t.forward(22)
    t.setheading(-90)
    t.forward(48)
    t.circle(-32, 90)
    t.setheading(90)
    t.forward(80)
    t.end_fill()
    ## 绘制π周围的两条白线
    t.penup()
    t.goto(0, 130)
    t.pendown()
    t.pensize(3)
    t.setheading(-10)
    t.circle(-120, 188)
    t.penup()
    t.goto(0, -130)
    t.pendown()
    t.setheading(170)
    t.circle(-120, 188)

步骤 4:“裱”上文字

月饼即将完成啦!我们用笔触轻轻勾勒,将心中的祝福化作简洁而真挚的文字,每一笔、每一划,都承载着我们对家人的牵挂、对亲友的关怀和对未来的美好期许。

def Write(text,x,y,color,font,size): # 绘制文字
    t.speed(3)
    t.penup()
    t.goto(x,y)
    t.pendown()
    t.pencolor(color)
    t.write(text, align="center", font=(font,size,"bold"))

步骤 5:“烘焙”出炉

铛铛,在为各个函数输入对应的参数后即可调用执行,这样我们的月饼🥮就大功告成啦!你学会了吗?

if __name__ == "__main__": # 调用定义的函数
    ## 绘制外层的饼身
    Pattern(20,"#dd6d47","#dd6d47",280,46)
    Pattern(20,"#dd6d47","white",240,40)
    ## 绘制装饰的圆点
    Draw_dot(20,"#dd6d47",245,10)
    ## 绘制中心圆
    Draw_circle(220,"#dd6d47")
    ## 绘制四周的花纹
    Draw_texture(16,160,90,"white")
    Draw_texture(-160,16,180,"white")
    Draw_texture(-16,-160,270,"white")
    Draw_texture(160,-16,360,"white")
    ## 绘制图形π
    Draw_pi()
    ## 绘制文字
    Write("中",-120,90,"white","Comic Sans MS",50)
    Write("秋",120,90,"white","Comic Sans MS",50)
    Write("快",-120,-150,"white","Comic Sans MS",50)
    Write("乐",120,-150,"white","Comic Sans MS",50)
    t.done() # 停止绘制,窗口不关闭

🎑 欢迎大家参考这份食谱,制作出你的「专属」月饼~

最后,PieCloudDB 社区祝大家中秋节快乐!

image.png


OpenPie
1 声望0 粉丝

拓数派大模型数据计算系统(PieDataCS)首款数据计算引擎 PieCloudDB, 为企业构建高安全、高可靠、高在线「坚如磐石」的云原生虚拟数仓。