コードモンキー日本公式サイト

コードモンキーの最新情報やプログラミング学習に有益な各種情報をお届けします。


コードモンキーサポートデスクに寄せられたユーザーからのご質問およびコードモンキーサポートデスクからの回答を紹介しております。
今回寄せられたご質問は、コードの冒険メインモード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

このコードで、星三つを獲得することができるようになります。


以上、ご案内いたします。いかがでしたでしょうか。また不明点などありましたらお気軽にお問い合わせください。

引き続きコードモンキーをお楽しみくださいませ。

コードモンキーサポート