小码农

趣味编程-面向每个人的创意编程

Python Turtle绘图:中秋月饼

avatar 2023-03-03 15:34 1293次浏览 0 条评论 Python
# 案例1:月饼(基础代码)
# 深黄#af5125  中黄#fbbe11  浅黄#ffed91  背景色#fdf291
import turtle
turtle.bgcolor("#fdf291")      # 设置背景颜色
turtle.speed(0)                # 参数为1时,速度减慢,可观察绘图细节。参数为0时,速度最快。
### ① 画第1层底纹 深黄色
turtle.pencolor("#af5125")     # 设置画笔颜色,即设置底纹的颜色
turtle.dot(245)                # 画直径为245像素的大圆点
l=110
for i in range(16):
    turtle.penup()
    turtle.forward(l)          # 海龟抬笔前进l像素后再画小圆点
    turtle.pendown()
    turtle.dot(50)             # 画直径为50像素的小圆点
    turtle.penup()
    turtle.backward(l)         # 画完小圆点后,海龟再抬笔后退l像素,回到初始位置
    turtle.pendown()
    turtle.right(360/16)       # 海龟旋转一定角度后,再进入循环,开始画下一个小圆点
### ② 画第2层底纹 中黄色
turtle.pencolor("#fbbe11")     # 设置画笔颜色,即设置底纹的颜色
turtle.dot(230)                # 画直径为230像素的大圆点
l=105
for i in range(16):
    turtle.penup()
    turtle.forward(l)
    turtle.pendown()
    turtle.dot(45)             # 画直径为45像素的小圆点
    turtle.penup()
    turtle.backward(l)
    turtle.pendown()
    turtle.right(360/16)
### ③ 画第3层底纹 浅黄色
turtle.pencolor("#ffed91")     # 设置画笔颜色,即设置底纹的颜色
turtle.dot(205)                # 画直径为205像素的大圆点
l=92
for i in range(16):
    turtle.penup()
    turtle.forward(l)
    turtle.pendown()
    turtle.dot(40)             # 画直径为40像素的小圆点
    turtle.penup()
    turtle.backward(l)
    turtle.pendown()
    turtle.right(360/16)
### ④ 画第4层底纹 中黄色
turtle.pencolor("#fbbe11")   # 设置画笔颜色,即设置底纹的颜色
turtle.dot(190)              # 画直径为190像素的大圆点
l=85
for i in range(16):
    turtle.penup()
    turtle.forward(l)
    turtle.pendown()
    turtle.dot(38)           # 画直径为38像素的小圆点
    turtle.penup()
    turtle.backward(l)
    turtle.pendown()
    turtle.right(360/16)

turtle.delay(0)                    # 用更快的速度画螺旋线
### ⑤ 画棒棒糖螺旋线
def 棒棒糖螺旋线():                  # 自定义函数 棒棒糖螺旋线()
    turtle.pencolor("#e19420")     # 设置螺旋线的颜色
    turtle.pensize(4)              # 设置螺旋线的粗细
    for i in range(32):
        turtle.circle(1 * i, 10)   # 根据半径1 * i,绘制角度为10的圆弧
        turtle.left(10)            # 向左旋转10度后,再进入循环画圆弧

for j in range(16):                # 画16个棒棒糖螺旋线
    turtle.left(360/16*j)          # 当j为0时,即海龟画第1个螺旋线,海龟向右旋转360/16*0度
    turtle.penup()                 # 接上:当j为1时,即海龟画第2个螺旋线,海龟向右旋转360/16*1度
    turtle.forward(78)             # 海龟移动78像素后再开始画螺旋线
    turtle.pendown()
    棒棒糖螺旋线()                   # 调用自定义函数 棒棒糖螺旋线()
    turtle.penup()
    turtle.home()                  # 画完螺旋线后直接让海龟回家,即坐标原点,方向向右
    turtle.pendown()

turtle.speed(5)                  # 将速度减慢画后面的图形
turtle.delay(1)
### ⑥ 画正六边形
turtle.delay(20)
turtle.pensize(6)
turtle.penup()
turtle.seth(-90)                  # 让海龟头部朝下
turtle.forward(50)
turtle.seth(0)                    # 让海龟头部朝右
turtle.pendown()
turtle.circle(50,360,6)           # 画半径为50的正六边形
### ⑦ 写文字“中秋月饼”
turtle.pencolor("#af5125")
turtle.penup()
turtle.home()
turtle.pendown()
# 书写文字“中秋”,居中显示,字体为微软雅黑,字号为20,文字加粗
turtle.write("中秋", align="center", font=("微软雅黑", 20,"bold"))

turtle.penup()
turtle.goto(0, -30)
turtle.pendown()
# 书写文字“月饼”,居中显示,字体为微软雅黑,字号为20,文字加粗
turtle.write("月饼", align="center", font=("微软雅黑", 20,"bold"))
turtle.hideturtle()     # 隐藏海龟的变身黑色小箭头

 

# 案例2:月饼(优化后代码)
# 深黄#af5125  中黄#fbbe11  浅黄#ffed91  背景色#fdf291
import turtle
turtle.bgcolor("#fdf291")      # 设置背景颜色
turtle.speed(0)                # 参数为1时,速度减慢,可观察绘图细节。参数为0时,速度最快。
turtle.delay(0)                # 加上这条指令,可让速度更快

def 底纹(color,d1,l,d2):        # 自定义有参函数 底纹(),需要用户传递4个参数
    turtle.pencolor(color)     # 设置画笔的颜色为color,即底纹的颜色
    turtle.dot(d1)             # 画直径为d1像素的大圆点
    for i in range(16):
        turtle.penup()
        turtle.forward(l)      # 海龟抬笔前进l像素后再画小圆点
        turtle.pendown()
        turtle.dot(d2)         # 画直径为d2像素的小圆点
        turtle.penup()
        turtle.backward(l)     # 画完小圆点后,海龟再抬笔后退l像素,回到初始位置
        turtle.pendown()
        turtle.right(360/16)   # 海龟旋转一定角度后,再进入循环,开始画下一个小圆点

def 棒棒糖螺旋线():                  # 自定义函数 棒棒糖螺旋线()
    turtle.pencolor("#e19420")     # 设置螺旋线的颜色
    turtle.pensize(4)              # 设置螺旋线的粗细
    for i in range(32):
        turtle.circle(1 * i, 10)   # 根据半径1 * i,绘制角度为10的圆弧
        turtle.left(10)            # 向左旋转10度后,再进入循环画圆弧
### ① 画底纹
底纹("#af5125",245,110,50)  # 画第1层底纹  深黄色
底纹("#fbbe11",230,105,45)  # 画第2层底纹  中黄色
底纹("#ffed91",205,92,40)   # 画第3层底纹  浅黄色
底纹("#fbbe11",190,85,38)   # 画第4层底纹  中黄色
### ② 画棒棒糖螺旋线
for j in range(16):        # 画16个棒棒糖螺旋线
    turtle.left(360/16*j)  # 当j为0时,即海龟画第1个螺旋线,海龟向右旋转360/16*0度
    turtle.penup()         # 接上:当j为1时,即海龟画第2个螺旋线,海龟向右旋转360/16*1度
    turtle.forward(78)     # 海龟向前移动78像素后,再开始画螺旋线
    turtle.pendown()
    棒棒糖螺旋线()           # 调用自定义函数 棒棒糖螺旋线()
    turtle.penup()
    turtle.home()          # 画完螺旋线后直接让海龟回家,即回到坐标原点(0,0),且方向向右
    turtle.pendown()
### ③ 画正六边形
turtle.pensize(6)
turtle.penup()
turtle.seth(-90)                  # 让海龟头部朝下
turtle.forward(50)
turtle.seth(0)                    # 让海龟头部朝右
turtle.pendown()
turtle.circle(50,360,6)           # 画半径为50的正六边形
### ④ 写文字“中秋月饼”
turtle.pencolor("#af5125")
turtle.penup()
turtle.home()
turtle.pendown()
# 书写文字“中秋”,居中显示,字体为微软雅黑,字号为20,文字加粗
turtle.write("中秋", align="center", font=("微软雅黑", 20,"bold"))

turtle.penup()
turtle.goto(0, -30)
turtle.pendown()
# 书写文字“月饼”,居中显示,字体为微软雅黑,字号为20,文字加粗
turtle.write("月饼", align="center", font=("微软雅黑", 20,"bold"))

turtle.hideturtle()                 # 海龟画图结束,隐藏表示海龟的箭头

 

发表评论