你好呀,我是吴老师。
上一课我们点亮了板子上那颗小灯。它很小,但它能亮任何颜色。
今天我们要去看那块大的 —— 屏幕。
在你能在屏幕上画出小球、画出房子、画出游戏之前,有一件事得先弄明白:
这块屏幕,到底是由什么做成的?
答案可能和你以为的不一样。
读完之后,你应该能:说出屏幕是由多少个"小格子"拼成的;用坐标说出"我要画在这儿";用
screen.pixel点亮任意一个格子;用两层循环铺出一片点阵;解释为什么 x 最大是 239 而不是 240。用时:约 50 分钟。准备:板子、数据线。
看不懂的地方,整段复制给 AI,加一句"请一次只解释一个概念,讲完问我一个小问题"。
一、屏幕不是一整块布
先做个想象:你要在墙上贴一面马赛克。
如果你有一整块大画布,你会怎么画?随便涂。
但屏幕不是这样的。屏幕更像马赛克 —— 它是由一小格一小格拼起来的。
- 横着数,240 格
- 竖着数,320 格
- 一共 76,800 格
💡 76,800 是多少? 差不多是一本厚书里的字数。 而这块屏幕,每一格都能单独亮成不同的颜色。
最小的一格,叫一个"像素"。
它小到你几乎看不见 —— 你要凑很近很近才分得出来。 接下来你就会亲眼看到这件事。
二、坐标:怎么说出"画在这儿"
格子有 76,800 个,那你怎么告诉板子"我要画在哪一个"?
用两个数,我们叫它坐标。
规矩只有四条,记住就行:
| 规矩 | 说明 |
|---|---|
| 原点在左上角 | 左上角那一格叫 (0, 0) |
| 横着数叫 x | 往右走一格,x 加 1 |
| 竖着数叫 y | 往下走一格,y 加 1 |
写作 (x, y) | 先横后竖 —— 和读一列数一样,先数第几列 |
⚠️ 最容易搞错的地方:x 最大是 239,y 最大是 319。
不是 240 和 320 —— 因为从 0 开始数。 就像教室里有 5 个座位,编号是 0、1、2、3、4,最后一个叫 4 不叫 5。
写
screen.pixel(240, 100, 颜色)会怎么样?什么都不会发生 —— 那一格根本不存在。而且它不报错。
三、先画一个点
来。就画一个点。
请帮我做一个程序:
在屏幕上画一个白色的点,用方框把它圈起来,
再从方框连一条线到右边,右边画一个 60×60 的白色方块,
标注「就这一个点,放大 60 倍」。
请用中文注释。
画一个点,只用一行:
screen.pixel(X, Y, DOT)
三个参数:画在哪(x、y),什么颜色。
就这一行。这就是"在屏幕上画画"这件事的全部基础。
看看它跑起来的样子:

框里那个小小的白点,就是一个像素。右边那个大方块,是它放大 60 倍的样子。
💡 为什么非得画个"放大镜"? 因为一个像素太小了,你根本看不见。第一次跑起来的时候, 很多同学以为程序坏了 —— 屏幕一片黑,什么都没有。
不是坏了。是它太小了。
那两条被忽略的参数
回头看看代码里那两个数:
X, Y = 52, 150 # 那个点真实的位置
把这两个数改一改,点就跑到别的地方去了。
这就是坐标存在的全部意义:它是你"指出位置"的唯一办法。
四、再画一片
一个点看不见,那一千个点呢?
现在我们用两个循环,一点一点地把屏幕铺满:
for y in range(62, screen.HEIGHT, STEP): # 外面这层:第几行
for x in range(0, screen.WIDTH, STEP): # 里面这层:这一行里第几个
screen.pixel(x, y, 颜色)
两层循环,一层管"第几行",一层管"这一行里第几个"。
range(62, screen.HEIGHT, STEP) 这个写法,意思是:
"从 62 开始,每次加 STEP,一直加到快到头为止。"

💡 注意颜色的变化。 左上角是青的,越往右下越紫。 因为代码里算了一个
t—— 这个点离左上角有多"远"。screen.lerp(颜色A, 颜色B, t)就是在两个颜色之间取中间色。
同一个循环,还能画一条斜线
看图里那条黄色的斜线。它是另一种东西吗?
不是。它也是点摆出来的,只是每个点大了一点(用的是 fill_rect 画 8×8 的方块)。
for i in range(14):
screen.fill_rect(22 + i * 13, 236 + i * 5, 8, 8, LINE)
每走一步,x 往右 13,y 往下 5 —— 一直往右下走,就是一条斜线。
⭐ 记住这件事:屏幕上的一切,追到底都是点。 斜线、圆、字、照片……都是摆出来的。下一课我们就要学怎么"省事地"摆它们。
五、动手做
先回答一个预测题,再动手:
如果把点阵的间隔 STEP 从 12 改成 1,会发生什么?
想一想再往下看。
想好了吗?点开看看
它会变得非常慢。
间隔 12 的时候,大概有 500 多个点。 间隔 1 的时候,就是 76,800 个点 —— 一百多倍。
板子要一个一个把它们画上去,你会眼睁睁看着屏幕一行一行地"刷"过去。 它不会报错,只会很慢。
这就是编程里很常见的一种情况:你的想法是对的,但太多了。
只改一个条件
挑一个来改,先说出你的预测,再动手:
| 我改的条件 | 我预测会怎样 | 实际怎样 |
|---|---|---|
把 STEP = 12 改成 STEP = 6 | ||
把 STEP = 12 改成 STEP = 40 | ||
第一个程序里 X, Y = 52, 150 改成 (120, 160) | ||
把 screen.pixel(X, Y, DOT) 里的 DOT 改成 BOX(黄色) | ||
把点阵循环里的 screen.WIDTH 改成 120 | ||
把斜线那个 range(14) 改成 range(40) |
⚠️ 第五行和第六行要小心:改完可能会画到屏幕外面去。 画到外面不报错,也不显示 —— 就像那些像素压根不存在。
六、自检小测
七、还想玩点什么
| 方向 | 可以描述给 AI 的效果 | 值得继续想 |
|---|---|---|
| 我的名字 | 用点阵拼出自己名字的第一个字母 | 怎么用一张表把"这个字母长什么样"记下来? |
| 对角线 | 从左上角到右下角,画一条点连起来的线 | 要让它的两个数一起变大才行 —— 为什么? |
| 星空 | 随机位置、随机亮度的一片小点 | 怎么让每次跑出来的星星不一样? |
| 棋盘 | 两种颜色的小方块交错铺满 | 怎么让相邻的格子颜色不同? |
第二行那道题我留给你慢慢想 —— 要让一条线斜着走,两个数就得一起变。 这句话,下一课要接着用。
这一课的作品,就在上面那几张卡片里 —— 点「装到板子上」,用 USB 线或者蓝牙选你的板子,几秒就装好了。 装完板子会自己打开它,不用按任何按键,也不用去桌面上翻页找。
想看它是怎么写出来的,点卡片上的「查看源码」。