Baba英语
编程学习路线图

CS50 · 用 Scratch 学编程 · 九集课件

看视频不够,还要有讲义

哈佛 CS50 专门给零基础做的九集 Scratch 课。每集配一份中文课件:本集学什么、核心概念、要认识哪些积木、跟着视频做哪些例子、一个动手练、一句话带走。视频自托管、页内直接看。

课程与例子来自 Harvard CS50,依 CC BY-NC-SA 4.0 授权自托管改写 · 本页免费
1角色与舞台Sprites23:43
计算思维坐标系对象与属性

字幕:英文为 CS50 官方字幕,中文为机器翻译(点播放器字幕按钮开关)

01本集学什么

  • 认识 Scratch 界面:积木库 / 脚本区 / 舞台 / 角色区
  • 往舞台放角色,给它换造型、换背景
  • 让角色显示、改大小、改方向

02核心概念

计算思维把想做的事拆成一串电脑能照做的指令。
坐标系舞台用 x(左右)和 y(上下)给每个位置一个门牌号。
对象与属性每个角色是一个“对象”,有位置、大小、方向、造型这些“属性”。
造型 = 动画最小单位切换角色的不同造型,看起来就“动”了起来。

03认识这些积木

界面与角色积木库 · 脚本区 · 舞台 · 角色区 · 选择角色 · 复制 · 删除
角色属性显示/隐藏 · 大小(%) · 方向(度) · 旋转方式(全向/左右)
三个标签页造型 Costumes · 声音 Sounds · 背景 Backdrops

04跟着做(视频里的例子)

  • 认识角色把猫和鱼摆到舞台不同位置,理解 x/y。
  • 造型动画给角色加多个造型、来回切换,做出最朴素的动画。
  • 换背景加一个水下背景,把鱼放进去,试试旋转方式。
动手练

放一个角色 + 一个背景,给角色加两个造型,让它切换造型看起来像在动。

一句话带走

程序 = 一串你给“演员”下的命令。先摆好舞台和演员,故事才能开始。

官方大纲 · 跳转时间戳
  • 0:00什么是编程
  • 2:13角色 Sprite
  • 11:00造型 Costume
  • 17:52背景 Backdrop
2函数Functions33:43
函数输入顺序执行

字幕:英文为 CS50 官方字幕,中文为机器翻译(点播放器字幕按钮开关)

01本集学什么

  • 用积木让角色移动、转向、滑行、说话
  • 理解一块积木就是一个“会做事的函数”
  • 用“等待”控制节奏,让变化看得见

02核心概念

函数一块能完成某件事的积木;给它不同输入,行为就不同。
输入 Inputs填进积木里的数值/文字,改变它怎么做(走 10 步 vs 走 50 步)。
脚本一摞积木从上往下顺序执行——这就是“程序的流程”。
注释 & 节奏注释是给人看的说明;wait 让动作慢下来、看得清。

03认识这些积木

运动移动 N 步 · 右转 N 度 · 移到 x,y · 滑行 N 秒到 x,y
外观说 N 秒 · 换造型 · 换背景 · 显示 · 隐藏
声音 / 控制播放声音直到结束 · 等待 N 秒
扩展积木音乐:演奏音符/设乐器/设速度 画笔:落笔/抬笔

04跟着做(视频里的例子)

  • Move / Move & Turn单块移动,再组合移动+转向走出折线。
  • Glide刺猬沿矩形滑行一圈回到起点。
  • Say带时序的对话,一句接一句显示。
  • Bear造型+背景+移动,讲一小段叙事。
  • Duck用显示/隐藏 + 声音玩捉迷藏。
  • Music / Pen演奏一段音阶;移动配合抬落笔画出圆。
动手练

让角色说三句话、每句停 2 秒,讲一个小笑话。

一句话带走

每块积木都是一个“函数”——你不用管它内部怎么实现,给输入、它替你做事。这就是真实编程里的“调用函数”。

官方大纲 · 跳转时间戳
  • 0:00开场
  • 1:13移动
  • 4:21移动+转向
  • 10:28滑行
  • 13:53说话
  • 16:38小熊 1/2
  • 25:39鸭子
  • 26:38音乐
  • 29:42画笔
3事件Events29:47
事件事件驱动用户输入

字幕:英文为 CS50 官方字幕,中文为机器翻译(点播放器字幕按钮开关)

01本集学什么

  • 用“当…就…”让程序响应点击、按键、声音
  • 让多个角色各自独立地对事件做反应
  • 用计时器协调不同角色的动作

02核心概念

事件 Event程序里“发生的一件事”:绿旗被点、按了键、声音变响……代码可以去响应它。
事件驱动程序不再只从头跑到尾,而是“等事情发生,再做反应”。
用户输入键盘、鼠标点击、麦克风响度,都能当作触发器。
多角色协调每个角色可以有自己的事件脚本,同时各干各的。

03认识这些积木

事件当绿旗被点击 · 当此角色被点击 · 当按下[键] · 当响度>[值] · 当计时器>[值] · 当背景切换到
运动/外观指向 · 改x/改y · 移到随机位置 · 说 N 秒 · 换背景 · 设/改大小
声音 / 旋转播放声音直到结束 · 设旋转方式

04跟着做(视频里的例子)

  • 绿旗齐响应多个角色同时对绿旗做反应,学会协调多脚本。
  • 点角色触发点鸭子它就随机传送。
  • 背景选择器三个按钮角色切换北极/丛林/水下三个场景。
  • 架子鼓点不同鼓发不同声音。
  • 游动的鱼方向键移动、数字键改大小,多个独立事件脚本。
  • 气球 / 计时器麦克风响就变大;猫和恐龙定时互相打招呼。
动手练

做一个“按钮”:点它,就切换到另一个背景。

一句话带走

“当…就…”是交互的起点。真实软件全靠事件驱动——等世界发生事,再决定做什么。

官方大纲 · 跳转时间戳
  • 0:00开场
  • 0:42当绿旗被点击
  • 6:13点角色触发
  • 8:10背景选择器
  • 13:12架子鼓
  • 16:03按键触发
  • 17:10游动的鱼
  • 23:18气球
  • 25:24计时器
4Values30:30
运算符返回值随机

字幕:英文为 CS50 官方字幕,中文为机器翻译(点播放器字幕按钮开关)

01本集学什么

  • 认识“值”:数字和文字,是函数的输入
  • 用运算符做加减、拼接、四舍五入、取随机
  • 用“询问/回答”接住用户输入并使用它

02核心概念

值 Value填进积木的椭圆块,可以是数字或文字。
运算符 Operators拿一些值算出一个新值:+、÷、拼接、四舍五入、取随机数。
返回值有的积木会“吐出”一个值,比如“回答 answer”就是“询问”的结果。
感知与随机能读到 x/y坐标、方向、计时器;能生成不可预测的随机值。

03认识这些积木

运算加(+) · 除(/) · 拼接 join · 四舍五入 round · 取随机数 pick random
侦测x坐标 · y坐标 · 方向 · 计时器 · 询问并等待 ask · 回答 answer
运动/外观移动 · 指向 · 说 · 大小

04跟着做(视频里的例子)

  • Position用 join 拼出“x=.. , y=..”显示坐标。
  • 走路/旋转/计时的刺猬移动距离随大小变;随机指向;round(计时器)显示秒。
  • Hello问用户名字,再打招呼。
  • 四个小问答用回答决定:走几步 / 去哪(x,y) / 几条腿(造型) / 几点(背景)。
动手练

问用户“你几岁?”,然后说“你明年就 X 岁啦”(用加法运算符)。

一句话带走

程序里流动的是“值”。会问、会算、会记,程序才聪明——这就是所有语言里的数字、字符串、布尔。

官方大纲 · 跳转时间戳
  • 0:00开场
  • 0:40坐标位置
  • 12:26走路刺猬
  • 16:02旋转刺猬
  • 18:04计时刺猬
  • 20:29你好
  • 23:54走几步
  • 24:51去哪
  • 26:04几条腿
  • 28:23几点了
5条件Conditions28:09
布尔if / else比较嵌套

字幕:英文为 CS50 官方字幕,中文为机器翻译(点播放器字幕按钮开关)

01本集学什么

  • 用“如果…那么…”让程序会看情况做决定
  • 用碰撞/比较写出真/假的判断条件
  • 把条件嵌套起来,处理多种情况

02核心概念

布尔 Boolean答案只有“真/假、是/否”的问题。
条件逻辑“如果<条件>那么<做…>”,条件成立才执行。
比较运算= 相等、> 大于、< 小于,把两个值比一比。
嵌套条件在“否则”里再放一个“如果”,分出正/负/零这种多情况。

03认识这些积木

控制如果<>那么 · 如果<>那么否则
侦测(布尔)碰到鼠标? · 碰到角色? · 碰到颜色? · 碰到边缘?
运算= · > · < · round · 计时器
配合说 N 秒 · 移到随机位置 · 改x/改y · 隐藏 · 播放声音

04跟着做(视频里的例子)

  • Meow / 猫和气球 / 猫和树按空格叫;只有碰到气球才叫;碰到绿色就报告。
  • Balloon每按一次变大,到 200 就隐藏并爆掉。
  • Numbers输入一个数,用嵌套条件判断正 / 负 / 零。
  • 刺猬赛跑 & 迷宫到边显示用时;按用时说快/慢;撞到红墙就随机传送。
动手练

做一个“猜大小”:问一个数,判断它比 10 大还是小,说出来。

一句话带走

if / else 让程序会做决定。会判断,程序才有“智能”的雏形。

官方大纲 · 跳转时间戳
  • 0:00开场
  • 1:30
  • 4:56猫和气球
  • 6:35猫和树
  • 8:58气球
  • 10:26数字
  • 20:06刺猬赛跑1
  • 22:46刺猬赛跑2
  • 24:19迷宫
6循环Loops27:31
循环foreverrepeat until

字幕:英文为 CS50 官方字幕,中文为机器翻译(点播放器字幕按钮开关)

01本集学什么

  • 用循环重复执行,不用手动复制一堆积木
  • 分清 forever / repeat N / repeat until 三种循环
  • 用循环切造型做出走路、游泳等动画

02核心概念

循环 Loop写一次、重复执行很多次的机制。
无限循环 forever一直重复,直到程序停止。
有限循环 repeat N重复固定的次数。
条件循环 repeat until重复到某个条件成立为止。

03认识这些积木

控制forever · repeat(N) · repeat until<> · 碰到边缘就反弹
运动/外观移动 · 右转 · 指向 · 下一个造型 · 显示/隐藏 · 设/改大小
侦测/运算到…的距离 · = 比较 · 播放声音 · 等待

04跟着做(视频里的例子)

  • 走路的猫forever + 碰边反弹 + 切造型 = 走路动画。
  • 游动的鱼多个循环同时跑:跟随鼠标 + 播放海洋声。
  • 摸猫 / Meow离鼠标近就喵;按输入次数叫(repeat N)。
  • Circle / 气球重复移动+转向画圆;repeat 10 次充气再爆;repeat until 到目标大小再爆。
动手练

用 repeat 让角色走 4 步、每步转 90 度,走出一个正方形。

一句话带走

别重复自己,让机器重复。循环是编程里最省力的杠杆。

官方大纲 · 跳转时间戳
  • 0:00开场
  • 1:13走路的猫
  • 8:04游动的鱼
  • 12:30摸猫
  • 16:42
  • 19:54画圆
  • 21:20气球1
  • 24:57气球2
7变量Variables32:02
变量全局/局部状态

字幕:英文为 CS50 官方字幕,中文为机器翻译(点播放器字幕按钮开关)

01本集学什么

  • 新建变量,把值存起来待用(分数、生命、大小)
  • 用 set / change 给变量赋值和增减
  • 用变量当条件、做计分和简单物理模拟

02核心概念

变量 Variable程序的“记事本”,存一个值待会儿用。
全局 vs 局部全局变量所有角色都能用;局部变量只属于某个角色。
增减与赋值change by 加/减;set to 直接设成某值。
用变量管状态分数、生命、速度都用变量记——游戏才有“进度”。

03认识这些积木

变量新建变量 · 椭圆变量块 · change [变量] by · set [变量] to
控制/侦测stop all · 碰到颜色? · 等待
运算/外观/画笔乘法(反向) · 设大小 · 画笔:全部擦除/落笔

04跟着做(视频里的例子)

  • 计数猫点一下 +1,配一个重置按钮。
  • 追星星碰到星星加分,到分数阈值换背景、结束。
  • 弹跳球用变量存速度:重力加速 + 落地损耗,像真的一样弹。
  • Balloon / Spiral滑杆控制大小;步长逐渐变大画出螺旋。
动手练

做一个点击计分器:每点角色一下,分数变量 +1 并显示在舞台上。

一句话带走

变量是程序的记事本。有了它,程序能记住分数、生命、进度——游戏就活了。

官方大纲 · 跳转时间戳
  • 0:00开场
  • 1:02计数猫
  • 7:29追星星
  • 15:01弹跳球
  • 24:29气球
  • 27:38螺旋
8抽象Abstraction24:37
抽象复用参数模块化

字幕:英文为 CS50 官方字幕,中文为机器翻译(点播放器字幕按钮开关)

01本集学什么

  • 把一段复杂逻辑打包成自己的“我的积木”
  • 用参数让自定义积木变得灵活可复用
  • 理解“抽象”让代码更干净、更好读

02核心概念

抽象 Abstraction把一坨逻辑取个名字、藏起细节,变成一块可复用积木。
代码复用别复制粘贴同一段积木——做成函数,改一处就处处生效。
参数 Parameters给自定义积木开“输入口”,同一块积木能干不同的活。
模块化把程序拆成有名字的小块,结构更清楚。

03认识这些积木

自定义积木“我的积木” → 制作新积木 · define 定义 · 带标签的输入参数
配合当按键 · 如果<> · repeat · 碰到角色? · 改x/y · 移到随机 · round · 计时器

04跟着做(视频里的例子)

  • 恐龙游戏把“判断是否到达星星”抽成一个可复用积木。
  • Balloon带参数的自定义积木控制充气/放气。
  • 走路的熊多参数自定义积木:走 N 步、用两只脚还是四只脚。
动手练

把你前面写过的一段重复逻辑,做成一个“我的积木”,然后调用它两次。

一句话带走

抽象 = 给一坨逻辑取名、藏细节。这是从“会写代码”到“会组织代码”的关键一跳。

官方大纲 · 跳转时间戳
  • 0:00开场
  • 0:38恐龙游戏
  • 11:56气球1
  • 16:52气球2
  • 20:41走路的熊
9从零做一个作品Building from Scratch33:58
广播克隆状态管理综合

字幕:英文为 CS50 官方字幕,中文为机器翻译(点播放器字幕按钮开关)

01本集学什么

  • 用广播让角色之间互相“发消息”通信
  • 用克隆在运行时动态复制角色(如不断下落的水晶)
  • 综合前八集,独立搭出一个能玩的小游戏

02核心概念

广播 / 消息一个角色喊一声,收到的角色各自响应——角色间解耦通信。
克隆 Clone运行时动态复制角色实例,做出“一堆同样的东西”。
游戏状态管理用变量跟踪分数、失误数,决定游戏进程与结束。
综合运用事件+循环+条件+变量+坐标,全用上。

03认识这些积木

事件广播 · 当我收到 · 当角色/舞台被点 · 绿旗 · 当按键
控制(克隆)克隆自己 · 当作为克隆体启动 · 删除此克隆 · forever · if · stop all · wait
运动/变量改x/y · 滑行 · 指向 · set/change · join · 比较 · 随机 · 碰到

04跟着做(视频里的例子)

  • Broadcasts猫问候恐龙、恐龙收到再回应——去掉写死的时序依赖。
  • 控制鸭子点箭头广播 up/down,鸭子响应移动——事件委托。
  • 拜访的鱼 / Stars点舞台广播 visit,鱼游向鼠标;点星星生成克隆滑到随机位置。
  • Crystal Catch(压轴)完整接水晶游戏:方向键控制猫、水晶克隆下落、catches 计分、三次 miss 结束、随机横向、结束广播停止。
动手练

综合前八集,做一个你自己的小游戏(哪怕很小):要有一个可控制的角色、一个计分变量、一个结束条件。

一句话带走

会广播、会克隆、会管状态,你就能从零搭出真正能玩的作品。这正是编程的乐趣:想法变成能跑的东西。

官方大纲 · 跳转时间戳
  • 0:00开场
  • 2:57广播
  • 5:24控制鸭子
  • 8:31拜访的鱼
  • 9:38星星
  • 11:45接水晶
关于版权 视频与例子出自 Harvard CS50「Introduction to Programming with Scratch」,采用 CC BY-NC-SA 4.0:署名、非商用、相同方式共享。本课件为中文改写,保持免费。