ヒット・アンド・フリーズ
■辺境の森林(無料21番目)
罠にはまった捕食者であっても危険な捕食者
【以下回答】
// トラップされたね。動かないで、痛い目にあうよ
// このファンクションは敵が攻撃範囲に居るか確認する.
function inAttackRange(enemy) {
var distance = hero.distanceTo(enemy);
// 殆どの剣にはアタックレンジが3ある
if (distance <= 3) {
return true;
} else {
return false;
}
}
// )手の届く所に居るオ-ガだけをアタック
while (true) {
// 一番近くの敵を探して変数に入れておく.
var target = hero.findNearestEnemy();
// 敵を引数として、 inAttackRange(enemy), を呼ぶ
// 変数 canAttack に結果を保管.
var canAttack = inAttackRange(target);
// canAttack に結果が収められていたら true, そして 攻撃!
if (canAttack){
hero.attack(target);
}
}
これ2日くらい考えたんですよ。
主に最後の『// canAttack に結果が収められていたら true, そして 攻撃!』というところ。
結局わからなくて、Javascriptでは回答が無いっぽいので、試しにPythonで回答を書かれている方のブログ?記事?があったので見に行ってきた。
何となくわかったので、Javascript版に書き換えてやっとクリア。
判らない原因はおそらくヒントがよくわからないのに加えて、この//以下の文章!
コードにtrueとか登場しないじゃん……結果が収められていたら、とか書くからわからないし、そもそも最初の変数指定をvar targetにしたのだって適当だぞ!?無理ゲー乙難易度インフェルノですかよ。
結果に収められていたら~のif(条件式)部分の条件式がcanAttackだけなのが納得いかないので、解説を探してきます。
私は、
if ( canAttack = true )だと思ってます。(=は==でもいいけれど)
でも違うのはわかります。それだと赤字訂正を求められました。
納得いかないけど!!