海龟绘图基础篇——部分函数及其作用
_Star_Universe_ · · 科技·工程
引入
请读者们想象一下屏幕上有一只小海龟,它初始位置位于坐标系的 import turtle
,再进行 t.forward(100)
,它将会向右移动 t.right(90)
,它会向右转
这便是大名鼎鼎的海龟绘图,它本是作为一种教学工具供教师使用的,不过对于需要生成一些图形的程序员无疑是一个更复杂的方式。
在这一期教程中我们就先对海龟绘图进行初步认识,包括但不限于一些函数。
浓缩教程
导入海龟库
首先我们需要导入 turtle
模块的所有对象。
from turtle import *
值得注意的是它导入的对象集相当大,如果你还在做海龟绘图以外的事情就有发生名称冲突的风险,因此可以用以下方法解决:
import turtle as t
假设函数名为 name
,这样导入将导致调用函数需要写成 turtle.name()
,因此可以用 as
给它取一个小名。你也可以使用面向对象的海龟画图,因为在这种方式下,各种海龟命令都是对象(主要是 Turtle
对象)的方法,于是就可以写成:
import turtle import Turtle
t = Turtle()
画一个简单的图形
一共有两种操作:让海龟从原点出发正向
t.forward(100)
t.left(120)
t.forward(100)
t.left(120)
t.forward(100)
那么问题来了,你会画正方形了吗?
Turtle 方法
Turtle 方法 | 对应的作用 |
---|---|
forward() |
前进 |
backward() |
后退 |
right() |
右转 |
left() |
左转 |
goto() |
前往/定位 |
setx() |
设置 |
sety() |
设置 |
setheading() |
设置朝向 |
home() |
返回原点 |
circle() |
画圆 |
dot() |
画点 |
stamp() |
印章 |
clearstamp() |
清除印章 |
clearstamps() |
清除多个印章 |
clearscreen() |
清空窗口 |
undo() |
撤消 |
speed() |
速度 |
pos() |
位置 |
towards() |
目标方向 |
xcor() |
|
ycor() |
|
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)
即可,
下一期讲解复杂的海龟画图,画出一棵彩色、不断分支的大树,敬请期待!
参考资料
- turtle --- 海龟绘图
- Turtle 海龟库:利用海龟画笔绘制彩色的房子