python 中使用turtle库 —— 绘制随机圆球
【摘要】 预期功能下面主要功能是使用 Python 的 turtle 库在屏幕上随机生成 100 个大小不一的黑点。每个点实际上是一个圆形,其半径(大小)是随机选择的,范围在 1 到 10 之间。同时,这些点的位置也是随机选择的,它们在屏幕上的一个特定区域(x 轴在 -200 到 200 之间,y 轴在 -150 到 150 之间)内随机分布。 函数介绍在这段代码中,有几个关键的 turtle 库函...
预期功能
下面主要功能是使用 Python 的 turtle 库在屏幕上随机生成 100 个大小不一的黑点。每个点实际上是一个圆形,其半径(大小)是随机选择的,范围在 1 到 10 之间。同时,这些点的位置也是随机选择的,它们在屏幕上的一个特定区域(x 轴在 -200 到 200 之间,y 轴在 -150 到 150 之间)内随机分布。
函数介绍
在这段代码中,有几个关键的 turtle
库函数被使用,它们各自在绘图过程中扮演着重要的角色。下面我将逐一解释这些函数及其作用:
-
turtle.Turtle()
- 作用:创建一个新的 Turtle 对象。Turtle 对象是一个“海龟”,它可以在屏幕上移动并绘制图形。
- 使用:
t = turtle.Turtle()
创建一个名为t
的 Turtle 对象。
-
t.speed(0)
- 作用:设置 Turtle 的绘制速度。
0
表示最快速度,没有动画效果,直接绘制完成。 - 使用:
t.speed(0)
将 Turtle 的速度设置为最快。
- 作用:设置 Turtle 的绘制速度。
-
t.penup()
- 作用:抬起 Turtle 的画笔,这样当 Turtle 移动时,它不会在屏幕上留下任何痕迹。
- 使用:
t.penup()
使得 Turtle 在移动到下一个绘制点时不绘制线条。
-
t.pendown()
- 作用:放下 Turtle 的画笔,这样当 Turtle 移动或绘制时,它会在屏幕上留下痕迹。
- 使用:
t.pendown()
使得 Turtle 在绘制圆形时能够留下痕迹。
-
t.goto(x, y)
- 作用:将 Turtle 移动到指定的 (x, y) 坐标位置。
- 使用:
t.goto(x, y)
将 Turtle 移动到屏幕上随机选择的点。
-
t.circle(size)
- 作用:以 Turtle 当前位置为圆心,绘制一个半径为
size
的圆形。 - 使用:
t.circle(size)
绘制一个代表“点”的圆形,其中size
是随机生成的半径。
- 作用:以 Turtle 当前位置为圆心,绘制一个半径为
-
t.begin_fill()
和t.end_fill()
- 作用:这两个函数用于开始和结束一个填充区域。在它们之间的图形会被填充颜色。
- 使用:虽然在这段代码中使用了
begin_fill()
和end_fill()
,但由于没有指定填充颜色(默认为空字符串),实际上圆形不会被填充颜色。这两个函数在这里是多余的,因为点通常不需要填充颜色。
-
turtle.done()
- 作用:在绘图完成后调用,它会保持绘图窗口打开,直到用户关闭它。
- 使用:
turtle.done()
确保绘图窗口在程序结束后仍然可见,直到用户手动关闭它。
通过这些函数,我们可以控制 Turtle 的行为,如移动、绘制、填充等,从而创建出各种复杂的图形和动画。
代码实战
import turtle
import random
# 创建一个新的turtle对象
t = turtle.Turtle()
# 设置画笔速度为最快
t.speed(0)
# 设置画笔抬起,这样移动时不会留下痕迹
t.penup()
for i in range(100):
x=random.randint(-200, 200)
y=random.randint(-150, 150)
d=random.randint(1,150)
t.goto(x,y)
# 随机选择一个点的大小(半径)
size = random.randint(1, 10) # 点的半径在1到10之间
# 放下画笔开始绘制
t.pendown()
# 绘制一个圆形作为点
t.begin_fill() # 开始填充颜色
t.circle(size) # 绘制一个半径为size的圆
t.end_fill() # 结束填充颜色
# 抬起画笔以便移动到下一个位置
t.penup()
# 保持窗口打开,直到用户关闭它
turtle.done()
注释掉penup的效果
下面将代码中每个循环后的penup注释掉,看看它的效果。代码修改如下
运行效果如图
可以看到,如果每次笔没有抬起,那么所有点将会连起来,这点跟我们写字的时候没有抬起笔很像
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)