强壮的沙牦牛 (Strong Yak)
战术思路分析:相对躲避
沙漠里的牦牛太强壮了,不能硬碰硬。当它靠近时,我们必须**相对于当前位置**向右移动 10 米来躲避。
关键:获取并修改 X 坐标
1. 获取当前 X:`x = hero.pos.x`
2. 计算新 X:`x = x + 10` (或简写为 `x += 10`)
3. 移动到新坐标:`hero.moveXY(x, y)` (Y 保持不变)
Current X + 10
Move to safety!
Python 程序解法
绿洲 (The Oasis)
战术思路分析:动态平移
英雄默认要向右边的绿洲前进 (`x + 10`)。但如果牦牛太近,必须反向移动 (`x - 10`) 来躲避。
关键:If/Else 切换方向
- `if 牦牛靠近`: `x -= 10` (向左)
- `else`: `x += 10` (向右,前进)
**注意:** 移动动作 `hero.moveXY(x, y)` 放在 `if` 和 `else` 的代码块内执行。
IF Danger: X - 10
ELSE: X + 10
Python 程序解法
Sarven路 (Sarven Road)
战术思路分析:对角线移动
除非有敌人(食人魔侦察兵),否则英雄必须沿着对角线(右上)前进。
同时增加 X 和 Y
同时增加 X 和 Y 坐标,就能实现对角线移动:
`hero.moveXY(hero.pos.x + 5, hero.pos.y + 5)`
X' = X + 5
Y' = Y + 5
Python 程序解法
概念挑战. 干燥灌溉 (Dry Irrigation)
战术思路分析:左上斜移
你需要沿着左上方的斜线前进。这意味着 X 坐标要**减少**,Y 坐标要**增加**。
位移量: X-6, Y+4
注意,可以直接在 `moveXY` 的参数中进行算术运算,无需先将 `hero.pos.x` 存入变量。
X' = X - 6
Y' = Y + 4
Python 程序解法
Sarven间隙 (Sarven Gap)
战术思路分析:相对建造
英雄向下前进 (`y - 10`)。如果看到敌人,必须在敌人的**左侧 20 米处**建造围栏,阻止它前进。
关键:敌人的相对 X
我们使用敌人的 X 坐标作为基准:
`x = enemy.pos.x - 20`
`y = enemy.pos.y`
这样,无论敌人在哪,围栏都会精确地出现在它的左边。
Build At X = Enemy.X - 20
Python 程序解法
十字路口 (The Crossroads)
战术思路分析:四向定位
食人魔从东南西北四个方向进攻。英雄必须通过比较自身和敌人的坐标来确定它们的来向,并在正确的 X 标记处放置陷阱。
关键:判断方向
- 左边来:`enemy.pos.x < hero.pos.x`
- 右边来:`enemy.pos.x > hero.pos.x`
- 下方来:`enemy.pos.y < hero.pos.y`
- 上方来:`enemy.pos.y > hero.pos.y`
IF X
Python 程序解法
截断 (Interception)
战术思路分析:中点保护
你是保护农民的守卫,必须站在农民和敌人之间最完美的中点位置。这需要使用**求中点公式**。
关键公式:中点坐标
X 坐标:`X = (A.x + B.x) / 2`
Y 坐标:`Y = (A.y + B.y) / 2`
X = (Friend.X + Enemy.X) / 2
Y = (Friend.Y + Enemy.Y) / 2
Python 程序解法
雷蹄 (Hoofing It)
战术思路分析:上下拦截
牦牛随机从上方或下方来袭。你需要比较 `yak.pos.y` 和 `hero.pos.y`,来决定在牦牛的上方还是下方建造围栏,引导它们走向水坑。
Y 轴比较逻辑
- `if yak.pos.y > hero.pos.y`: 牦牛在**上方** → 围栏建在 `yak.pos.y - 10` (牦牛的**下方**)
- `else`: 牦牛在**下方** → 围栏建在 `yak.pos.y + 10` (牦牛的**上方**)
Yak.Y > Hero.Y ?
Build Y = Yak.Y - 10
Python 程序解法
概念挑战. 友好的雷区 (Friendly Mines)
战术思路分析:Y轴避险
食人魔被困在上下方的雷区中,你可以利用它们的位置来引导自己安全通过。英雄必须一直向右走,但需要根据敌人的垂直位置上下微调。
相对 Y 轴移动
- `if enemy.pos.y > hero.pos.y`: 敌人在**上面** → 英雄向上微调 (`y + 4`)
- `else`: 敌人在**下面** → 英雄向下微调 (`y - 4`)
**关键:** X 轴的移动 (`x + 12`) 必须在每次循环的最后执行。
IF Enemy.Y > Hero.Y: Y += 4
ELSE: Y -= 4
Move X += 12