ヒット・アンド・フリーズ

■辺境の森林(無料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 )だと思ってます。(=は==でもいいけれど)

でも違うのはわかります。それだと赤字訂正を求められました。

納得いかないけど!!

いいなと思ったら応援しよう!