简介
使用不同颜色的标志来告诉你的英雄跑掉或cleave()。
之前,你用了距离(distanceTo)来做到只攻击附近的敌人,并用旗子来接近敌人。
现在,我们要做同样的事情,但我们用绿色的旗子来朝敌人移动(或从敌人那儿逃跑!),用黑色的旗子来让英雄使用'cleave'攻击。
这样,我们就可以把cleave攻击留给合适的时间,也就是当附近有很多敌人时。
小窍门:使用不带参数的cleave来就地使用cleave技能,而不是对准一个敌人来cleave。
Python是很棒的编程语言!它能让你快速完成工作,有效整合成体系。它易于阅读和使用,交互模式让简短代码的测试格外简单。此外,Python还是开源的。
方法
实际做事的就是方法!
self.moveRight()
方法是给计算机的命令。上面是调用方法的例子,这里具体是moveRight。
这是Tharin的方法之一。self说的是,你自己的单位的方法,而不是别人的。没有它,在哪找moveRight方法就不明确了。
方法后的括号意思不过是'运行它'。没有它们的话,什么都不会发生。
self.say("Hello!")
self.moveXY(5,6)
方法的参数被放到括号之间。参数指定了命令具体怎么做。这里,say()告诉英雄说点什么,而"Hello!"告诉他具体说的内容。(引号不能少,因为这是文本字符串,文本字符串必须要有引号。)
多个参数需要用逗号隔开。moveXY(5, 6)中,5是第一个参数(x坐标),6是第二个参数(y坐标)。 (数字不使用引号)
变量
让我们给事物取名字!
enemy=self.findNearestEnemy()
self.say(enemy)
taunt=("哈哈,你现在挂了!")
self.say(taunt)
deadEnemies=1
deadFriends=0
score=deadEnemies-deadFriends
变量是存储事物的简单方式。如上面的前两行,编码者通常将角色或对象存为变量,这样就能轻松将其用作函数参数了。经常使用的文本字符串也可以存到变量中,这会大幅减少重复输入的麻烦。最后三行给的是变量表示数值的例子。变量中存储的数值,之后可以用到方程中。当然,你也可以用这些变量来跟踪程序运行。
要创建变量,你需要键入变量名,等号,然后是要存储的信息。如果变量名含有多个单词,中间使用空格是不允许的,你可以将每个词的第一个字母大写,这样会便于阅读,例如: lowestHealthFriend比lowesthealthfriend更容易理解。这通常被称作驼峰式大小写。说到大小写,变量名中的大小写是有区分的。你在使用变量的过程中,一定要保持大小写固定不变。例如:
enemy=self.findNearestEnemy()
self.say(Enemy)
这段代码没法工作,因为"enemy"和"Enemy"不是相同的变量。按Shift时务必小心!
真和假
要想让if块执行,冒号前if条件的值必须为真。如果条件为假,else块就会执行(如果有else块的话)。Python中的几个假值如下:
- None
- False(布尔值)
- 0(整数)
- 0.0(浮点数)
- 0L(长整数)
- 0.0+0.0j(复数)
- "" (空字符串)
- ( )(空元组)
- { }(空字典)
其他的一切都为真:
- 所有对象
- 所有非空数组
- 所有非0数字(包括虚数)
- 所有非空字符串
- True(布尔值)
Python中的if和else语句
编程的目的就是为了自动处理各种情形。基于不同状态做不同事情的主要工具是if和else,用法像这样:
a=3
b=9
if(a>b):
self.say("数学出问题了!")
self.soundTheAlarm()
else:
self.say("数学还奏效。")
self.sleep()
本例中,if块中的代码不会执行(if语句和else语句之间的所有代码),因为3永远不会大于9。只有else块会被执行。
注意,if条件为真时要执行的语句都需要正好比if多缩进四个空格。这样计算机才能知道条件为真时要运行什么代码。
还要注意if语句后的冒号,冒号只出现在这里,告诉计算机要执行的判别完了,准备好执行判别后的指令。
通信尸体 解法
# 你可以使用旗子来选择不同的策略
# 在这关,绿色旗子代表你要移动到旗子处。
# 遇到黑旗就意味着你要劈开旗子
# 医生会在Red X医治你
while True:
green = hero.findFlag("green")
black = hero.findFlag("black")
nearest = hero.findNearestEnemy()
if green:
hero.pickUpFlag(green)
elif black and hero.isReady("cleave"):
hero.pickUpFlag(black)
# 劈斩!
hero.cleave(nearest)
elif nearest and hero.distanceTo(nearest) < 10:
# 攻击!
hero.attack(nearest)
pass
本攻略发于极客战记官方教学栏目,原文地址为:
https://codecombat.163.com/news/jikezhanji-tongxinshiti