海龟绘图基础篇——部分函数及其作用

· · 科技·工程

引入

请读者们想象一下屏幕上有一只小海龟,它初始位置位于坐标系的 (0,0) 点,我们先进行 import turtle,再进行 t.forward(100),它将会向右移动 100 像素,随着它的移动画出一条直线,再进行 t.right(90),它会向右转 90 度。

这便是大名鼎鼎的海龟绘图,它本是作为一种教学工具供教师使用的,不过对于需要生成一些图形的程序员无疑是一个更复杂的方式。

在这一期教程中我们就先对海龟绘图进行初步认识,包括但不限于一些函数。

浓缩教程

导入海龟库

首先我们需要导入 turtle 模块的所有对象。

from turtle import *

值得注意的是它导入的对象集相当大,如果你还在做海龟绘图以外的事情就有发生名称冲突的风险,因此可以用以下方法解决:

import turtle as t

假设函数名为 name,这样导入将导致调用函数需要写成 turtle.name(),因此可以用 as 给它取一个小名。你也可以使用面向对象的海龟画图,因为在这种方式下,各种海龟命令都是对象(主要是 Turtle 对象)的方法,于是就可以写成:

import turtle import Turtle
t = Turtle()

画一个简单的图形

一共有两种操作:让海龟从原点出发正向 100 个单位长度,左转 120 度。前者进行三次,后者进行两次。这里仅展示主要部分代码。

t.forward(100)
t.left(120)
t.forward(100)
t.left(120)
t.forward(100)

那么问题来了,你会画正方形了吗?

Turtle 方法

Turtle 方法 对应的作用
forward() 前进
backward() 后退
right() 右转
left() 左转
goto() 前往/定位
setx() 设置 x 坐标
sety() 设置 y 坐标
setheading() 设置朝向
home() 返回原点
circle() 画圆
dot() 画点
stamp() 印章
clearstamp() 清除印章
clearstamps() 清除多个印章
clearscreen() 清空窗口
undo() 撤消
speed() 速度
pos() 位置
towards() 目标方向
xcor() x 坐标
ycor() y 坐标
heading() 朝向
distance() 距离
pendown() 画笔落下
penup() 画笔抬起
width() 画笔粗细
pen() 画笔
isdown() 画笔是否落下
color() 颜色
pencolor() 画笔颜色
fillcolor() 填充颜色
filling() 是否填充
begin_fill() 开始填充
end_fill() 结束填充
bgcolor() 背景颜色
bgpic() 背景图片
screensize() 屏幕大小
window_height() 窗口高度
window_width() 窗口宽度
done() 主循环
colormode() 颜色模式
textinput() 文本输入
numinput() 数字输入

以上是作者在本文档中搜寻过后确认自己曾经见过的一些常规操作。

例题

题目:画一个蓝色房顶,紫色房身。

要用到的操作无非就是画一个三角形代表房顶,画一个矩形(正方形)代表房身,再分别填充蓝色、紫色,这是简短的代码。

如果需要加入窗户,可以用两个正方形表示,房子旁边可以用一个矩形和一个等边三角形画棵树,我们要考虑抬笔、落笔和移动等细节,然后就是三种最常见操作 t.forward(n)t.left(n) 以及 t.right(n),如果要画太阳,直接用 t.circle(r) 即可,r 代表半径。

下一期讲解复杂的海龟画图,画出一棵彩色、不断分支的大树,敬请期待!

参考资料