Pasa el Festival del Medio Otoño con código, ¿quieres probar el pastel de luna de tortuga pitón?

        Tabla de contenido:

1. Bendiciones del Festival del Medio Otoño en 2022

En segundo lugar, el método principal de dibujo de tortuga Python

(1) Los pasos principales del dibujo de tortuga

(2) Sistema de coordenadas de dibujo de tortuga

(3) Algunas sugerencias para dibujar tortugas

3. Comandos comunes para dibujar tortugas

1. Inicialización

2. Propiedades del pincel

3. Comandos de movimiento de pincel

4. Comando de control de color del pincel

5. Comandos de control globales

4. Apreciación de imágenes de pasteles de luna de mediados de otoño

5. Colección de la serie "Drawing Mooncakes with Code":​

1. Pastel de luna de piel de nieve

2. Crossin marca "pastel de luna"

3. Pastel de luna de la fortuna

4. Pasteles de luna estampados

5. MATLAB dibuja un pastel de luna 2.5D

6. Portafolio del programador del Festival del Medio Otoño de 2022


1. Bendiciones del Festival del Medio Otoño en 2022

   El tema de este ensayo del Festival del Medio Otoño de CSDN de 2022 es 100 formas en que los programadores pueden celebrar el Festival del Medio Otoño. la respuesta es negativa. Si una persona puede posicionarse claramente lo antes posible, puede lograr lo último en un aspecto determinado, y cuanto antes pueda lograr logros, este método es correcto. Los talentos de todos son diferentes, y las experiencias de vida también son diferentes. No me posicioné en un cierto punto fijo, porque creo que muchas cosas parecen no estar relacionadas, pero están relacionadas, una vez que entiendes, puedes encontrar y entender algunas. . .

  El mundo cambia todos los días, especialmente el rápido progreso de algunas de alta tecnología (no se refiere a un aspecto determinado, sino a una combinación de varias de alta tecnología), a veces realmente hace sentir a la gente. . . Si te sucede algo increíble, no tengas miedo, cuídate y aprecia a todos los que te rodean que son amables contigo. No seas complaciente fácilmente, siempre habrá personas y grupos mejores que tú en este mundo.

  El tema está demasiado lejos, hablemos del Festival del Medio Otoño. Los programadores pueden usar el código para tejer una bendición única para el Festival del Medio Otoño y enviar un regalo único a las personas que los rodean. Por ejemplo, pasteles de luna personalizados con códigos, tarjetas de felicitación de mediados de otoño personalizadas y más.

  Este Festival del Medio Otoño, usé python para dibujar pasteles de luna para todos. El concepto de imagen de animación de python: montañas y ríos pintorescos, luna brillante en el cielo, música de piano melodiosa y adversidad sobria . Usaré la plataforma de CSDN para compartir los pasteles de luna del Festival del Medio Otoño contigo. ¡Les deseo a todos un feliz Festival del Medio Otoño!

  Todavía me río y suspiro después de caminar durante la mitad de mi vida. Que dejes ir el dolor y el frío del mundo, y veas las ganancias y las pérdidas como algo claro. Que seas feliz y nunca estés solo, y deja que la felicidad te impregne. Que la luz de las estrellas te guíe en la oscuridad, y las luciérnagas tengan ojos claros para distinguir entre lo verdadero y lo falso. ¡Que siempre haya fuerza detrás de ti, y que seas tu propio sol! ¡Que te quedes para siempre!

En segundo lugar, el método principal de dibujo de tortuga Python

  El dibujo de tortugas (biblioteca de tortugas) es un módulo interno de Python, puede importar Turtleku antes de usarlo

  Las tortugas tienen varias propiedades clave: orientación, posición y propiedades de pincel.

(1) Los pasos principales del dibujo de tortuga

  Por lo general, cuando dibujamos

  El primer paso es importar la biblioteca de tortugas y algunas bibliotecas que se pueden usar en el dibujo, como la biblioteca de funciones aleatorias, la biblioteca numpy , etc., según la situación real.

  Instrucciones:

  importar tortuga

  importar al azar

  

  El segundo paso, use setup () para establecer el tamaño del lienzo

  Lienzo:

  El lienzo es el área que usamos para dibujar, podemos establecer su tamaño y posición inicial

  Establecer el tamaño del lienzo:

  1. turtle.screensize(canvwidth=Ninguno, canvheight=Ninguno, bg=Ninguno)

  Los parámetros son el ancho (unidad de píxel), la altura y el color de fondo del lienzo.

  tortuga.tamaño de pantalla () tamaño predeterminado (400, 300)

  Ejemplo: tortuga.tamaño de pantalla(800, 600, "negro")

  2. tortuga.setup(ancho=valor, alto=valor, startx=Ninguno, starty=Ninguno)

  setup() establece el tamaño y la posición del formulario.

  parámetro:

  ancho, alto: cuando es un número entero, significa píxeles;

  ancho, alto: cuando es un decimal, significa la proporción de la pantalla de la computadora

  tortuga.setup(ancho=0.5, alto=0.85, startx=Ninguno, starty=Ninguno)

  tortuga.setup(ancho=0.6, alto=0.6)

  (startx, starty): Esta coordenada representa la posición de la esquina superior izquierda de la ventana rectangular, si está vacía, la ventana está en el centro de la pantalla

  如:tortuga.setup(ancho=800, alto=800, iniciox=100, inicio=100)

  El tercer paso, establecer el cepillo.

  Use Pen() para configurar el objeto de dibujo de la tortuga, es decir, el pincel: turtle.Pen()

  t = tortuga.Bolígrafo()

  Utilice t en lugar de turtle.Pen(). Un enfoque de una vez por todas que simplifica la introducción de código.

(2) Sistema de coordenadas de dibujo de tortuga

  Después de ejecutar el código, se crea el lienzo y se puede ver la tortuga (flecha) en el medio de la pantalla.

  En el dibujo de la tortuga, el punto de partida de la tortuga, es decir, el centro del lienzo es (0,0), la unidad de movimiento es el píxel (píxel) y la cabeza de la tortuga es la dirección del eje x, que es 0 grados.

    En el dibujo de tortugas, la posición y la dirección se utilizan para describir el estado de la tortuga (pincel).

  Imagine una tortuga robótica en el área de dibujo, comenzando en (0, 0) en el plano xy. Ejecute import turtle primero, luego ejecute turtle.forward(15), que avanzará (en la pantalla) 15 píxeles en la dirección positiva del eje x hacia el que se enfrenta, dibujando un segmento de línea a medida que se mueve. Luego ejecute turtle.right(25), girará a la derecha en su lugar 25 grados.

  Se usan dos palabras para describir las tortugas: el origen de las coordenadas (posición), frente al eje x positivo (dirección),

  Durante el proceso de dibujo, si no se especifican las coordenadas y los ángulos, todos los ángulos y las posiciones son relativos (en relación con la posición y el ángulo actuales de la tortuga) .

Los círculos se usan a menudo para dibujar pasteles de luna: tortuga.circulo(radio, extensión=Ninguno, pasos=Ninguno)

parámetro:

  • radio -- un valor numérico

  • extensión -- un número (o Ninguno)

  • pasos: un número entero (o ninguno)

  Dibuja un círculo con el radio especificado por radio.

  El centro del círculo está en unidades de radio a la izquierda de la tortuga;

  La extensión es un ángulo incluido que se utiliza para determinar una parte del círculo dibujado. Si no se especifica la extensión*, se dibuja todo el círculo. Si *extent no es una circunferencia completa, se dibuja un arco con la posición actual del lápiz como punto final. El arco se dibuja en sentido contrario a las agujas del reloj si el radio es positivo, en sentido contrario a las agujas del reloj.

  Eventualmente, la orientación de la tortuga cambiará según el valor de la extensión.

  El círculo en realidad se aproxima por su polígono regular inscrito, con el número de lados especificado por pasos.

  Si no se especifica el número de lados, se determina automáticamente. Este método también se puede utilizar para dibujar polígonos regulares.

  Dibuje un círculo con un radio de 100, círculo (100) Tenga en cuenta que el centro del círculo no está en el origen después del dibujo.

(3) Algunas sugerencias para dibujar tortugas

      a. Usando Turtle Drawing, puede escribir programas que repiten acciones simples para dibujar formas intrincadas y complejas.

de importación de tortugas *

velocidad(0)

color('azul', '#87CEFA')

comenzar_llenar()

mientras que es cierto:

    adelante (200)

    izquierda(170)

    si abs(pos()) < 1:

        descanso

end_fill()

Organizar el texto en un círculo:

importar tortuga como t

text="Les deseo a todos un feliz Festival del Medio Otoño"

para i en el texto:

    t.write(i,align="center",font=("黑体",20,"normal"))

    t.right(360/len(texto))

    t.penup()   

    t.adelante(40)

t.hiddeturtle()

t.hecho()

  B. Oculte el pincel, establezca la velocidad, puede dibujar más rápido;

  C. Para el código de color del dibujo de tortuga, consulte el siguiente enlace

Serie de tablas de comparación de colores (1~5) 300 colores (hexadecimal, RGB, CMYK, HSV, nombres en chino e inglés)

    Elija el color que desee, copie el valor del código de color correspondiente y colóquelo en la configuración de color de la tortuga.

3. Comandos comunes para dibujar tortugas

1. Inicialización

comando de código

efecto

importar tortuga

Importar la biblioteca de tortugas

t = tortuga.Bolígrafo()

Obtenga el cepillo de tortuga de la caja de herramientas

tortuga.setup()

Configuración del lienzo (dimensiones, distancias)

tortuga.bgcolor("negro")

Color de fondo del lienzo (por ejemplo, negro)

tamaño de pantalla( )  

Establezca el ancho, la altura y el color de fondo de la ventana del lienzo

2. Propiedades del pincel

comando de código

efecto

tortuga.pensize(ancho valor numérico)

Grosor del pincel, ajuste el grosor de la línea del pincel al tamaño especificado

tortuga.color('color del pincel')

cadena de color de pincel "verde", "rojo" o RGB de 3 tuplas

tortuga.velocidad(0)

Establecer la velocidad de movimiento del cepillo

El rango de velocidad del pincel para dibujar es un número entero en el rango de [0, 10], cuanto mayor sea el número, más lenta será la velocidad del pincel. Valor 1~9, 0 es la velocidad t más rápida (0)

tortuga.ocultartortuga()

Ocultar icono de tortuga (ocultar flecha de pincel)

tortuga.mostrartortuga()

Mostrar icono de tortuga (mostrar flecha de pincel)

3. Comandos de movimiento de pincel

comando de código

efecto

tortuga.adelante()

fd(distancia)         

Avanzar, avanzar una distancia específica en la dirección actual

bk(distancia)

Mover hacia atrás, retroceder una distancia específica en la dirección opuesta a la actual

tortuga.derecha (ángulo de rotación)

El cepillo gira a la derecha, tortuga derecha (90) La dirección de la tortuga gira 90° a la derecha

tortuga.izquierda (ángulo de rotación)

El cepillo gira a la izquierda, turtle.left(90) gira la dirección de la tortuga 90° a la izquierda

tortuga.penup()

levanta la pluma, levanta la pluma

tortuga.pendown()

bolígrafo, bolígrafo

tortuga.goto(x, y horizontal, vertical)

Controle el pincel para moverse a la posición especificada, y la tortuga se mueve a la posición (x,y)

tortuga.setx(x)

La coordenada x de la tortuga se mueve a la posición especificada y la ordenada permanece sin cambios

tortuga.sety(y)

La coordenada y de la tortuga se mueve a la posición especificada y la abscisa permanece sin cambios.

turtle.circle (radio especificado, radianes)

dibujar un círculo, dibuja un círculo o un arco con un radio y un ángulo especificados e

tortuga.punto(radio, color)

dibujar un punto (sólido) dibuja un punto con un radio y color especificados

turtle.setheading(angle指向角度)

turtle.seth(angle)

设置当前朝向为angle角度。画笔的指向,右是0,逆时针0-360递增

turtle.home()

设置当前画笔位置为原点,朝向东(默认值)

4、 画笔颜色控制命令

代码命令

作 用

turtle.fillcolor('颜色')

设置 填充颜色

turtle.color(color1, color2)

设置 画笔颜色为color1,填充颜色为color2

可以使用颜色名称或十六进制RGB代码

turtle.begin_fill()

开始填充颜色

turtle.end_fill()

填充完成,结束填充

turtle. pencolor(‘颜色’)

设置画笔颜色

turtle. filling()

返回填充的状态,True为填充。False为未填充

5、全局控制命令

代码命令

作 用

turtle.clear()

清空turtle窗口,但是turtle的位置和状态不会改变(当前窗口清空,当前画笔位置不改变)

turtle.reset()

清空turtle窗口,重置turtle状态为起始状态(当前窗口清空,画笔位置等状态为初始时的默认值)

turtle.undo()

撤销上一个turtle动作(撤销画笔的最后一步动作)

turtle.isvisible()

返回当前turtle是否可见

turtle.done()

关闭画笔,结束绘制,但画面保留

              

代码命令

作 用

t.write("文本" ,align="center",font=("黑体",20,"normal"))

写文本,可指定显示字体,字体大小等align(可选):left,right,center;font(可选):字体名称,字体大小,字体类型(normal,bold,italic)

四、中秋月饼图片欣赏

       要画月饼先要留意月饼长什么样,中秋节少不了月饼,现在的月饼除了传统口味的,还出了不少新口味,外观造型上也有创新,一起来看一下吧。

莲蓉月饼

蛋黄莲蓉月饼

白莲双黄

豆沙月饼

绿豆月饼

五仁月饼

水晶月饼

苏式月饼

五仁月饼(大)

冰皮月饼

绿茶月饼

奶油椰蓉

溏心蛋黄

杨枝甘露

韵香乌龙茶

白桃茉莉花

蓝莓黑莓

夏威夷果仁巧克力

芋泥芝士奇亚籽

金沙奶黄

枣泥核桃

臻品奶黄

栗蓉

红豆

奶黄

黑芝麻

南瓜

五、收集的“用代码画月饼”作品系列:

       这次我用python 海龟画的月饼,因时间的关系,除了增加了情景底图,其他的在代码上没有什么独特之处(我的代码就先不贴出来了),月饼的画法主要借鉴了下面几个作品的思路。让我们一起来学一下吧。

1.冰皮月饼

        个人观点:这款月饼画法简洁,纯海龟作图,入门简单,封装调用,只需修改几个参数就可制作出同款月饼。欠缺的是外观的月饼花纹。

from turtle import *

# 隐藏海龟
hideturtle()
# 颜色模式
colormode(255)
'''
函数说明:

pensize:画笔粗细
pencolor:画笔颜色
fillcolor:填充颜色
begin_fill:开始填充
fd:前进
circle:画圆
right:右转
end_fill():结束填充

'''


def MoonCake(bgcolor, mkcolor, wdcolor, words):
    '''
    参数说明:
    
    bgcolor: 背景颜色
    mkcolor: 月饼颜色
    wdcolor: 文字颜色
    words: 文字(4个字)
    '''
    pensize(2)
    pencolor(0, 0, 0)
    fillcolor(bgcolor)

    begin_fill()
    for i in range(12):
        if i == 5:
            p = pos()
        circle(30, 120)
        right(90)
    end_fill()
    
    penup()
    fd(20)
    pendown()

    fillcolor(mkcolor)
    
    begin_fill()
    for i in range(12):
        circle(30, 120)
        right(90)
    end_fill()

    pencolor(wdcolor)

    left(90)
    fd(140)
    left(90)
    fd(140)
    left(90)
    fd(72)
    p = pos()
    wd1 = words[0:2]
    wd2 = words[2:4]
    write(wd1, font=('Arial', 70, 'normal'))
    fd(70)
    write(wd2, font=('Arial', 70, 'normal'))
    left(90)
    fd(140)


# MoonCake((231, 162, 63), (255, 166, 16), (204, 22, 58), '五仁月饼')

MoonCake((97, 154, 195),(186, 204, 217) ,(17, 101, 154), '冰皮月饼')
mainloop()

作者:二哥不像程序员
原文地址:中秋节快到了,别学Python了,进来排队领块月饼吧【纯手工哪种】!_二哥不像程序员的博客-CSDN博客

2、Crossin牌“月饼”

        个人观点:这款月饼画法上用到了numpy和matplotlib库,需要掌握相应的基础知识。

import numpy as np
from numpy import sin, cos, pi
import matplotlib.pyplot as plt
import matplotlib.patches as mpatch
from matplotlib.patches import Arc, Circle, Wedge
from matplotlib.collections import PatchCollection

length = 20
R = 3**0.5*length/(3**0.5*cos(pi/12)-sin(pi/12))
r = 2*sin(pi/12)*R/3**0.5

arc1 = Arc([0, length], width=2*r, height=2*r, angle=0, theta1=30, theta2=150, ec='orange', linewidth=4)
arc2 = Arc([-length/2, length/2*3**0.5], width=2*r, height=2*r, angle=0, theta1=60, theta2=180, ec='orange', linewidth=4)
arc3 = Arc([-length/2*3**0.5, length/2], width=2*r, height=2*r, angle=0, theta1=90, theta2=210, ec='orange', linewidth=4)
arc4 = Arc([-length, 0], width=2*r, height=2*r, angle=0, theta1=120, theta2=240, ec='orange', linewidth=4)
arc5 = Arc([-length/2*3**0.5, -length/2], width=2*r, height=2*r, angle=0, theta1=150, theta2=270, ec='orange', linewidth=4)
arc6 = Arc([-length/2, -length/2*3**0.5], width=2*r, height=2*r, angle=0, theta1=180, theta2=300, ec='orange', linewidth=4)
arc7 = Arc([0, -length], width=2*r, height=2*r, angle=0, theta1=210, theta2=330, ec='orange', linewidth=4)
arc8 = Arc([length/2, -length/2*3**0.5], width=2*r, height=2*r, angle=0, theta1=240, theta2=360, ec='orange', linewidth=4)
arc9 = Arc([length/2*3**0.5, -length/2], width=2*r, height=2*r, angle=0, theta1=270, theta2=390, ec='orange', linewidth=4)
arc10 = Arc([length, 0], width=2*r, height=2*r, angle=0, theta1=300, theta2=420, ec='orange', linewidth=4)
arc11 = Arc([length/2*3**0.5, length/2], width=2*r, height=2*r, angle=0, theta1=330, theta2=450, ec='orange', linewidth=4)
arc12 = Arc([length/2, length/2*3**0.5], width=2*r, height=2*r, angle=0, theta1=0, theta2=120, ec='orange', linewidth=4)

art_list = [arc1, arc2, arc3, arc4, arc5, arc6, arc7, arc8, arc9, arc10, arc11, arc12]

circle = Circle((0,0), R, ec='orange', fc='white', linewidth=4)

wedge1 = Wedge([-2, 2], R-5, 90, 180, ec='orange', fc=r'white', linewidth=4)
wedge2 = Wedge([-5, 5], R-12, 90, 180, ec='orange', fc=r'white', linewidth=4)
wedge3 = Wedge([-2, -2], R-5, 180, 270, ec='orange', fc=r'white', linewidth=4)
wedge4 = Wedge([-5, -5], R-12, 180, 270, ec='orange', fc=r'white', linewidth=4)
wedge5 = Wedge([2, -2], R-5, 270, 360, ec='orange', fc=r'white', linewidth=4)
wedge6 = Wedge([5, -5], R-12, 270, 360, ec='orange', fc=r'white', linewidth=4)
wedge7 = Wedge([2, 2], R-5, 0, 90, ec='orange', fc=r'white', linewidth=4)
wedge8 = Wedge([5, 5], R-12, 0, 90, ec='orange', fc=r'white', linewidth=4)

art_list.extend([circle, wedge1, wedge2, wedge3, wedge4, wedge5, wedge6, wedge7, wedge8])
fig, ax = plt.subplots(figsize=(8,8))
ax.set_aspect('equal')
for a in art_list:
    ax.add_patch(a)

plt.text(-18, -2.5, 'CROSSIN', fontfamily=r'Times New Man', bbox=dict(boxstyle='square', fc="w", ec='orange', linewidth=4),  fontsize=50, color='orange')

plt.ylim([-35, 35])
plt.xlim([-35, 35])

plt.show()

作者:Crossin的编程教室
原文地址:

中秋节到了,送你一个Python做的Crossin牌“月饼”_Crossin的编程教室的博客-CSDN博客

3、福字月饼

        个人观点:这款月饼是python 海龟月饼,有花纹

import turtle
 
def goto(x, y):#定义提笔的位置
    turtle.penup() #将笔提起,移动时无图
    turtle.goto(x, y)
    turtle.pendown() #将笔放下,移动时绘图。
 
 
def yuebing_wai():
    turtle.pensize(20)#画笔调粗点
    turtle.color( "#F8CD32","#FBA92D")#填充颜色,F8CD32是圆圈的边缘颜色,FBA92D是圆圈的填充颜色
    goto(0, -200)#画笔起点位于(0,0)点的下方200向量处
    turtle.begin_fill()#准备开始填充
    turtle.circle(200)#定义半径
    turtle.end_fill()#填充结束
 
 
def yuebing_zhong():
    goto(0, 0)#画笔起点位于(0,0)处
    turtle.color("#F0BE7C")
    for _ in range(20):#_是占位符,表示临时变量,仅用一次,后面无需再用到 
        turtle.right(18)#顺时针移动18度
        turtle.begin_fill()
        turtle.forward(220)#向前移动的距离
        turtle.circle(40, 180)#上一条向前移动220之后,开始画半径40的半圆
        turtle.goto(0, 0)#画完半圆之后回到(0,0)
        turtle.right(360)#顺时针转个360度
        turtle.end_fill()
 
 
def yuebing_nei():#逻辑同上
    turtle.right(360)
    turtle.color('#F5E16F')#内层颜色
    goto(0, -180)
    for _ in range(12):
        turtle.begin_fill()
        turtle.circle(60, 120)
        turtle.left(180)
        turtle.circle(60, 120)
        turtle.end_fill()
 
 
def fu():#
    turtle.right(50)
    goto(-70, -80)#更高坐标尽量使字靠中间
    turtle.color("Gold")#颜色
    turtle.write("福", font=("华文隶书", 120, "bold"))
    turtle.done()
 
 
if __name__ == '__main__':
    turtle.speed(90)
    yuebing_zhong()
    yuebing_wai()
    yuebing_nei()
    fu()
 
 
turtle.done()  

作者:weixin_39912368
原文地址: 

python趣味代码_趣味项目:用Python代码做个月饼送给你!_weixin_39912368的博客-CSDN博客


4、花纹月饼

       个人观点:这款月饼属纯python 海龟绘制,外观精致,有花纹和文字,用函数定义了月饼的不同部分,修改起来不难。

import turtle

t = turtle.Pen()  # 画笔一 用于画图
t.speed(0)


# 花纹颜色 #F29407
# 饼身颜色 #F8B41A

# 画 饼身部分
def outfill_flower(flower_num: "花瓣数量", flower_color: "花瓣颜色"):
    for i in range(flower_num):
        t.left(i * (360 // flower_num))
        t.color(flower_color)
        t.penup()
        t.forward(200)
        t.pendown()
        t.fillcolor(flower_color)
        t.begin_fill()
        t.circle(60)
        t.end_fill()
        t.penup()
        t.home()


# 画 饼身外围 花纹部分
def out_line_flower(flower_num: "花纹数量", flower_color: "花纹颜色"):
    for i in range(flower_num):
        t.pensize(5)
        t.left(i * (360 // 18))
        t.color(flower_color)
        t.penup()
        t.forward(192)
        t.pendown()
        t.circle(60)
        t.penup()
        t.home()


# 画内测的大圆 大圆的填充色比饼身略亮
def big_circle(circle_color: "大圆颜色", circle_fill_color: "大圆填充颜色", circle_size: "大圆半径"):
    t.goto(circle_size, 0)
    t.left(90)
    t.pendown()
    t.pensize(8)
    t.color(circle_color)
    t.fillcolor(circle_fill_color)
    t.begin_fill()
    t.circle(circle_size)
    t.end_fill()
    t.penup()
    t.home()


# 饼上印花文字 文字内容和坐标用字典存储
def write_font(text_content: "文本内容", text_color: "文本颜色", size: "文字大小"):
    t.color(text_color)
    for x in text_content:
        t.penup()
        t.goto(text_content[x])
        t.write(x, align='center', font=('simhei', size, 'bold'))
    t.penup()
    t.home()
    t.color('#F29407')


# 饼身中间矩形条纹部分
def body_center_line(width: "矩形宽度", height: "矩形高度"):
    t.penup()
    t.home()
    t.pensize(4)
    t.pendown()
    t.backward(width / 2)
    t.forward(width)
    t.left(90)
    t.forward(height)
    t.left(90)
    t.forward(width)
    t.left(90)
    t.forward(height * 2)
    t.left(90)
    t.forward(width)
    t.left(90)
    t.forward(height)
    t.penup()
    t.home()


# 矩形条纹两侧的四个花纹 画笔轨迹是一样的 所以只需要传入不同的初始位置和角度即可复用代码
def center_flower(start_point: "落笔位置", start_angle: "落笔朝向", angle_direction_change: "新朝向",
                  rectangle_height: "矩形高度", circle_direction: "花纹弧度"):
    t.penup()
    t.goto(start_point)
    t.pendown()
    t.setheading(start_angle)
    t.forward(10)
    t.setheading(angle_direction_change)
    t.forward(20)
    t.backward(rectangle_height * 2)
    t.forward(rectangle_height * 2)
    t.setheading(start_angle)
    t.circle(circle_direction * 70, 90)
    t.setheading(start_angle + 180)
    t.forward(60)
    t.setheading(angle_direction_change)
    t.forward(30)
    t.penup()
    t.home()


# 饼身上下左右的花纹
def out_flower(begin_x: "落笔横坐标", begin_y: "落笔纵坐标", start_angle: "落笔朝向"):
    t.penup()
    t.goto(begin_x, begin_y)
    t.pendown()
    t.setheading(start_angle)
    t.forward(20)
    t.right(90)
    t.circle(-100, 20)

    t.penup()
    t.goto(begin_x, begin_y)
    t.pendown()
    t.setheading(start_angle)
    t.right(90)
    t.circle(-100, 30)
    t.left(90)
    t.forward(45)
    t.left(95)
    t.circle(190, 50)
    t.left(95)
    t.forward(45)
    t.left(90)
    t.circle(-100, 31)
    t.setheading(start_angle)
    t.forward(20)
    t.left(90)
    t.circle(100, 20)
    t.penup()
    t.home()

# 以下代码开始调用各种功能
if __name__ == "__main__":
	# 设置画布名称
    t.screen.title('中秋快乐')
    # 画 饼身部分
    outfill_flower(18, '#F8B41A')
    # 画 饼身外围 花纹部分
    out_line_flower(18, '#F29407')
    # 画内测的大圆 大圆的填充色比饼身略亮
    # big_circle('#F29407','#F8B41A',200)
    big_circle('#F29407', '#F8B51D', 200)
    # 饼上印花文字 文字内容和坐标用字典存储
    text_content = {'花': (-100, 70), '好': (100, 70), '月': (100, -120), '圆': (-98, -125)}  # 圆字坐标最后向下微调了一下
    # write_font(text_content,'#F29407',40)
    write_font(text_content, '#FC932B', 40)
    # 饼身中间矩形条纹部分
    body_center_line(12, 80)
    # 矩形条纹两侧的四个花纹
    center_flower((6, 60), 0, 90, 80, -1)
    center_flower((6, -60), 0, -90, 80, 1)
    center_flower((-6, 60), 180, 90, 80, 1)
    center_flower((-6, -60), 180, -90, 80, -1)
    # 饼身上下左右的花纹
    out_flower(6, 110, 90)
    out_flower(-110, 6, 180)
    out_flower(-6, -110, 270)
    out_flower(110, -6, 360)
    # 可以再加点字
    # text_content2 = {'天': (-50, 30), '地': (50, 30), '仁': (50, -60), '和': (-50, -60)}  # 圆字坐标最后向下微调了一下
    # write_font(text_content2, '#F29407',30)

    # 隐藏画笔
    t.hideturtle()
    # 保持画布显示
    turtle.done()



Autor: Lang Tao 3000
Dirección original: Python dibuja pasteles de luna de mediados de otoño, usa la biblioteca de tortugas para dibujar pasteles de luna de mediados de otoño

5. MATLAB dibuja un pastel de luna 2.5D

        Opinión personal: este pastel de luna está dibujado por MATLAB, y el patrón de pastel de luna es exquisito y tridimensional. La perspectiva se puede modificar ligeramente.

function moonCake
% @author:slandarer
ax=gca;
hold(ax,'on');
axis equal
ax.XLim=[-15,15];
ax.YLim=[-15,15];
CSet=[0.92 0.51 0.11;1 0.7 0.09;0.87 0.41 0.05];


for i=[1:7,9,8]
    if i==1
        tt=linspace(0,-pi/16,100);
    elseif i==9
        tt=linspace(-pi+pi/16,-pi,100);
    else
        tt=linspace(-pi/16-(i-2)*pi/8,-pi/16-(i-1)*pi/8,100);
    end
    xSet=cos(tt).*(10+abs(cos(tt.*8)));
    xMin=find(xSet==min(xSet));tt(xMin)
    xMax=find(xSet==max(xSet));
    t1=min([xMin(1),xMax(1)]);
    t2=max([xMin(1),xMax(1)]);
    xSet=cos(tt(t1:t2)).*(10+abs(cos(tt(t1:t2).*8)));
    ySet=sin(tt(t1:t2)).*(10+abs(cos(tt(t1:t2).*8)))-3;
    fill([xSet(1),xSet,xSet(end)],[ySet(1)+3,ySet,ySet(end)+3],CSet(mod(i,2)+1,:),'EdgeColor','none')
    
    
end
t=linspace(0,2*pi,640);
fill(cos(t).*(10+abs(cos(t.*8))),sin(t).*(10+abs(cos(t.*8))),CSet(1,:),'EdgeColor','none')
plot(cos(t).*(9+abs(cos(t.*8))),sin(t).*(9+abs(cos(t.*8)))-0.3,'Color',CSet(3,:),'LineWidth',6)
plot(cos(t).*8.7,sin(t).*8.7-0.3,'Color',CSet(3,:),'LineWidth',4)
plot(cos(t).*(9+abs(cos(t.*8))),sin(t).*(9+abs(cos(t.*8))),'Color',CSet(2,:),'LineWidth',6)
plot(cos(t).*8.7,sin(t).*8.7,'Color',CSet(2,:),'LineWidth',4)

plot([0 0],[-7 7]-0.3,'Color',CSet(3,:),'LineWidth',4)
plot([-7 7],[0 0]-0.3,'Color',CSet(3,:),'LineWidth',4)
plot([0 0],[-7 7],'Color',CSet(2,:),'LineWidth',4)
plot([-7 7],[0 0],'Color',CSet(2,:),'LineWidth',4)


t4=linspace(0,pi/2,100);
xSet4=[cos(t4).*6+1,1,6,cos(t4(1:end-12)).*5+1,2,4.8,cos(t4(17:end-40)).*3.9+1];
ySet4=[sin(t4).*6+1,1,1,sin(t4(1:end-12)).*5+1,2,2,sin(t4(17:end-40)).*3.9+1];

plot(xSet4,ySet4-0.3,'Color',CSet(3,:),'LineWidth',4)
plot(-xSet4,ySet4-0.3,'Color',CSet(3,:),'LineWidth',4)
plot(xSet4,-ySet4-0.3,'Color',CSet(3,:),'LineWidth',4)
plot(-xSet4,-ySet4-0.3,'Color',CSet(3,:),'LineWidth',4)
plot(xSet4,ySet4,'Color',CSet(2,:),'LineWidth',4)
plot(-xSet4,ySet4,'Color',CSet(2,:),'LineWidth',4)
plot(xSet4,-ySet4,'Color',CSet(2,:),'LineWidth',4)
plot(-xSet4,-ySet4,'Color',CSet(2,:),'LineWidth',4)
end

Autor: slandarer
Dirección original: Se acerca el Festival del Medio Otoño, use MATLAB para dibujar juntos un pastel de luna en 2.5D_slandarer's blog - CSDN blog

6. Portafolio del programador del Festival del Medio Otoño de 2022

Versión en Python del guión de ajuste del pastel de luna del Festival del Medio Otoño

La gran pantalla visual del Festival del Medio Otoño

[usando python pyecharts como herramienta]

Autor: Pushkin. Autor: Hou Xiaojiu
Versión en Python del script para romper el pastel de luna del Festival del Medio Otoño - Blog de Pushkin - Blog de CSDN

Una visualización a gran escala del sabor del Festival del Medio Otoño [utilizando pyecharts de python como herramienta] - Blog de Hou Xiaojiu - Blog de CSDN

Pygame hace un juego de pastel de luna de recolección de conejos Python Festival del Medio Otoño Chang'e juego de alimentación
Qingyuan Xiaoruan simio tongxue

Es el Festival del Medio Otoño otra vez | Usando Python Pygame para hacer un juego de conejo y pastel de luna - Se busca programador

[Ensayo del Festival del Medio Otoño] Usar Python Festival del Medio Otoño Juego de alimentación Chang'e "Qianli Chanjuan" - Se busca programador

tarjeta de felicitación de mediados de otoño
Autor: Gu Muzi
[Serie del Festival del Medio Otoño] Tarjeta de felicitación del Festival del Medio Otoño de Python, ¡no es demasiado tarde para aprender! _Gu Muzi blog de acridina - blog CSDN

      

       ¿Cómo pasan los programadores el Festival del Medio Otoño? Hay muchas cosas que se pueden hacer, como editar juegos y pequeños programas con el tema del Festival del Medio Otoño, usar código para crear varios efectos especiales y escenas románticas para el Festival del Medio Otoño y analizar varios datos relacionados con el Festival del Medio Otoño. Tema de la fiesta. . . .

       De hecho, no hay mucha diferencia entre los programadores y la gente de otras industrias.Todos los ámbitos de la vida tienen sus propios altibajos y dificultades. Pero en el Festival del Medio Otoño, todo lo que podemos hacer es apreciar todo y pasar más tiempo con su familia.

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_69553582/article/details/126624379
Recomendado
Clasificación