计算机科学 3 第 8-13 关
COORD SYSTEM
🗺️

坐标计算与位置属性

Coordinate & Position

📍 位置属性
➕ 坐标运算
🌐

坐标系统 (Coordinate System)

游戏世界就像一张巨大的网格纸。

  • ➡️ X 轴:水平方向(马路)
    数值越大越往右
  • ⬆️ Y 轴:垂直方向(电梯)
    数值越大越往上
"原点 (0,0) 通常在地图的左下角。"
(0,0)
X
Y
📍

位置属性 (Position Property)

每个物体都有一个“地址”,叫做 pos

item = hero.findNearestItem()
if item:
  # 获取物品的 x 和 y
  hero.moveXY(item.pos.x, item.pos.y)

.pos.x:它的横坐标
.pos.y:它的纵坐标

"就像去朋友家,你需要知道具体的门牌号 (X, Y)。"
💎
item.pos
{x: 34, y: 56}
📐

修改坐标 (调整位置)

有时候我们需要微调位置,比如瞄准。

x = enemy.pos.x
y = enemy.pos.y - 4

y - 4:把位置往下移 4 格。
这是为了更精确地攻击!

👾
🧮

坐标运算魔法

你可以对坐标进行加减法:

  • 🔼 y + 5:向上移动
  • 🔽 y - 5:向下移动
  • ◀️ x - 3:向左移动
  • ▶️ x + 3:向右移动
# 预判敌人走位
new_x = current_x + 5
➕ ➖ ✖️ ➗
📏

相对位置 (Distance)

想知道两个物体离多远?用坐标相减!

# 水平距离
dx = hero.pos.x - enemy.pos.x

# 垂直距离
dy = hero.pos.y - enemy.pos.y
这在数学里叫“勾股定理”的基础。
🤠
👹
dx
dy
🎒

程序 1:物品收集专家

看到玩具捡起来!

while True:
  item = hero.findNearestItem()
  if item:
    # 走到物品的坐标
    hero.moveXY(item.pos.x, item.pos.y)

1. item.pos.x 获取横坐标
2. item.pos.y 获取纵坐标

🏃 ➡️ 🎁

精准定位

📢

程序 2:坐标报告员

把数字变成文字喊出来!

if enemy:
  x = enemy.pos.x
  y = enemy.pos.y - 4 # 调整
  # 字符串拼接
  hero.say(x + "," + y)
类型转换: 这里的 + 号会自动把数字变成字符串连接起来。
Example: "30,21"
🗣️ "30, 21!"
📜

导航员口诀

"pos 是地址,xy 竖要分清。"
"想要瞄得准,坐标算一算。
y - 4 往下移,百发百中!"
🌟