前几节课我们画的图形都是连续的——海龟走一步画一步,走到哪画到哪。但如果想画断开的图案怎么办?比如虚线、两朵分开的花?这节课我们学抬笔和落笔!
一、今天学什么?
学会两个新命令,让海龟「会飞」:
-
penup() — 抬起笔,移动时不画线(像飞机起飞✈️)-
pendown() — 放下笔,移动时开始画线(像飞机降落🛬)-
简单记:抬笔 = 不画,落笔 = 画
二、新命令速查
| 命令 | 作用 | 比喻 |
t.penup() | 抬起画笔 | 飞机起飞,不留下痕迹 |
t.pendown() | 放下画笔 | 飞机降落,开始留下痕迹 |
t.pu() | penup的简写 | 同上 |
t.pd() | pendown的简写 | 同上 |
三、抬笔画虚线
虚线 = 画一段 → 抬笔移动 → 落笔画一段 → 抬笔移动 → ……
import turtle
t = turtle.Turtle()
t.speed(3)
t.pensize(3)
# 画5段虚线
for i in range(5):
t.pendown() # 落笔,开始画
t.forward(30) # 画一段
t.penup() # 抬笔,不画
t.forward(20) # 跳过一段(不画)
turtle.done()效果:一条由5段组成的虚线!✂️
四、跳跃画两朵花 🌸🌸
用 penup() 跳到新位置,画第二朵花:
import turtle
t = turtle.Turtle()
t.speed(5)
# 定义画花的函数
def draw_flower(color):
t.fillcolor(color)
for i in range(6): # 6片花瓣
t.begin_fill() # 每瓣单独填色
t.circle(30) # 画圆当花瓣
t.end_fill()
t.left(60) # 转60度
# 第1朵花(左边)
t.penup()
t.goto(-150, 0)
t.pendown()
draw_flower("pink")
# 第2朵花(右边)
t.penup()
t.goto(150, 0)
t.pendown()
draw_flower("yellow")
turtle.done()两朵花分开画,互不干扰!🌷🌼
五、画满天星星 ✨
用 penup() + goto() 在随机位置画星星:
import turtle
import random
t = turtle.Turtle()
t.speed(0)
t.pensize(2)
turtle.bgcolor("navy") # 深蓝色背景
def draw_star(size):
t.begin_fill()
for i in range(5):
t.forward(size)
t.right(144)
t.end_fill()
colors = ["white", "yellow", "gold", "lightyellow"]
for i in range(30): # 画30颗星星
t.penup()
x = random.randint(-400, 400)
y = random.randint(-250, 250)
t.goto(x, y)
t.pendown()
t.fillcolor(random.choice(colors))
draw_star(random.randint(10, 30))
turtle.done()夜空中的星星!🌃✨
六、抬笔的常见用途
| 用途 | 示例 |
| 画虚线 | 画一段→抬笔→移动→落笔→再画 |
| 画多个分开的图形 | 画完一朵花→抬笔→跳到新位置→画第二朵 |
| 回到起点 | 抬笔→home()→落笔(不留痕迹回原点) |
| 写文字前定位 | 抬笔→goto(x,y)→write("文字") |
七、小挑战
试试这些挑战:
-
- 🟢 简单:画一条更长的虚线(10段以上)
-
- 🟡 中等:画三朵不同颜色的花,排成一排
-
- 🔴 困难:画一片草地(绿色半圆)+ 跳跃画多朵小花
-
八、下期预告
学会了抬笔跳位置,但每次都要手动算 x、y 坐标有点麻烦。下节课我们深入学习坐标系统——搞清楚海龟的"地图"!
下期:《turtle第5课:坐标与定位》
有问题欢迎留言!