
[Q & A] チャレンジNo.69の解説。まずはFOR文を使わずにコーディングしてみよう。
投稿日: 2018年5月8日
コードモンキーサポートデスクに寄せられたユーザーからのご質問およびコードモンキーサポートデスクからの回答を紹介しております。
今回寄せられたご質問は、コードの冒険メインモードNo.69の解き方について
コードの冒険メインモードNo.69の解き方について解説してください。解答例のコードをみてもよくわかりません。
いつもコードモンキーをご利用いただきありがとうございます。
いただいたご質問につき回答いたします。
コードの冒険メインモードNo.69は少し難しいステージで、つまづく方が多いステージです。このステージのバナナをすべて獲得するにはcrocodilesとraftを利用してすべてのバナナをとりに行くコードを書く必要があり、また、星三つを獲得するにはFOR文を2つ使う必要があります。しかし、このステージは少し難しいので、まずはFORを使わないコードですべてのバナナを獲得することを考えてみましょう。
まずは解き方を考える
ステージの構造を観察するとわかるように、このステージでは、crocodiles[0]- crocodiles[3]までの4匹のワニを橋のように利用することですべてのバナナを獲得することができます。プレイ開始の時点では、ワニはそれぞれバラバラの方向を向いているので、まずは、ワニにモンタの方を向いてもらって、モンタがワニの上を渡ることができるようにする必要があります。すべてのワニ(crocodiles[0]- crocodiles[3])にモンタの方を向いてもらうには、以下のようなコードが必要になります。
crocodiles[0].turnTo monkey crocodiles[1].turnTo monkey crocodiles[2].turnTo monkey crocodiles[3].turnTo monkey
以上のコードで、すべてのワニにモンタの方向を向かせることができ、以下のような状態になります。
上の状態になれば、あとはワニを橋のように使ってバナナをとりに行って、いかだ(raft)に戻って、また次のバナナをとりに行く、ということを繰り返せばすべてのバナナを獲得することができます。
さきほどのコードに、すべてのバナナ(bananas)を取りに行くコードを加えてみましょう
crocodiles[0].turnTo monkey crocodiles[1].turnTo monkey crocodiles[2].turnTo monkey crocodiles[3].turnTo monkey #bananas[0]を取りに行く turnTo bananas[0] step distanceTo bananas[0] turnTo raft step distanceTo raft #bananas[1]を獲りに行く turnTo bananas[1] step distanceTo bananas[1] turnTo raft step distanceTo raft #bananas[2]を取りに行く turnTo bananas[2] step distanceTo bananas[2] turnTo raft step distanceTo raft #bananas[3]を獲りに行く turnTo bananas[3] step distanceTo bananas[3] turnTo raft step distanceTo raft
これで、ワニ(crocodiles)を橋のように使ってすべてのバナナ(bananas)を獲得することができます。
しかし、このコードでは星3つを獲得することができません。星3つを獲得するには、FOR文を2個使ってコードを書く必要があります。
FOR文を使う
星三つを獲得するために、さきほどのコードをFOR文を使って書き直してみましょう。複数のワニ(crocodiles)、複数のバナナ(bananas)がでてきているので、ステージ68以前にも出てきた”for c in crocodiles”、”for b in bananas”というコードが使えそうですね。これを使ってさきほどのコードを書き換えると以下のようになります。
#すべてのcrocodilesにmonkeyの方を向かせる for c in crocodiles c.turnTo monkey #すべてのbananasを取りに行く for b in bananas turnTo b step distanceTo b turnTo raft step distanceTo raft
このコードで、星三つを獲得することができるようになります。
以上、ご案内いたします。いかがでしたでしょうか。また不明点などありましたらお気軽にお問い合わせください。
引き続きコードモンキーをお楽しみくださいませ。
コードモンキーサポート