likes
comments
collection

使用Python实现中秋月饼制作

作者站长头像
站长
· 阅读数 15

“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第1篇文章,点击查看活动详情

使用Python实现中秋月饼制作

前言

       中秋节,是中国四大传统节日之一又称祭月节、月光诞、月夕、秋节、仲秋节、拜月节、月娘节、月亮节、团圆节等,是中国民间的传统节日。中秋节源自天象崇拜,由上古时代秋夕祭月演变而来。中秋节自古便有祭月、赏月、吃月饼、看花灯、赏桂花、饮桂花酒等民俗,流传至今,经久不息。

平安月饼

🎈🎈中秋节,月饼肯定是必不可缺的,那么第一步,我们做一个平安月饼,送给远在他乡拼搏的各位,祝大家一路平安:

class Mooncake2:
    def __init__(self,x_distante,y_distante,name):
        turtle.home()
        turtle.setup(1100, 600)
        # 月饼最外层边数
        self.bian = 8
        self.ext_r = 100
        self.x_distante= x_distante
        self.y_distante = y_distante
        self.name = name
        self.yuebing_zhong()
    def yuebing_zhong(self):
        turtle.color("#FFD700")
        round_r = math.sin(math.pi / self.bian) * self.ext_r  # 月饼花圈的半径
        # 从水平x轴出发
        for i in range(self.bian):
            turtle.home()
            # print(turtle.xcor(), turtle.ycor())
            turtle.penup()  # 画笔抬起
            turtle.goto(self.x_distante,0)  # 恢复为初始位置
            turtle.seth((360 / self.bian) * i)  # 改变画笔方向,但不前进
            turtle.fd(self.ext_r)
            turtle.left((360 / self.bian) * 0.8)  # 画笔左转一定的角度
            turtle.color('#FF8C00')  # 设置颜色
            turtle.begin_fill()  # 开始填充颜色

            turtle.circle(round_r, extent=180)
            turtle.end_fill()
        self.inner_circle()
    def inner_circle(self):
        turtle.penup()
        turtle.goto(0+self.x_distante,100+self.y_distante)
        turtle.seth(0)
        turtle.pendown()
        turtle.color('#F0BE7C')
        turtle.begin_fill()
        turtle.circle(-self.ext_r)
        turtle.end_fill()
        self.Moon_inner()
    def Moon_inner(self):
        turtle.color('#FFD700')
        turtle.goto(0+self.x_distante,-self.ext_r-self.y_distante)
        turtle.left(0)
        turtle.begin_fill()
        turtle.circle(100,steps=6)
        turtle.end_fill()
        self.TP()
    def TP(self):
        self.pingan()
    def pingan(self):  
        turtle.penup()
        turtle.goto(-30+self.x_distante,0+self.y_distante)
        turtle.color('#FF8C00')
        turtle.write("平", font=("楷体", 50, "bold"))
        turtle.goto(-30+self.x_distante, -60+self.y_distante)
        turtle.write("安", font=("楷体", 50, "bold"))
        turtle.ht()
使用Python实现中秋月饼制作

主要难点为月饼花圈的半径算法,math.sin()求半径,用循环画边:

math.sin(math.pi / self.bian) * self.ext_r  

团圆月饼

团圆月饼花边

🌝🌝同样,中秋节的主题是团圆,我们再做个团圆月饼,这里我想到一种新的方法,通过画圆补充月饼外圈,效果也是不错的:

for i in range(self.bian2):
    turtle.left(i * (360 // self.bian2)+10)
    turtle.penup()
    turtle.forward(75)
    turtle.pendown()
    turtle.begin_fill()
    turtle.circle(35)
    turtle.end_fill()
    turtle.penup()
    turtle.home()
使用Python实现中秋月饼制作

完整团圆月饼

🎉🎉然后我们采用继承类的方法,直接用平安月饼中部分代码完成制作团圆月饼,这使用super()函数,其作用为->函数用于访问和调用一个对象上的父对象上的函数,代码如下:

class Mooncake(Mooncake2):
    def __init__(self,x_distante,y_distante,name):
        super(Mooncake2, self).__init__()
        turtle.home()
        # 月饼最外层边数
        self.bian2 = 11
        self.ext_r = 100
        self.x_distante= x_distante
        self.y_distante = y_distante
        self.name = name
        self.yuebing_zhong()
    def yuebing_zhong(self):
        turtle.penup()  # 将笔提起,移动时无图
        turtle.color("#FFA500")
        for i in range(self.bian2):
            turtle.left(i * (360 // self.bian2)+10)
            turtle.penup()
            turtle.forward(75)
            turtle.pendown()
            turtle.begin_fill()
            turtle.circle(35)
            turtle.end_fill()
            turtle.penup()
            turtle.home()
        # self.inner_circle()
    def TP(self):
        self.tuanyuan()
    def tuanyuan(self):  #
        # print(turtle.pos())
        turtle.penup()
        turtle.goto(-33,0)
        turtle.color('#FF8C00')
        turtle.pencolor('orange')
        turtle.write("团", font=("黑体", 50))
        turtle.goto(-33, -63)
        turtle.write("圆", font=("黑体", 50))
        turtle.ht()
使用Python实现中秋月饼制作

背景与音乐

🌕🌕月饼有了,又怎能少了那皎洁的月光呢?

       我们找一张自己喜欢的图片,用PS裁剪一个相对合适的大小,我使用的尺寸是1100*600,使用turtle.bgpic()函数添加图片。

注意:只可选择gif格式图片为对象添加背景,并根据尺寸设置窗口大小以避免画面缺失或过大

turtle.setup(1100, 600)
turtle.bgpic('背景.gif')

使用Python实现中秋月饼制作


💮💮音乐必不可缺席,这里我使用pygame库导入我最喜欢的音乐——明月几时有

from pygame import mixer
def play_music():
    mixer.init()
    mixer.music.load("Moon_music.mp3")
play_music()

但愿人长久,千里共婵娟✨

💖💖最后,我想跟大家说:但愿人长久,千里共婵娟

def tell():
    turtle.penup()
    turtle.goto(-500, -120)
    turtle.color('#FF8C00')
    turtle.write("但愿人长久,", font=('三极泼墨体', 50, "bold"))
    turtle.goto(-330,-240)
    turtle.write("千里共婵娟❤", font=('三极泼墨体', 50, "bold"))
    turtle.ht()

完整代码地址

       中秋快乐!