当前位置 : 主页 > 编程语言 > java >

【案例】用 turtle 绘制一个月饼

来源:互联网 收集:自由互联 发布时间:2022-09-29
文章目录 ​​环境准备​​ ​​turtle 库​​ ​​源代码​​ ​​封装一个自己的函数​​ ​​月饼主体​​ ​​写一段文字​​ ​​最终效果​​ 2022.9.10 既是中秋节又是教师节,


文章目录

  • ​​环境准备​​
  • ​​turtle 库​​
  • ​​源代码​​
  • ​​封装一个自己的函数​​
  • ​​月饼主体​​
  • ​​写一段文字​​
  • ​​最终效果​​

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

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

环境准备

macbook 运行环境准备

mac 默认 Python 版本为 3.8.x,在运行 turtle 时,会出现黑屏闪烁的情况。为了正常运行 turtle,我们需要安装更新的 Python 版本,这里以 Python 3.10.6-macos 11.pkg(提取码: yimf)为例。

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

【案例】用 turtle 绘制一个月饼_macos

一直点击继续即可。

【案例】用 turtle 绘制一个月饼_月饼_02

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

【案例】用 turtle 绘制一个月饼_python_03

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

【案例】用 turtle 绘制一个月饼_月饼_04

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

【案例】用 turtle 绘制一个月饼_月饼_05

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)

​​让可爱的海龟动起来!Turtle库做出的简单动画,使Python无所不能​​ 里面详细说了坐标系的问题。

源代码

封装一个自己的函数

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

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

月饼主体

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

  • 最外侧花边
  • 【案例】用 turtle 绘制一个月饼_turtle_06

  • 内侧花边
  • 【案例】用 turtle 绘制一个月饼_turtle_07

  • 圆形
  • 【案例】用 turtle 绘制一个月饼_中秋节_08

  • 矩形
  • 【案例】用 turtle 绘制一个月饼_月饼_09

  • 中心花瓣
  • 【案例】用 turtle 绘制一个月饼_月饼_10

  • 文字
  • 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 Jia ming", 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()

    最终效果

    【案例】用 turtle 绘制一个月饼_月饼_11

    turtle 绘制月饼


    上一篇:最详解消息队列以及RabbbitMQ之HelloWorld
    下一篇:没有了
    网友评论