目录
一、前言
前面一直在努力学习,学习了codecombat
新一期的计算机科学课程,涉及到了许多其他的东西。以前的移动函数有5个,但是复赛就1个;以前的攻击函数只有1个,但是复赛有2个。
关卡也比原来多了,学习的东西自然不同。
下面是具体的闯关过程及源代码。
二、具体闯关流程(1~23)
第一关
# 在标记上建造两段围栏来保护村民。
# 把鼠标悬停在地图上,以得到X,Y坐标。
hero.buildXY("fence", 40, 52)
hero.buildXY("fence", 40, 20)
第二关
# 到小路的尽头去,并在那儿修一个栅栏。
# 利用你的 moveXY(x, y)坐标移动功能。
hero.moveXY(36, 60)
hero.moveXY(37, 13)
hero.buildXY("fence", 72, 25)
第三关
# 英雄完全糊涂了!
# 纠正路径,别让其踩到地雷。
hero.moveXY(11,37)
hero.moveXY(35, 25)
hero.moveXY(40, 56)
hero.moveXY(77, 58)
第四关
# 区域内有一名猎头者!
# 在森林附近跑动,以躲避他的视线
while True:
# 用 moveXY 在森林中保持移动,以确保存活。
# 不要忘记缩进。
hero.moveXY(56, 44)
hero.moveXY(40, 56)
hero.moveXY(24, 44)
hero.moveXY(24, 24)
hero.moveXY(40, 12)
hero.moveXY(56, 24)
第五关
# 通过林地,务必留意危险!
# 这些森林小屋中可能有食人魔!
hero.moveXY(19, 33)
enemy = hero.findNearestEnemy()
# if语句会检查某变量有没有食人魔。
if enemy:
hero.attack(enemy)
hero.attack(enemy)
hero.moveXY(49, 51)
enemy = hero.findNearestEnemy()
if enemy:
# 在这里攻击敌人:
hero.attack(enemy)
hero.attack(enemy)
# `pass`语句是占位符,不做任何事情,它只帮助结束if语句。
pass
hero.moveXY(58, 14)
enemy = hero.findNearestEnemy()
# 使用if语句检查敌人是否存在:
if enemy:
# 如果敌人存在,就攻击它:
hero.attack(enemy)
hero.attack(enemy)
第六关
# 记得敌人可能还不存在。
while True:
enemy = hero.findNearestEnemy()
if enemy:
# 如果有敌人,攻击它!
hero.attack(enemy)
hero.attack(enemy)
pass
第七关
# 记得敌人可能还不存在。
while True:
enemy = hero.findNearestEnemy()
# 如果有敌人,攻击它!
if enemy:
hero.attack(enemy)
hero.attack(enemy)
第八关
# 在食人魔的营地中打败它们!
while True:
enemy = hero.findNearestEnemy()
# 使用一个 “if” 语句去检查是否有敌人存在:
if enemy:
# 攻击敌人,如果存在的话:
hero.attack(enemy)
hero.attack(enemy)
第九关
# 在村口巡逻。
# 如果发现敌人,就攻击它。
while True:
hero.moveXY(35, 34)
leftEnemy = hero.findNearestEnemy()
if leftEnemy:
hero.attack(leftEnemy)
hero.attack(leftEnemy)
# 现在移动到右侧入口。
hero.moveXY(60, 31)
# 再次使用findNearestEnemy,来找到右侧的敌人。
enemy = hero.findNearestEnemy()
if enemy:
hero.attack(enemy)
hero.attack(enemy)
# 如果有右侧的敌人,使用"if"来攻击。
hero.moveXY(35, 34)
第十关
# 在村口巡逻。
# 当你见到食人魔时,建造一个火焰陷阱"fire-trap"。
# 不要让任何农民受到误伤。
while True:
hero.moveXY(43, 50)
top = hero.findNearestEnemy()
if top:
hero.buildXY("fire-trap", 43, 50)
hero.moveXY(25, 34)
left = hero.findNearestEnemy()
# 检查`left`是否存在。
top = hero.findNearestEnemy()
if top:
hero.buildXY("fire-trap", 25, 35)
top = hero.findNearestEnemy()
if top:
hero.buildXY("fire-trap", 43,20 )
hero.moveXY(25, 34)
left = hero.findNearestEnemy()
if left:
# 在25,34处建造一个陷阱,如果敌人存在的话。
hero.buildXY("fire-trap", 25, 34)
hero.moveXY(43, 20)
# 为下面的敌人设置一个变量。
enemy = hero.findNearestEnemy()
# 检查下面是否有敌人存在。
if enemy:
# 在43,20处建造一个陷阱,如果敌人存在的话。
hero.buildXY("fire-trap", 43, 20)
第十一关
# 待在中间防守!
while True:
enemy = hero.findNearestEnemy()
if enemy:
# 亦或主动出击…
hero.attack(enemy)
hero.attack(enemy