【编程课堂】海龟作图

简介: turtle 是 python 内置的一个比较有趣味的模块,俗称 海龟作图,它是基于 tkinter 模块打造,提供一些简单的绘图工具,海龟作图最初源自 20 世纪 60 年代的 Logo 编程语言,之后一些很酷的 Python 程序员构建了 turtle 库,让其他程序员只需要 import turtle,就可以在 Python 中使用海龟作图。

0、前言


turtle  是 python 内置的一个比较有趣味的模块,俗称 海龟作图,它是基于 tkinter 模块打造,提供一些简单的绘图工具,海龟作图最初源自 20 世纪 60 年代的 Logo 编程语言,之后一些很酷的 Python 程序员构建了 turtle 库,让其他程序员只需要 import turtle,就可以在 Python 中使用海龟作图。


1、基本功能介绍


在海龟作图中,我们可以编写指令让一个虚拟的(想象中的)海龟在屏幕上来回移动。这个海龟带着一只钢笔,我们可以让海龟无论移动到哪都使用这只钢笔来绘制线条。通过编写代码,以各种很酷的模式移动海龟,我们可以绘制出令人惊奇的图片。使用海龟作图,我们不仅能够只用几行代码就创建出令人印象深刻的视觉效果,而且还可以跟随海龟看看每行代码如何影响到它的移动。这能够帮助我们理解代码的逻辑。所以海龟作图也常被用作新手学习 Python 的一种方式。


1.1 Turtle motion (运动控制)


本节中包含了运动控制中常用的一些函数

turtle.goto(x,y)

画笔定位到坐标(x,y)

turtle.forward(distance)

向正方向运动 distance 长的距离

turtle.backward(distance)

向负方向运动 distance 长的距离

turtle.right(angle)

向右偏 angle 度

turtle.left(angle)

向左偏 angle 度

turtle.home()

回到原点

turtle.circle(radius, extent=None, steps=None)

画圆形 radius 为半径,extent 为圆的角度

turtle.speed(speed)


以 speed 速度运动


看到这么多函数肯定已经头大了,我们以例题来讲解。


首先画一个边长为100的正方形,然后再以半径为50画出其3/4圆。


# 控制画笔的速度
turtle.speed(5)
# 将画笔定位到原点
turtle.goto(0,0)
# 从原点开始,画出一个边长为100的正方形
for i in range(4):
    # 正向运动 100 的距离
    turtle.forward(100)
    # 向右偏 90 度
    turtle.right(90)
# 将画笔定位到原点
turtle.home()
# 画出一个半径为100,占3/4的圆
turtle.circle(50,270)


最后得到以下结果:



1.2 Pen control (画笔控制)


本节包含了对画笔的控制函数,常用的如下:


turtle.pendown()

落笔,在此状态下会画出运动的轨迹

turtle.penup()

起笔,在此状态下不会画出运动的轨迹

turtle.pensize(width=None

画笔粗细

turtle.pencolor(*args

画笔颜色

turtle.fillcolor(*args)

填充颜色

turtle.begin_fill()

开始填充

turtle.end_fill()

结束填充

turtle.write(arg, move=False, align=”left”, font=(“Arial”, 8, “normal”))

写文字


同样,我们以一个例题来讲解。


画一个正方形并填充,最后写一些文字


# 控制画笔颜色
turtle.pencolor('red')
# 落笔
turtle.pendown()
# 设置填充颜色
turtle.fillcolor('blue')
# 开始填充
turtle.begin_fill()
# 从原点开始,画出一个边长为100的正方形
for i in range(4):
    # 正向运动 100 的距离
    turtle.forward(200)
    # 向右偏 90 度
    turtle.right(90)
    # 结束填充turtle.end_fill()
turtle.penup()
turtle.goto(100,-100)
turtle.write('Crossin编程教室')


最后的结果是这样


同时,我们还可以设置画笔打粗细、画笔的速度等属性。


1.2 Window control (视窗控制)


这里有两个常用的函数


turtle.bgcolor(*args)

设置背景颜色

turtle.bgpic(picname=None)

背景图片填充


设置代码如下


turtle.bgcolor('red')
turtle.bgpic(r'yourpic.png')


2、海龟作图实例


我们用几个简单的例子讲解海龟作图的用法。


2.1 用正方形画圆


import turtle
for i in range(360):
    turtle.setheading(i)
    for i in range(4):
        turtle.forward(100)
        turtle.left(90)


360 个正方形每隔 1 度排列,短短几行代码可以生成一个漂亮规则的图形。



2.2 红色的五角星


使用填充功能画出一个大红星


import turtle
turtle.color('red','red')
turtle.begin_fill()
for i in range(5):
    turtle.forward(100)
    turtle.right(144)
turtle.end_fill()


结果如图:



2.3 更多案例


讲的再多也不如自己动手做一做,我们在网上挑选了几张使用 turtle 做的有意思的图片,大家可以欣赏并试着做一下。



3、后记

更丰富详细的功能及知识可以参考:

官方文档https://docs.python.org/3/library/turtle.html

海龟作图—用 Python 绘图http://www.epubit.com.cn/book/onlinechapter/37788

Simple drawing with turtlehttps://opentechschool.github.io/python-beginners/en/simple_drawing.html

Hello, little turtles!http://openbookproject.net/thinkcs/python/english3e/hello_little_turtles.html
Turtle exampleshttps://michael0x2a.com/blog/turtle-examples

Easy Designs - Turtle Graphics Pythonhttp://www.instructables.com/id/Easy-Designs-Turtle-Graphics-Python/


近期文章推荐阅读:

喏,你们要的 PyCharm 快速上手指南

给伸手党的福利:Python 新手引导

只学2个月编程能写出什么代码?他们表示:You can you code!

如何用100行Python代码做出魔性声控游戏“八分音符酱”

数据分析:当赵雷唱民谣时他唱些什么?

一行代码扫出“敬业福”

我扒了杜蕾斯的微博

Python 爬虫爬取美剧网站

今天,你抢到票了吗?

爆款游戏《贪吃蛇大作战》的 Python 实现

相关文章
|
7月前
|
编解码 移动开发
MATLAB | SCI 绘图配色第八期 | 散点图 2x1 | 大鱼海棠
MATLAB | SCI 绘图配色第八期 | 散点图 2x1 | 大鱼海棠
107 0
|
7月前
|
编解码
MATLAB | SCI 绘图配色第五期 | 二维横轴柱状图 | 镇魂街
MATLAB | SCI 绘图配色第五期 | 二维横轴柱状图 | 镇魂街
72 0
|
7月前
|
编解码
MATLAB | SCI绘图配色第三期 | 二维柱状图 | 一人之下
MATLAB | SCI绘图配色第三期 | 二维柱状图 | 一人之下
131 0
|
7月前
|
编解码
MATLAB | SCI 绘图配色第 2 期 | 三维柱状图 | 画江湖之不良人
MATLAB | SCI 绘图配色第 2 期 | 三维柱状图 | 画江湖之不良人
129 0
|
7月前
|
数据可视化 搜索推荐 大数据
科研绘图与学术图表绘制:从入门到精通
科研绘图与学术图表绘制:从入门到精通
160 0
|
定位技术 C++
C++实现俄罗斯方块(附代码)
C++实现俄罗斯方块(附代码)
C++实现俄罗斯方块(附代码)
天池海龟编辑器绘图
天池海龟编辑器绘图
154 0
|
定位技术 Python
综合练习之海龟作图
综合练习之海龟作图
107 0
|
移动开发
OpenMV学习笔记(4) 画图
视觉系统通常需要给使用者提供一些反馈信息,直接在图像中显示出来,很直观。在这里。我们需要把ROI区域用图形框标注出来
210 0
|
Python
海龟绘图简单科普
著名人物爱因斯坦曾说过,兴趣是最好的老师,句话在编程方面也同样适用。大部分人如果没有所谓的情节、入门、回报的话。相对于python,很多人对这一方面都是不感冒的,更不要谈一开始就要去背某些命令、函数之类的。
134 0