Swift Playgrounds · 通关路线
Swift Playgrounds 通关路线
在 iPad / Mac 上,指挥小角色 Byte 在 3D 世界里捡宝石、拨开关。它把编程最核心的概念,做成一关关看得见、摸得着的谜题。下面按内置章节的推荐顺序,给每一章的学习目标、要用的真实 Swift 命令、通关思路和小技巧——一册一册往下打。
打开 / 下载 Swift Playgrounds第一册 · 打基础
Learn to Code 1指挥 Byte 捡宝石,把顺序、函数、循环、条件、算法一关关走通。零基础从这里开始。
第 1 章命令Commands顺序 · 精确指令
电脑只会做你明确说出的每一步。第一章就是学会把“走到宝石那儿捡起来”拆成一条条精确命令。
moveForward() collectGem() turnLeft() toggleSwitch()
看清 Byte 到宝石/开关的路径,一步步写出命令。转向只有 turnLeft()——想右转就连转三次左。命令从上到下依次执行。
转弯之后“前方”的方向也跟着变了,容易数错;先在脑子里替 Byte 走一遍。
第 2 章函数Functions函数 · 复用
把一串常用命令打包成一个“新命令”(函数),起个名字,之后反复调用。代码更短、更好读。
func turnRight() {
turnLeft()
turnLeft()
turnLeft()
}
// 之后就能直接用:
turnRight()找出重复出现的动作(比如“右转”“捡一颗再前进”),抽成函数。主流程只剩几行、一眼看懂在干嘛。
先在上面 func 定义、再在下面调用。给函数起个说人话的名字,代码就像一份说明书。
第 3 章for 循环For Loops循环 · 固定次数
重复固定次数,不用复制粘贴一堆一样的命令。
for i in 1...4 {
moveForward()
collectGem()
}看地形的重复节奏——“走一步、捡一颗”重复 4 次,就用 for 循环写一次、跑 4 遍。台阶、方阵这类规律地图最适合。
1...4 表示重复 4 次;把“每一轮要做的事”放进大括号里。
第 4 章条件Conditional Code条件 · if / else
让 Byte 看情况做决定:脚下有宝石就捡、前面挡住就转。用 if / else 应对不确定的地图。
if isOnGem {
collectGem()
}
if isBlocked {
turnLeft()
} else {
moveForward()
}地图不确定时别写死步骤,改成“如果…就…”。isOnGem、isBlocked、isOnClosedSwitch 这些是 Byte 的“传感器”,返回真/假。
if 只在条件为真时执行;配合循环,就能用一套代码走完各种不同的地图。
第 5 章逻辑运算Logical Operators非 · 且 · 或
一个条件不够用时,把多个条件组合起来判断:! 取反、&& 且、|| 或。
if !isBlocked {
moveForward() // 前面没挡住才走
}
if isBlockedLeft && isBlockedRight {
turnLeft() // 左右都堵住才掉头
turnLeft()
}用组合条件表达更复杂的判断:!isBlocked(前方通畅)、两边都堵才转身。这样一套规则能覆盖更多岔路情况。
! 取反最常用;&& 要两个都为真、|| 只要有一个为真。多用括号让判断更清楚。
第 6 章while 循环While Loops循环 · 条件重复
重复到某个条件成立为止——当你不知道要重复几次时用它。
while !isOnGem {
moveForward()
}
collectGem() // 一直走到踩上宝石才停不知道要走几步时用 while:“一直走,直到踩到宝石”。while 管“重复多久”,循环体里的 if 管“这一步具体做什么”。
循环条件迟早要变成假,否则 Byte 会原地卡死(死循环);确保每轮都在向目标靠近。
第 7 章算法Algorithms综合 · 通用规则
把前面全部组合起来,设计一套“无论地图长什么样都能通关”的通用规则——这就是算法思维。
while !isOnGem {
if !isBlockedRight {
turnRight()
moveForward()
} else if !isBlocked {
moveForward()
} else {
turnLeft()
}
} // “右手贴墙”走迷宫面对随机迷宫,别去记死某条路线,而是写一套对所有情况都成立的规则(比如右手定则:一直贴着右墙走,总能走出去)。先想清楚规则,再翻译成 if / while。
判断“这个规则是不是对每种地形都成立”——这正是从“会写命令”到“会设计算法”的关键一跳。
第二册 · 会记事、会造世界
Learn to Code 2打通第一册后接着玩。学会用变量记状态、创建自己的角色、写带参数的通用函数,甚至用代码造地图。
第 1 章变量Variables变量 · 记住状态
用变量记住数量、开关状态——让程序能“边走边数”“记事”。从“只会走”升级到“会记”。
var gemCounter = 0
gemCounter += 1 // 每捡一颗就 +1
if gemCounter == 7 {
// 够 7 颗了,做点什么
}需要“数一数”时(捡了几颗宝石、开了几个开关)就设一个变量,每次 += 1,再拿它做判断。对应关卡:Keeping Track、Bump Up The Value。
var 是可变的(能改),let 是常量(不能改);变量要先给一个初始值。
第 2 章类型Types类型 · 布尔 · 传送门
认识不同“类型”的值:数字、真假(Bool)。用它表达“门是开还是关”这类状态。
var portalIsActive = true // Bool:真/假
if portalIsActive {
// 门开着,走过去
}传送门、开关这些“开/关”状态用 Bool(true / false)表示,存进变量再判断。对应关卡:Portal On and Off、Setting the Right Portal。
每个值都有类型;类型对不上(拿数字当真假用)程序会报错。
第 3 章初始化Initialization初始化 · 创建实例
学会“创建”自己的角色(Expert)实例,给它起名字、放进世界——世界里能同时有好几个角色各干各的。
let expert = Expert() expert.turnLockUp() expert.moveForward()
用 `类型名()` 造出一个实例、存进常量,之后就能命令它做事。对应关卡:Initializing Your Expert、Train Your Expert。
初始化 = 从“类型模板”造出一个具体的“实例”。一个 Expert 类型,可以造出好几个 expert。
第 4 章参数Parameters参数 · 通用函数
给函数开“输入口”(参数),让同一个函数能干不同的活——走 3 步还是 5 步、去哪个坐标。
func move(distance: Int) {
for i in 1...distance {
moveForward()
}
}
move(distance: 4)发现两个函数几乎一样、只差一个数时,把那个数变成参数、合并成一个通用函数。对应关卡:Generalizing a Function、It Takes Two。
参数在括号里写“名字: 类型”,调用时传具体值。这是“抽象”的进阶(呼应 CS50 第 8 集)。
第 5 章建造世界World Building建造世界 · 坐标
不只是解别人的关——自己用代码摆放积木、水、传送门,用坐标造出一张地图。从玩家变设计者。
world.place(Block(), atColumn: 3, row: 2)
world.place(expert, facing: .north,
atColumn: 0, row: 0)用 place(...) 一块块搭地形,用坐标 (column, row) 定位。先想好地图长啥样,再用循环批量摆。对应关卡:Uniting Worlds、Floating Islands。
从“玩关卡”到“造关卡”是质变——你开始站在设计者的角度想问题。
第 6 章数组Arrays数组 · 一串数据
用数组一次装很多个值(一串高度、一串坐标),再用循环挨个处理。
let heights = [2, 5, 1, 4]
for h in heights {
// 用每个 h 摆一列 h 格高的积木
}要处理“一整批”东西(每列高度、每个宝石位置)时用数组:列成一串,用 for 循环逐个取出处理。对应关卡:Arrays Introduction、Stacking Blocks。
数组从 0 开始编号;array[5] 超出范围会崩(Index Out Of Range)——循环边界要小心。
第三册 · 走向真实 App
Learn to Code 3 / 做 App「Learn to Code 3」是 Apple 早年的进阶模块,把前两册学的东西用到“更像真 App”的场景。新版 Swift Playgrounds 已把这部分并入「做真正的 App」——用 SwiftUI 搭界面、响应点击,最后做出一个能装进手机、甚至上架 App Store 的作品。方向大致是:
- 图形与坐标——在屏幕上画东西、精确定位
- 触摸与事件——响应点击、拖动,做出能互动的界面
- 把前两册的变量 / 数组 / 函数,用到真实交互里
- 用 SwiftUI 从零做一个自己的 App(这也是 Apple 官方“做 App”教程的起点)