CODECOMBAT_CPP_MODULE_02.EXE
LEVELS 8-13
🛰️

C++ 坐标与位置属性

Coordinates & Properties

.pos
对象位置属性
.x / .y
精确坐标运算

本节课关卡

扣哒世界 · 计算机科学3 · C++ · 第8–13关

C++ · 本节课关卡

08 · 概念挑战. 真炼金术

先读关卡目标,观察地图,再运用本课知识。

09 · 币屑

先读关卡目标,观察地图,再运用本课知识。

10 · 白兔

先读关卡目标,观察地图,再运用本课知识。

11 · 伪装者

先读关卡目标,观察地图,再运用本课知识。

12 · 概念挑战. 富有且安全

先读关卡目标,观察地图,再运用本课知识。

13 · 组合挑战. 风向校正

先读关卡目标,观察地图,再运用本课知识。

学习路线:读目标 → 看图解 → 写代码 → 运行检查

🌐

坐标系统 (Coordinate System)

CodeCombat 的地图是一个巨大的网格。每个点都由 (X, Y) 决定。

  • X 轴 (Horizontal):从左到右,数值变大。
  • Y 轴 (Vertical):从下到上,数值变大。
// 移动到具体坐标 (X=30, Y=40) hero.moveXY(30, 40);
(0,0)
📦

对象与属性 (Objects & Properties)

在 C++ 中,物品(Item)和敌人(Enemy)都是对象。对象里面存着数据,叫属性。

使用 点号 (.) 来访问属性:

auto item = hero.findNearestItem(); if (item) { // 访问 item 的 pos 属性 auto position = item.pos; // 访问 pos 里的 x 和 y hero.moveXY(position.x, position.y); }
item.pos.x
⬇️
pos: { x: 45, y: 32 }
💰

实战:币屑 (Coinucopia)

直接通过属性链访问坐标,快速移动收集金币!

提示:item.pos.x 就是金币的横坐标。
int main() { while (true) { auto item = hero.findNearestItem(); if (item) { // 直接读取 x 和 y auto ix = item.pos.x; auto iy = item.pos.y; hero.moveXY(ix, iy); } } return 0; }
🏃 💨 🪙

Follow the properties

🐇

变量存储坐标 (Variables)

在白兔和伪装者关卡中,我们可以先把坐标存在变量里,方便多次使用。

auto item = hero.findNearestItem(); if (item) { auto pos = item.pos; // 存下位置对象 float x = pos.x; // 提取 X float y = pos.y; // 提取 Y hero.moveXY(x, y); }
📦 = 📍
(把位置存进盒子里)
🎯

坐标运算:风向校正

有时候直接瞄准是不够的!我们需要预判或者修正位置。

在风向校正关卡中,大炮需要瞄准敌人下方一点点。

if (enemy) { // 获取敌人位置,但 Y 轴减去 4 float aimY = enemy.pos.y - 4; auto aimX = enemy.pos.x; // 报告坐标:数字会自动转文字拼接 hero.say(aimX + "," + aimY); }
👹
y - 4
📝

总结 (Recap)

访问属性:
object.pos.x (横坐标)
object.pos.y (纵坐标)
坐标修正:
y - 4 (向下移)
x + 10 (向右移)
字符串报告:
hero.say(x + "," + y);
🌟

我的知识宝藏 · 一页复习

扣哒世界 · 计算机科学3 · C++ · 第8–13关

C++ · 知识点图
关键字方法 / 函数字符串数字

坐标系统

位置用横坐标 x、纵坐标 y 表示;目标坐标表示地点,不是要走的步数。

hero.moveXY(30, 40);

对象与属性

在 C++ 中,物品(Item)和敌人(Enemy)都是对象。对象里面存着数据,叫属性。

auto item = hero.findNearestItem();

实战:币屑

直接通过属性链访问坐标,快速移动收集金币!

auto item = hero.findNearestItem();

变量存储坐标

在白兔和伪装者关卡中,我们可以先把坐标存在变量里,方便多次使用。

auto item = hero.findNearestItem();

坐标运算:风向校正

有时候直接瞄准是不够的!我们需要预判或者修正位置。

hero.say(aimX + "," + aimY);

本节课关卡:8. 概念挑战. 真炼金术;9. 币屑;10. 白兔;11. 伪装者;12. 概念挑战. 富有且安全;13. 组合挑战. 风向校正