CodeCombat为通关全部五大地图的勇士打造金属荣誉勋章

CodeCombat为通关全部五大地图的勇士打造金属荣誉勋章

 

在编程教育的赛道上,有这样一款产品:它不是课本,不是网课,而是一片等待被拯救的虚拟大陆。玩家书写的每一行代码,都会化作英雄手中的剑招与魔法。

我们是CodeCombat——风靡全球190多个国家、拥有超过2000万学习者的游戏化编程学习平台。

图片

今天,我们宣布一项令所有编程冒险者热血沸腾的举措——

为每一位通关全部11张地图的玩家,定制一枚实心金属奖牌,庆祝这一里程碑式的成就。


这枚奖牌,拿在手里是有分量的

这不是一张电子证书,也不是一个虚拟徽章。

这是一枚真正用金属铸造的实心奖牌。我们选用铝作为材质——这种银白色金属是航空航天领域的核心材料,密度2.7g/cm³,以实心形态铸造意味着:没有空心、没有偷工减料,整枚奖牌从里到外都是实打实的金属。 拿在手中,你能感受到金属独有的冰凉触感和沉稳重量。银白色的光泽不张扬,却经得起时间的考验——不生锈、不褪色、不变形,就像你通关路上练就的编程能力一样,扎实、持久、真实

图片


这枚奖牌的价值不在于材料本身的贵重,而在于获得它的门槛之高——你需要从零开始,穿越11张地图、2300多个关卡,一路从"不知道代码是什么"成长为"能手写算法的编程者"。每一克重量,都是你敲下的代码凝结而成的。

图片



11张地图 · 2300+关卡 · 通关标准

CodeCombat的完整世界由11张地图组成,总计超过2300个关卡。要获得这枚奖牌,玩家需要全部通关

地图类别
地图名称
内容方向
人物冒险(5张)
暗影地牢 · 边际森林 · 流金沙漠 · 安息云峰 · 封神冰川
Python等编程基础
游戏开发(3张)
游戏开发 1 · 游戏开发 2 · 游戏开发 3
用代码创造自己的游戏
网页开发(2张)
网页开发 1 · 网页开发 2
HTML/CSS/JS 网页制作
少年版(1张)
CodeCombat Junior
低龄段编程启蒙

其中,5张人物冒险地图是整个知识体系的主轴——从零基础的语法入门,一路攀升到经典数据结构与算法,构成了一条完整的编程成长路线。下面,让我们走进这5张地图,看看这条远征之路上究竟埋藏了多少硬核知识。


暗影地牢 · 44关

你写下第一行代码,世界开始回应你

图片

暗影地牢是每一位编程英雄的起点。你被投入一片幽暗的地牢,什么都不会——直到写下第一行 hero.moveRight(),角色向右迈出一步,你才意识到:代码,就是给计算机的指令。

核心知识点

基础概念的建立。 地牢的前几关让玩家理解什么是对象、方法和参数。hero 是一个对象,.moveRight() 是它拥有的方法,括号里传入的数字或字符串就是参数——这三个概念是所有编程语言的基石。玩家在这里还会接触到整数、小数、正数、负数等基本数据类型,认识字符串——那些用引号包裹起来的文字,比如 hero.attack("Brak") 中的 "Brak"。注释(以 # 开头的说明文字)、顺序结构(代码从上到下依次执行)、bug(代码中的错误)和调试(找到并修复错误的过程),这些编程世界的基本规则在最初几关中自然建立。

循环——编程世界的第一个"超能力"。 从第9关"焰中舞动"开始,while True 循环登场。这是一个革命性的时刻:玩家不再需要一行一行地重复写移动指令,而是把指令放进循环体中,让英雄自动反复执行。缩进(用空格或Tab将代码"推进去")和代码块的概念由此诞生。循环内可以嵌入移动命令、攻击命令,甚至可以在循环中更新变量——比如每一轮循环都重新寻找最近的敌人,确保英雄永远在追击当前最近的威胁。

变量——英雄的"记忆"。enemy = hero.findNearestEnemy() 这行代码同时教会了玩家两件事:变量赋值(用 = 把一个值存进一个名字里)和方法返回值(findNearestEnemy() 会"回答"一个结果)。有了变量,英雄就拥有了"记忆",可以记住敌人是谁,然后对它发起攻击。变量可以随时更新、重新赋值,让英雄在每一轮循环中都"记住"新的目标。

坐标系统与多参数调用。hero.buildXY("fence", 36, 34) 这一行代码包含了三种参数类型:字符串 "fence" 表示建造物的类型,数字 36 和 34 表示建造的坐标位置。玩家在这里第一次接触到 x-y 坐标系,以及一个方法可以同时接收多个不同类型的参数。用坐标移动、用坐标建造,空间感和精确性开始融入编程思维。

丰富的策略思维萌芽。 虽然地牢不需要显式的算法知识,但玩家已经在不知不觉中实践了大量算法思想:观察地图规划最优路径(迷宫寻路)、优先拾取最近的宝石(贪心策略)、检查敌人是否存在后再攻击(状态检查)、发现迷宫的重复结构并用循环解决(模式识别)、在竞技场中合理使用金币招募士兵(资源管理)、建造围栏和火焰陷阱形成防线(塔防建造)、使用诱饵分散敌人注意力(诱敌策略)、规划路线躲避食人魔的视野(避障逻辑)、释放盟友让他们分担伤害(协同作战)。地牢后期的竞技场关卡还引入了多人对战,让玩家初尝策略博弈的乐趣。

地牢武器库(英雄方法):moveRight/Left/Up/Down(方向移动)、attack(攻击)、say(说话)、findNearestEnemy(寻找最近敌人)、findNearestItem(寻找最近物品)、buildXY(在坐标建造),以及移动方法的数字参数(如 moveRight(3) 一次移动3步)。

地牢通关成就: 掌握 7个 基础概念(对象·方法·参数·字符串·变量·循环·坐标) · 学会 6种 英雄技能 · 实践 9种 策略思维 · 完成从"不知道代码是什么"到"能写出让英雄移动、战斗、建造的程序"的跨越


边际森林 · 122关

英雄学会了思考:什么时候做什么

图片

如果说地牢教会了"怎么做",森林要教会的是"什么时候做什么"。这是CodeCombat关卡数量最多的地图,也是编程思维真正开始成型的阶段。

核心知识点

条件判断 if / elif / else——代码的"大脑"。 这是编程中最重要的控制结构之一。看到敌人就攻击,看到金币就拾取,什么都没有就继续前进。if enemy: 检查敌人是否存在,if hero.health < hero.maxHealth / 2: 判断英雄是否需要撤退,elif enemy.type == "thrower": 针对不同敌人类型采取不同策略。嵌套的if语句让决策逻辑变得多层次——先判断有没有敌人,再判断敌人的类型,再根据距离决定是近战还是使用技能。多条件分支(if-elif-else)让代码可以应对任意复杂的局面。

比较运算符与逻辑运算符。==!=<><=>= 这6种比较运算符在森林中被大量运用,用于比较数值、判断类型、检测距离。与此同时,andornot 三种逻辑运算符让条件可以自由组合:if enemy and hero.distanceTo(enemy) < 5 表示"存在敌人距离小于5时才行动"。布尔值 True / False 和 None 值(表示"什么都没有")的概念也在森林中建立。

对象属性——数据附着在事物上。enemy.health(敌人的生命值)、enemy.pos.x(敌人的x坐标)、item.value(物品的价值)、item.type(物品的类型)——数据不再是孤立的数字,而是附着在游戏对象身上的属性。通过 . 运算符访问对象属性,这是面向对象编程思想的启蒙。属性可以链式访问:enemy.pos.x 意味着"敌人的位置的x坐标"。

函数定义 def 在森林的中后期,玩家学会用 def 关键字定义自己的函数,将重复出现的逻辑封装起来,传入参数,在需要时直接调用。这是"代码复用"思想的第一次实践——把一段反复出现的攻击-移动逻辑写成一个函数,告别复制粘贴。函数可以接收多个参数,参数可以是坐标、类型字符串等不同数据类型。

事件驱动编程——宠物系统。 森林引入了宠物(pet)系统,这是一种全新的编程范式。pet.on("hear", handler) 注册了一个事件监听器:当宠物"听到"英雄说话时,执行 handler 函数。pet.on("spawn", handler) 则在宠物出生时触发。事件对象 event 携带着 event.speaker(谁说的)和 event.message(说了什么)等信息。宠物可以独立执行任务——pet.fetch(item) 让宠物去拾取物品,pet.moveXY(x, y) 让宠物移动到指定位置。英雄负责战斗,宠物负责收集资源,这就是并行任务和分工协作的雏形。

战斗技能与冷却时间管理。hero.isReady("cleave") 检查劈斩技能是否冷却完毕,hero.cleave(enemy) 释放范围攻击,hero.shield() 举盾防御。冷却时间管理成为新的编程挑战:玩家需要在循环中不断检查技能状态,根据距离选择是用劈斩还是普通攻击,在血量过低时切换为防御姿态。

精确坐标移动与距离计算。hero.moveXY(x, y) 取代了简单的方向移动,玩家必须计算精确的目标坐标。中点公式 (x1+x2)/2 用于计算两点之间的中间位置,hero.distanceTo(enemy) 返回与目标的距离,基于距离的阈值判断决定了攻击方式的选择。坐标比较还用于判断方位——敌人在英雄的左边还是右边,上方还是下方。

建造系统。pass 语句作为空代码块的占位符,保证程序结构完整。hero.buildXY 的参数类型扩展为围栏 "fence"、火焰陷阱 "fire-trap"、诱饵 "decoy" 等多种建造物,配合条件判断实现"只在敌人出现时建造防御"的策略。

森林武器库新增:moveXY(坐标移动)、distanceTo(测距)、isReady(技能就绪检查)、cleave(劈斩)、shield(防御)、findByType(按类型查找)、pet.on(事件监听)、pet.fetch(宠物拾取)等。

森林通关成就: 掌握 3层 条件分支 · 6种 比较运算符 · 3种 逻辑运算符 · 对象属性与链式访问 · 自定义函数 def · 事件驱动编程 · 宠物并行任务 · 技能冷却管理 · 坐标精确移动与距离计算 · 完成从"会写代码"到"会让代码做出决策"的跨越


流金沙漠 · 97关

当编程遇上数学,当单个数据变成一组数据

图片

沙漠是数学与数据结构思维的试炼场。漫天黄沙中,玩家面对的不再只是食人魔的蛮力进攻,而是需要用精确的计算和系统的数据处理来解决问题。

核心知识点

算术运算全面展开。 加减乘除(+-*/)在沙漠中从简单的数值计算拓展到复杂的游戏逻辑:hero.health / hero.maxHealth 计算生命值比例来决定是否撤退,乘法换算坐标偏移量,除法分配资源。取模运算 % 首次登场——判断一个数是奇数还是偶数,或者在循环中实现"每隔N次做一次特殊操作"。运算符优先级和括号的使用确保复杂表达式按正确的顺序计算。+= 和 -= 增量赋值运算符让代码更加简洁。

计数器与累加器——编程中最实用的模式。totalGold += coin.value 是一个看似简单却极为重要的模式:在循环中不断累加数值。统计网页访问量、计算购物车总价、汇总考试成绩,真实编程中无处不在,而它从沙漠的金币收集开始。计数器模式 enemiesDefeated += 1 用于追踪击败的敌人数量,并在达到特定数量后触发下一步行动。阈值判断 if hero.health < hero.maxHealth / 2 将数学运算与条件分支紧密结合。

循环进化:while条件 + break + continue 循环不再只有 while True 一种形式。while hero.gold < 100: 在金币不足时持续收集,达到目标后自动停止。break 语句可以在满足特定条件时强制跳出循环,continue 语句可以跳过当前这一轮循环直接进入下一轮。这两个关键字让循环控制变得精细而灵活——比如遍历物品时跳过毒药只拾取药水。

函数的完整形态。 沙漠中的函数不再只是简单的封装。def 定义的函数开始有明确的参数、有 return 返回值、有多种返回类型(布尔值、数值、坐标)。一个函数可以返回 True 或 False 来表示判断结果,也可以返回一个数值表示计算结果。多个 return 语句出现在不同的条件分支中——这是函数内部逻辑复杂化的标志。空值检查 if not enemy: 成为函数编写的标准防御措施。

布尔代数与逻辑谜题。 沙漠中有一类独特的关卡:巫师给出一组布尔条件,玩家需要使用 andornot 的组合来构建正确的逻辑表达式。这些关卡直接训练布尔代数的化简能力——not (A and B) 等价于 (not A) or (not B),括号如何改变逻辑运算的优先级,以及如何用最简洁的表达式表示复杂的条件。这是纯粹的逻辑思维训练,不需要战斗,只需要大脑。

事件驱动编程的深化。 宠物系统在沙漠中更加成熟。pet.on("hear", handler) 配合 event.speaker 和 event.message 实现了完整的消息系统:英雄喊出一个坐标,宠物听到后移动过去拾取物品;宠物充当"翻译官",将英雄的命令解析后转达给友军。这是消息传递、命令解析等真实系统设计思想的游戏化体现。

数组(列表)——从"一个"到"一组"。 这是沙漠后期最重磅的知识点。hero.findEnemies() 返回的不再是单个敌人,而是一个敌人列表。len(enemies) 获取列表长度,enemies[0] 通过索引访问第一个元素。while 循环配合索引递增实现数组遍历——这是数据结构学习的起点。玩家需要遍历所有敌人来找出最危险的那个,遍历所有金币来计算总价值,遍历所有友军来逐一下达命令。从此,代码处理的不再是单个数据,而是成批的数据。

时间维度与状态管理。hero.time 获取游戏中的当前时间,hero.gold 获取当前金币数量。根据时间分段执行不同行为(前30秒防守、后30秒进攻),根据金币数量决定是继续收集还是开始招募——实时反应系统和状态管理的概念在沙漠中自然形成。

沙漠武器库新增:findEnemies(查找所有敌人)、findFriends(查找所有友军)、findItems(查找所有物品)、findNearestFriend(查找最近友军)、hero.gold(金币属性)、hero.time(时间属性)、hero.costOf(查询招募费用)、hero.summon(召唤单位)、hero.command(指挥友军)、hero.findFlag(查找旗标)等。

沙漠通关成就: 掌握 5种 算术运算符 + 取模 % · 计数器/累加器模式 · while条件循环 + break + continue · 完整函数(参数 + return返回值) · 布尔代数与逻辑谜题 · 数组/列表 + 索引 + 遍历 + len() · 事件消息系统 · 时间与状态管理 · 完成从"会做决策"到"会处理批量数据和数学运算"的跨越


安息云峰 · 115关

亲手实现算法,驾驭复杂系统

图片

安息云峰是整个CodeCombat编程体系中最庞大、最具挑战性的地图之一。覆雪的山巅之上,玩家面对的是真正的计算机科学核心课题

核心知识点

for 循环——更优雅的遍历方式。for enemy in enemies: 取代了用 while 和索引手动遍历数组的笨拙写法,代码变得简洁而清晰。for i in range(len(array)): 在需要索引时提供精确控制。range() 函数配合各种参数(起始值、终止值、步长)实现灵活的计数循环。for循环与if条件的嵌套组合成为处理复杂数据的标准模式——遍历所有敌人,过滤出特定类型,对每一个执行不同的操作。

字典 {}——结构化的数据容器。{"x": 30, "y": 20} 这样的键值对结构在云峰中被广泛使用。字典可以作为坐标参数传递,也可以用于组织复杂数据。玩家还会操作包含多层属性的复杂对象——理解 enemy.pos.x(属性链式访问)、unit.type(类型判断)、unit.team(队伍识别)、unit.id(唯一标识)等嵌套属性的含义和使用。

亲手实现经典查找算法——云峰最具教育价值的关卡。 系统提供的 findNearestEnemy() 不再够用了——你需要自己遍历敌人数组,用"哨兵值"模式(nearest = NoneminDistance = 9999)逐一比较距离,亲手实现查找逻辑。同样的模式被拓展为四种核心算法:

找最近的目标——遍历比较距离,持续更新最小值;找最远的目标——遍历比较距离,持续更新最大值;找生命值最高的敌人——遍历比较生命值,持续更新最大值;找生命值最低的敌人——遍历比较生命值,持续更新最小值。

这就是线性查找算法极值查找算法的完整实现。当你第一次在循环中用一个变量持续追踪"当前最优解",并在每一轮迭代中决定是否更新时——你正在做真正的算法设计。

累加求和与条件过滤。 遍历数组并按条件筛选元素(只攻击投掷者、只收集价值大于2的金币),遍历并累加(计算所有金币的总价值、所有敌人的总生命值),遍历并计数(统计特定类型敌人的数量)——这些都是数组操作中最核心的模式,对应着真实编程中的数据过滤和聚合。

多单位协同控制系统。hero.summon("soldier") 召唤士兵,hero.command(friend, "move", targetPos) 指挥友军移动,hero.command(friend, "attack", enemy) 指挥友军攻击。玩家需要遍历所有友军单位,根据每个单位的位置、类型和当前敌情,给出不同的命令。这本质上是一个调度算法——管理多个"执行单元"的任务分配。预设的召唤顺序数组配合取模运算实现循环召唤不同类型的单位:summonTypes[summonIndex % len(summonTypes)]。金币管理、费用检查 hero.costOf("soldier")、单位生产的时机选择——真实的资源管理系统就此成型。

逐帧追踪。moveXY 会让英雄直接走到目标点,而 move 只移动一小步。在 while True 循环中反复调用 move(enemy.pos) 可以实现对移动目标的逐帧追踪——目标跑到哪,英雄就追到哪。这是实时系统中"持续跟踪"逻辑的基础。

数学函数与三角学。Math.PIMath.cos()Math.sin() 等数学常量和函数在云峰中登场。角度与弧度的转换、三角函数在坐标计算中的应用——编程与数学知识产生深度融合。

进制转换算法。 十进制转二进制、十进制转三进制等关卡,要求玩家使用整除和取余运算循环处理一个数字,将结果以字符串形式累加拼接。这是对除法、取模、字符串拼接、循环终止条件等多项知识的综合考验。

字符串深度操作。 字符串不再只是传递给方法的简单参数。字符串索引访问(str[i])、字符串遍历(for char in str:)、字符串拼接构建新字符串、字符相等判断——在密码破解、消息解码等主题关卡中得到充分训练。

二维数组与嵌套循环。 二维数组的索引访问和双层 for 循环嵌套遍历,将一维索引映射到二维网格坐标(行列转换),在二维空间中查找目标——这些挑战为封神冰川的图遍历算法做好了铺垫。

浮点数近似比较。 当两个浮点数因精度问题不完全相等时,使用误差范围(如3%)来判断是否"近似相等"——这个看似微小的知识点,在真实工程中却至关重要。

云峰武器库新增:hero.move(接受位置对象,逐帧移动)、hero.summon(召唤单位)、hero.command(指挥友军)、hero.costOf(查询费用)、hero.findByType(按类型查找)、hero.findByName(按名字查找),以及友军单位自身的方法如 friend.findNearestEnemy() 等。

云峰通关成就: 掌握 for循环 + range() · 字典 {} · 手动实现 4种 查找算法(最近/最远/最强/最弱) · 哨兵值模式 · 累加求和 · 条件过滤 · 多单位调度系统 · 逐帧追踪 move · 3种 三角函数 · 进制转换算法 · 字符串索引与遍历 · 二维数组 + 嵌套循环 · 浮点数近似比较 · 完成从"会处理数据"到"会设计算法、调度复杂系统"的跨越


封神冰川 · 48关

经典数据结构与算法的终极试炼

图片

封神冰川的48关虽然数量最少,却是整个旅程中难度最高的终极试炼。如果前四张地图教的是"怎么写代码"和"怎么用代码解决问题",冰川要教的是——怎么像计算机科学家一样思考

核心知识点

向量运算——用数学驾驭空间。Vector 对象及其全套运算方法在冰川中全面登场:subtract 计算两点间的方向向量、normalize 将向量归一化为单位向量、multiply 缩放向量长度、add 叠加两个向量、rotate 旋转向量方向、divide 分割向量、magnitude 获取向量长度——共 7种 向量操作。配合 Math.atan2() 计算反正切角度、弧度与角度的相互转换,玩家需要用向量运算实现碰撞规避(计算远离障碍物的方向)、动态障碍绕行、极坐标迷宫导航等高级空间操作。这不再是简单的"移动到某个坐标",而是"计算出应该朝哪个方向移动、移动多远"。

四大经典数据结构逐一登场:

队列(Queue)——先进先出。enqueue 在队尾添加元素,dequeue 从队首取出元素。在游戏中,队列用于管理资源分配和任务调度——谁先排队谁先得到服务。双队列管理(同时维护两个队列)进一步提升了复杂度。

栈(Stack)——后进先出。peekItem 查看栈顶元素而不取走,pickupItem 弹出栈顶,dropItem 压入栈顶。冰川中有经典的"钥匙开门"关卡:门的开启顺序要求玩家以特定的堆叠和弹出顺序操作钥匙——必须先拿到最后需要的钥匙垫在底下,再依次堆叠其他钥匙,使用时从栈顶逐个取出。这就是栈在实际问题中的典型应用。

链表(Linked List)——灵活的线性结构。 通过 .next 属性访问下一个节点,通过 setNext() 方法修改链接指向。链表的遍历(沿着next一直走到末尾)、首部插入(新节点指向原头节点)、尾部追加(找到最后一个节点再链接)、中间替换(修改前后节点的指向)——这些操作让玩家理解了"引用"和"链接"的本质,以及链表与数组的根本区别。

哈希表(Hash Table)——高速查找的秘密。 冰川中玩家需要自己实现哈希函数:对字符串的每个字符求 ASCII 码(ord(char)),累加后对数组长度取模,得到存储索引。当两个不同的键被映射到同一个位置时——碰撞发生了——玩家需要处理碰撞,理解为什么哈希函数的设计至关重要。

多种经典算法:

选择排序(Selection Sort)。 遍历数组找到最小(或最大)元素,将其与当前位置交换,然后处理下一个位置,循环直到整个数组有序。玩家在这个过程中直观理解了 O(n²) 时间复杂度 的含义——随着数据量增大,排序所需的操作次数呈平方级增长。

二分查找(Binary Search)。 如果数据是有序的,就不需要一个一个地找——每次取中间值比较,就能将搜索范围缩小一半。从 O(n) 到 O(log n) 的效率飞跃,是算法学习中最具启发性的一课。

图遍历——迷宫寻路。 冰川中有完整的迷宫寻路关卡,涉及多种经典搜索策略。左手定则(沿着左墙走)是最直觉的方法。深度优先搜索(DFS) 使用栈和 visited 数组记录已访问节点,沿一条路径走到底再回溯尝试其他方向。广度优先搜索(BFS) 使用队列逐层扩展搜索范围,保证找到最短路径。邻居方向数组定义了上下左右四个移动方向。回溯思想——当前路走不通时退回上一步——是搜索算法的核心。

动态规划(DP)——最优决策。 在多条路线中选择总金币最多的一条——将大问题分解为子问题,找到最优子结构,利用已计算的结果避免重复计算。这就是动态规划的精髓,也是算法竞赛中最重要的思想之一。

递归与分形绘制。 递归函数调用自身,在更小的尺度上重复相同模式,绘制出精美的分形线条和雪花图案。递归终止条件的设计(什么时候停止自我调用)、递归深度的控制——这些让抽象的递归概念变得视觉化、可触摸。你能亲眼看到一行递归代码如何生成出复杂而有规律的图形。

元胞自动机——生命游戏。 著名的Conway生命游戏出现在冰川关卡中:在二维网格上,每个细胞根据周围邻居的状态决定自己的生死。这个看似简单的规则系统却能产生极其复杂的涌现行为——这是计算机科学中"简单规则产生复杂行为"这一深刻思想的生动演示。

更多高级工具。 ASCII码运算(ord 函数)与字符编码处理、字符串反转算法、消息解码与字符串切片、浮点数近似比较(误差范围判断)、全局变量与局部变量的作用域区别、列表的 append/pop/remove/copy 操作、in 运算符判断元素是否在列表中、round 函数四舍五入、多返回值(返回数组)、常量定义与命名规范——冰川将玩家的编程工具箱填充到了完整状态。

冰川武器库新增:Vector 对象全套方法(subtract/add/normalize/multiply/rotate/divide/magnitude)、Math.atan2hero.isPathClear(路径畅通检测)、hero.findHazards(查找危险物)、hero.findFlag/hero.removeFlag(旗标系统),以及队列、栈、链表的全套专用操作方法。

冰川通关成就: 掌握 7种 向量运算 · 4种 经典数据结构(队列·栈·链表·哈希表) · 多种 经典算法(选择排序·二分查找·图遍历DFS/BFS · 动态规划 · 递归 + 分形绘制 · 元胞自动机 · ASCII码运算 · 字符串反转 · 时间复杂度分析) · 完成从"会设计算法"到"掌握计算机科学核心思维"的终极跨越


五大地图知识阶梯

一张表看懂你的成长

地图
你来时的样子
你走时的样子
暗影地牢
不知道代码是什么
能让英雄移动、战斗、建造
边际森林
会写代码
会让代码做出决策
流金沙漠
会做决策
处理批量数据和数学运算
安息云峰
会处理数据
设计算法、调度复杂系统
封神冰川
会设计算法
掌握计算机科学的核心思维

这不是简单的知识罗列,而是一条精心设计的、每一步都建立在前一步之上的攀登路线。 跳过任何一个环节,后面的关卡都将寸步难行。而这5张地图之外,还有游戏开发、网页开发和少年版共6张地图等待征服——11张地图全部通关,才是那枚奖牌的获取条件。


通关者,凤毛麟角

CodeCombat在全球拥有超过2000万注册用户,覆盖190多个国家和地区,与超过75,000所学校建立合作,获得320,000名教师的信赖。

而在中国,截至目前通关全部CodeCombat11张地图的玩家仅有15人。

11张地图,2300多关。从"什么是代码"到"手写深度优先搜索"。这条学习曲线的陡峭程度,注定了绝大多数人会在旅途中停下脚步。这不是选择题,不是填空题——每一关都要求玩家编写真实的、可执行的代码,逻辑必须完全正确,英雄才能存活。从安息云峰开始,关卡难度接近编程竞赛入门水平;到了封神冰川,向量运算、图遍历、动态规划已经是大学计算机专业的教学内容

正因如此,我们选择用一枚实心金属奖牌来致敬通关者。这不是一个轻易就能获得的荣誉——奖牌的分量,对应的是知识的重量。


致每一个准备出发的你

也许你现在觉得,2300多关是一个遥不可及的数字。

但每一个拿到奖牌的人,起点都和你一样——他们也曾在暗影地牢里被缩进错误卡住,盯着屏幕上那个红色的报错信息不知所措。他们也曾在边际森林里第一次写嵌套的 if-elif-else,逻辑在脑中绕成一团乱麻。他们也曾在流金沙漠里索引越界、程序崩溃了十几次。他们也曾在安息云峰上为了一个哨兵值的循环改了一整个下午。他们也曾在封神冰川里对着深度优先搜索的回溯逻辑发了半小时呆。

但他们没有停下。

他们在每一次报错中学会了看错误信息。在每一次逻辑混乱中学会了拆解问题。在每一次程序崩溃中学会了调试。在每一次算法卡壳中学会了换一种思路。他们不是天才——他们只是在2300多关的反复锤炼中,把"我不会"变成了"我试试",把"我试试"变成了"我可以"。

我们做CodeCombat这件事已经超过13年。从最初的50个关卡到今天的2300多关,从第一个用户到2000万学习者,我们始终相信一件事——编程不应该是痛苦的,学习可以像冒险一样让人上瘾。 而当一个人真的用游戏的方式走完了从零基础到算法的全部旅程,这份坚持和成长值得被一枚真正拿得出手的奖牌记录下来。

你的暗影地牢入口已经解锁。

打开网址:codecombat.cn,写下第一行代码

出发吧。我们在封神冰川的终点等你。


 

← 返回新闻列表 CodeCombat 新闻中心
← 返回 CodeCombat探索地图