CS3 计算机科学 3 | 第 47-55 关
X: 0, Y: 0
🚀

方向与坐标变化

Direction & Coordinate Changes

🗺️ 坐标导航
📐 相对运动
🌐

坐标系:宇宙地图

游戏世界是一张巨大的网格地图。

  • ➡️ X 坐标:横向地址 (Left - Right)
  • ⬆️ Y 坐标:纵向地址 (Up - Down)
hero.moveXY(30, 40)
"X=30, Y=40,就像宇宙中的导航坐标!"
(0,0)
X
Y
🚀
🕹️

方向控制台

移动就像在做加减法:

方向X 变化Y 变化
⬆️ 上不变+ 增加
⬇️ 下不变- 减少
➡️ 右+ 增加不变
⬅️ 左- 减少不变
# 向右上方飞
hero.moveXY(hero.pos.x + 10, hero.pos.y + 10)
🛸
📉

实战 I:斜线飞行

同时改变 X 和 Y,就能走出斜线!

while True:
  # 向左上飞: X减, Y加
  newX = hero.pos.x - 6
  newY = hero.pos.y + 4
  hero.moveXY(newX, newY)

轨迹:↖️ 左上角

🚀
📡

实战 II:垂直追踪

根据敌人的高度 (Y坐标) 来调整自己的位置。

if enemy.pos.y > hero.pos.y:
  # 敌人在上,我也向上
  hero.moveXY(x, y + 4)
else:
  # 敌人在下,我也向下
  hero.moveXY(x, y - 4)
"就像电梯一样,跟着目标上下移动。"
🛸
👾
🧭

相对位置判断

比较坐标大小,就能知道方位:

  • 👉 enemy.x > hero.x : 敌人在
  • 👈 enemy.x < hero.x : 敌人在
  • 👆 enemy.y > hero.y : 敌人在
  • 👇 enemy.y < hero.y : 敌人在
(x>, y>)
📏

距离计算 (Math)

虽然有 distanceTo(),但用坐标差也能算距离。

# 水平距离 (绝对值)
dist_x = abs(enemy.pos.x - hero.pos.x)

# 垂直距离
dist_y = abs(enemy.pos.y - hero.pos.y)
"abs() 是绝对值函数,把负数变正数。"
🚀
dist_x
👾
🎓

导航员口诀

"X 是左右,Y 是上下,
加减运算能搬家。"
"大于小于判方位,
精准导航靠数学!"
🌟