个人主页:我是弓长
系列专栏:编程语言_Python
一个普通的学习者
目录
一、实验目的
- 掌握图形绘制函数库turtle的基本原理
- 能够熟练使用turtle库常用操作
二、turtle库常用操作
2.1画布设置
画布是turtle库的绘图区域。
使用setup()函数来设置画布的大小和位置。
定义方式:
setup(width. height. startx, starty)
setup()参数说明:
- width:画布宽度。值为整数则表示像素值;值为小数则表示画布宽度与屏幕宽度的比例。
- height:画布高度。值为整数则表示像素值;值为小数则表示画布高度与屏幕高度的比例。
- startx:画布左侧与屏幕左侧的像素距离。不传值则画布在屏幕中央。
- starty:画布右侧与屏幕右侧的像素距离。不传值则画布在屏幕中央。
例:创建一个宽度400,高度300,处于屏幕中央的画布
import turtle
turtle.setup(400, 300)
2.2画笔属性设置
画笔的属性包括画笔的颜色、宽度和速度等。
使用pencolor()函数设置画笔的颜色。
定义方式:
-
传入颜色字符串
pencolor(colorstring)
- 传入颜色对应的RGB值。需要先把RGB值范围改为[0,255]
getscreen().colormode(255) pencolor((r, g, b)) # 参数是元组形式
例:将画笔设置为蓝色
import turtle
turtle.pencolor("blue") # 方式1
turtle.getscreen().colormode(255) # 方式2
turtle.pencolor((0, 0, 255))
使用pensize()函数设置画笔的宽度。
定义方式:width表示画笔的宽度。不传值则返回当前画笔的宽度。
pensize(width)
使用speed()函数设置画笔的速度。
定义方式:speed是画笔的速度。数字越大表示速度越快。
speed(speed)
2.3画笔移动函数
函数 | 说明 |
---|---|
penup() | 抬起画笔,移动时不绘制 |
pendown() | 放下画笔,移动时绘制 |
forward(distance) | 向当前画笔方向移动distance像素长度 |
backward(distance) | 向当前画笔相反方向移动distance像素长度 |
left(degree) | 逆时针移动degree度 |
right(degree) | 顺时针移动degree度 |
goto(x,y) | 将画笔移动到坐标(x,y)处 |
setheading(to_angle) | 设置当前朝向为angle度 |
circle(radius.extent) | 绘制半径为radius像素,角度为extent度的弧形。radius为正数时圆心在画笔的左侧;radius为负数时圆心在画笔的右侧。不传入参数extent时画整个圆 |
例:绘制一个在y轴左侧的半径为50像素的半圆
import turtle
turtle.setup(600, 400) # 设置宽600,长400的画布,位于屏幕中央
turtle.penup() # 抬起画笔
turtle.goto(0, 50) # 将画笔移动到(0,50)处
turtle.setheading(180) # 将画笔方向调到正西
turtle.pendown() # 放下画笔
turtle.circle(50, 180) # 绘制半径为50像素,角度为180度的弧形
2.4画笔控制函数
函数 | 说明 |
---|---|
fillcolor(colorstring) | 填充图形,可传入颜色字符串,也可传入参数(r,g,b) |
color(color1,color2) | 设置pencolor = color1,fillcolor = color2 |
begin_fill() | 准备开始填充图形 |
end_fill() | 填充完成 |
showturtle() | 显示画笔的turtle形状 |
hideturtle() | 隐藏画笔的turtle形状 |
exitonclick() | 绘制完成后不关闭画布 |
例:绘制一个圆形,将其填充为蓝色,绘制完成后不关闭画布
import turtle
turtle.setup(600, 400) # 设置宽600,长400的画布,位于屏幕中央
turtle.begin_fill() # 准备开始填充
turtle.color("blue", "blue") # 画笔颜色和填充颜色都为蓝色
turtle.circle(50) # 绘制半径为50像素的圆形
turtle.end_fill() # 填充完成
turtle.hideturtle() # 隐藏画笔形状
turtle.exitonclick() # 绘制完成后不关闭画布
三、实验步骤
3.1同心圆实验步骤
- 导入turtle库
- 绘制外圆,移动画笔,用color1填充
- 拿起画笔,调整画笔位置,放下画笔
- 绘制内圆,移动画笔,用color2填充
3.2操场实验步骤
- 导入turtle库
- 绘制外圈,移动画笔。用color1填充
- 拿起画笔,调整画笔位置,放下画笔
- 绘制内圈,移动画笔,用color2填充
3.3笑脸实验步骤
- 导入turtle库
- 绘制圆形,移动画笔,用color1填充
- 拿起画笔,调整画笔位置,放下画笔
- 绘制其他弧形,移动画笔
三、代码实现
2.1同心圆代码实现
具体代码:
# 导入tutle库
import turtle as t
t.setup(1000, 800) # 设置宽1000,长800的画布,位于屏幕中央
t.pensize(2) # 设置画笔宽度为2
# 外圆
t.color("gold", "gold") # 画笔颜色和填充颜色都为金色
t.begin_fill() # 准备开始填充图形
t.circle(160, 360) # 绘制半径为160像素,角度为360度的弧形
t.end_fill() # 填充完成
# 调整画笔
t.penup() # 抬起画笔
t.goto(0, 60) # 将画笔移动到(0,60)处
t.pendown() # 放下画笔
# 内圆
t.color("red", "red")
t.begin_fill()
t.circle(100, 360)
t.end_fill()
t.hideturtle() # 隐藏画笔形状
t.exitonclick() # 绘制完成后不关闭画布
运行结果:
2.2操场代码实现
具体代码:
import turtle as t
t.setup(1000, 800) # 设置宽1000,长800的画布,位于屏幕中央
t.pensize(2) # 设置画笔宽度为2
t.speed(1.5) # 设置画笔速度为1.5
# 外圈
t.color("red", "red") # 画笔颜色和填充颜色都为红色
t.begin_fill() # 准备开始填充图形
t.goto(300, 0) # 将画笔移动到(300,0)处
t.circle(100, 180) # 绘制半径为100像素,角度为180度的弧形
t.goto(0, 200)
t.circle(100, 180)
t.end_fill() # 填充完成
# 调整画笔
t.penup() # 抬起画笔
t.goto(0, 50)
t.pendown() # 放下画笔
# 内圈
t.color("green", "green")
t.begin_fill()
t.goto(300, 50)
t.left(90) # 画笔方向逆时针移动90度
t.goto(300, 150)
t.left(90)
t.goto(0, 150)
t.left(90)
t.goto(0, 50)
t.end_fill()
t.hideturtle() # 隐藏画笔形状
t.exitonclick() # 绘制完成后不关闭画布
运行结果:
2.3笑脸代码实现
具体代码:
import turtle as t
t.setup(1000, 800) # 设置宽1000,长800的画布,位于屏幕中央
t.pensize(2) # 设置画笔宽度为2
# 圆形
t.color("gold", "gold") # 画笔颜色和填充颜色都为金色
t.begin_fill() # 准备开始填充图形
t.circle(160, 360) # 绘制半径为160像素,角度为360度的弧形
t.end_fill() # 填充完成
# 调整画笔
t.penup() # 抬起画笔
t.goto(-30, 200) # 将画笔移动到(-30,200)处
t.left(90) # 画笔方向逆时针移动90度
t.pendown() # 放下画笔
t.pencolor("black") # 设置画笔颜色为黑色
t.circle(25,180)
t.penup()
t.goto(30, 200)
t.right(180) # 画笔方向顺时针移动180度
t.pendown()
t.pencolor("black")
t.circle(-25,180)
t.penup()
t.goto(-25, 100)
t.pendown()
t.pencolor("black")
t.circle(25,180)
t.hideturtle() # 隐藏画笔形状
t.exitonclick() # 绘制完成后不关闭画布
运行结果: