边地投弹 (Border Bombardment)
战术思路分析:精准定位
火炮瞄准食人魔需要它精确的坐标。敌人(和你的英雄)都有一个名为 `pos` 的**位置属性**,它本身又包含两个子属性:`x` (水平位置) 和 `y` (垂直位置)。
坐标连接复习
你需要将 `x` 和 `y` 坐标连接起来,中间用逗号 (`,`) 分隔,然后说出(Say)命令给火炮。
例如:`hero.say(enemy.pos.x + "," + enemy.pos.y)`
enemy.pos.x
enemy.pos.y
"X,Y" String
Python 程序解法
叫阵 (The Challenge)
战术思路分析:逻辑开关
英雄的嘲讽只有在 `if` 语句为 **True(真)** 时才会生效!
核心概念:等于运算符 (`==`)
**注意:** 赋值用单等号 (`=`),判断是否相等用双等号 (`==`)。
`if` 语句只有在条件 `A == B` 成立(结果为 True)时,才会执行代码块。我们的任务是修正条件,让其永远为 True。
IF (condition == True):
Say("Taunt!")
True = Action!
Python 程序解法
濒危树瘤之战 (Endangered Burl)
战术思路分析:目标分类
战场上的单位多种多样:友好的**树瘤(burl)**,弱小的**矮人(munchkin)**,远程的**投矛手(thrower)**,以及危险的**食人魔(ogre)**。你需要根据它们的**类型(type)**决定行动。
类型属性 (`.type`)
所有单位都有一个 `.type` 属性,它返回一个**字符串**(例如 `"thrower"`)。
通过 `if enemy.type == "munchkin":` 这样的语句,你可以为每种敌人编写专属战术。
Python 程序解法
嘲弄 (Taunt)
战术思路分析:函数化决策
矮人(munchkin)很弱,可以直接攻击;而斗士(brawler)很强,需要用嘲讽吸引到陷阱里。
函数内部分支 (`def dealEnemy(enemy):`)
本关卡将决策逻辑封装在一个函数 `dealEnemy(enemy)` 中,这样主循环只需找到敌人并调用这个函数,代码结构更清晰。
- `if enemy.type == "munchkin"`: **Attack**
- `if enemy.type == "brawler"`: **Say** (嘲讽)
dealEnemy(target)
→ Check Target.type
Python 程序解法
概念挑战. 错误的类型 (Wrong Type)
战术思路分析:目标过滤
战场上鱼龙混杂,`findNearestEnemy()` 可能会把**农民**、**骷髅**等不该打的单位也找出来。我们的任务是只攻击类型为 `"munchkin"` 的敌人。
嵌套条件 (`if` 内部的 `if`)
我们使用两个连续的 `if` 语句来层层筛选:
1. `if enemy:` (确保找到了目标)
2. `if enemy.type == "munchkin":` (确保目标是矮人)
只有当两个条件都为 True 时,`hero.attack(enemy)` 才会执行。
Find Target
↓
IF Exists?
↓
IF Type == "Munchkin"?
↓
Attack!