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

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


コードモンキーサポートデスクに寄せられたユーザーからのご質問およびコードモンキーサポートデスクからの回答を紹介しております。
今回寄せられたご質問は、コードの冒険のステージ90-100あたりで使う関数collect()とsafeCollect()の使い方について。


ユーザー様からのご質問

チャレンジNo. 100などの、safeCollect()とcollect()の使い方がよくわかりません。

サポートデスクからの回答

いつもコードモンキーをご利用いただきありがとうございます。
いただいたご質問につき回答いたします。

コードの冒険の中で出てくる”collect”や”safeCollect”は、プログラミングにおける「関数」というものです。そしてそれらの関数は自分で定義して使うことができます。

たとえば、チャレンジNo.100で、以下のようにchase関数とcollect関数を定義し、for文の中で実行してみましょう

#chase関数の定義
chase = (m) ->
    until near m
        turnTo m
        step 1

#collect関数の定義
collect = (x)->
    chase x
    grab()
    chase pile
    drop()

for m in matches
    #collect関数の呼び出し
    collect m

—–

上のコードをお試しいただくと、猫に追いかけられてしまうことがわかるとおもいます。

そこで、以下のように、until cat.sleeping() を利用して、「猫が寝るまで待つ」というコードをcollect関数内に加えてみます。

—-

#chase関数の定義
chase = (m) ->
    until near m
        turnTo m
        step 1

#猫を待つ機能を加えたcollect関数の定義
collect = (x) ->
    #猫が寝るまで待つ
    until cat.sleeping()
        wait()
    chase x
    grab()
    chase pile
    drop()

# for文の中でcollectを呼び出し
for m in matches
    collect m

—-

このコードなら、猫においかけられることなく、「安全に」マッチをとりにいくことができるはずです。

CodeMonkeyのコードの冒険では、以上2つの例のcollect関数のうち、前者がcollectという名前で登場(チャレンジNo.97など)し、後者のuntil cat.sleeping()を加えた安全な方の関数が”safeCollect”という名前で登場しています(チャレンジNo.99など)。
これが、ゲーム中で出てくるcollect とsafeCollectという2つの関数の違いになります。

以上、参考になりましたら幸いです。
引き続きコードモンキーをお楽しみくださいませ。

コードモンキーサポート