【講座?】CoRを触ってみる10~配列編~【自分用メモ?】
投稿者: 光楼(114) 投稿日:2017/03/12 14:42
【講座?】CoRを触ってみる09~モーション編~【自分用メモ?】←前回
Switch、Joshin webで注文出来たw
#このブログの情報は2017年3月12日現在のものです。今後変更になる可能性があります。
配列の生成
Rmakeでは
と書いてましたがCoRではどうなのか気になるところですね。
↓こうです↓
配列を作りつつ、データを格納できるようになりました。やったね!
ちゃんと作れているか確認してみましょう!
見た瞬間配列だと分かるようになってますね!
値もしっかり入っています。
あ、因みにRmakeと同じようにcreateArray()とかが使えるんですよ。
他
最後尾を削除して、その消した値を返します(変数に入れます)。
動作例
RmakeのpushArray()と同じ動作。
でも良いし、
でも良い。
動作例
上の例では配列arrに1という値があるかどうかを調べています。
あればtrue、無ければfalseが返ります。
どこにあるかって?闇の中です。
簡単なので説明を省きます。ドキュメントを読んで下さい。_(._.)_
配列の要素数(入っている値の数)分ループします。
動作例
このように、一番最初のループでは配列の一番最初の値(a[0])が、2回目のループでは2番目の値(a[1])がitemに入っています。
動作例
これも配列の全ての要素に対して処理されます。
上の例は、配列aを2で割り(item/2)、generated_arrに配列として格納しています。
returnを書かないのでちょっと難しく感じるけど、割と簡単なこと。
簡単に言うと検索。
調べられるのは最初に見つかった1個だけ。
しかも場所じゃなくて要素を返してくる変わり者です。
動作例
この例では、配列aのなかで5より大きい数は?と聞いています。
するとこの子は1つだけ教えてくれるので、「8だよ!」って教えてくれます。
可愛いですね!
なので戻り値は配列になります。
動作例
今回も5より大きい数を聞いてみました。
するとご覧の通り、「8、10、15、20です!」と、全てを教えてくれました。
大人ですね!
昇順(小さい順)に並び替えてくれます。
動作例
因みに、降順(大きい順)にすることも出来ます。
配列については以上です。
多次元配列はまた今度。
それではまた!
おまけ
配列の値が3の倍数の時アホになるプログラム
※3の付く数字の時の条件はありません!
次回→【講座?】CoRを触ってみる11~多次元配列編~【自分用メモ?】
ツイート
Switch、Joshin webで注文出来たw
#このブログの情報は2017年3月12日現在のものです。今後変更になる可能性があります。
配列の生成
Rmakeでは
a = createArray() a[0] = 5 a[1] = 8 a[2] = 10
と書いてましたがCoRではどうなのか気になるところですね。
↓こうです↓
a = [5, 8, 10]
配列を作りつつ、データを格納できるようになりました。やったね!
ちゃんと作れているか確認してみましょう!
scene 'start' do #シーンstart #変数定義 a = [5, 8, 10] debug_log "a → #{a}" end #シーンスタート start_scene "start" |
見た瞬間配列だと分かるようになってますね!
値もしっかり入っています。
あ、因みにRmakeと同じようにcreateArray()とかが使えるんですよ。
他
- popメソッド
最後尾を削除して、その消した値を返します(変数に入れます)。
変数 = 配列.pop
動作例
scene 'start' do #シーンstart #変数定義 a = [5, 8, 10] last_value = a.pop debug_log "a → #{a}\n last_value → #{last_value}" end #シーンスタート start_scene "start" |
- pushメソッド
RmakeのpushArray()と同じ動作。
配列.push(追加したい値)
でも良いし、
配列 << 追加したい値
でも良い。
動作例
scene 'start' do #シーンstart #変数定義 a = [5, 8, 10] a.push(15) a << 20 debug_log "a → #{a}" end #シーンスタート start_scene "start" |
- include?メソッド
result = arr.include?(1)
上の例では配列arrに1という値があるかどうかを調べています。
あればtrue、無ければfalseが返ります。
どこにあるかって?闇の中です。
- 比較
簡単なので説明を省きます。ドキュメントを読んで下さい。_(._.)_
- eachメソッド
配列の要素数(入っている値の数)分ループします。
動作例
scene 'start' do #シーンstart #変数定義 a = [5, 8, 10] i = 0 a.each do |item| debug_log "#{i = i + 1}回目のループ\n item → #{item}" end end #シーンスタート start_scene "start" |
このように、一番最初のループでは配列の一番最初の値(a[0])が、2回目のループでは2番目の値(a[1])がitemに入っています。
- mapメソッド
戻り値を格納する配列 = 配列.map do |item| 要素に対する処理 end
動作例
scene 'start' do #シーンstart #変数定義 a = [5, 8, 10, 15, 20] generated_arr = a.map do |item| item / 2 end debug_log "a → #{a}\n generated_arr → #{generated_arr}" end #シーンスタート start_scene "start" |
これも配列の全ての要素に対して処理されます。
上の例は、配列aを2で割り(item/2)、generated_arrに配列として格納しています。
returnを書かないのでちょっと難しく感じるけど、割と簡単なこと。
- findメソッド
簡単に言うと検索。
調べられるのは最初に見つかった1個だけ。
しかも場所じゃなくて要素を返してくる変わり者です。
戻り値を格納する変数 = 配列.find do |item| 検索条件 end
動作例
scene 'start' do #シーンstart #変数定義 a = [5, 8, 10, 15, 20] result = a.find do |item| item > 5 end debug_log "a → #{a}\n item>5 → #{result}" end #シーンスタート start_scene "start" |
この例では、配列aのなかで5より大きい数は?と聞いています。
するとこの子は1つだけ教えてくれるので、「8だよ!」って教えてくれます。
可愛いですね!
- find_allメソッド
なので戻り値は配列になります。
戻り値を格納する変数 = 配列.find_all do |item| 検索条件 end
動作例
scene 'start' do #シーンstart #変数定義 a = [5, 8, 10, 15, 20] result = a.find_all do |item| item > 5 end debug_log "a → #{a}\n item>5 → #{result}" end #シーンスタート start_scene "start" |
今回も5より大きい数を聞いてみました。
するとご覧の通り、「8、10、15、20です!」と、全てを教えてくれました。
大人ですね!
- sortメソッド
昇順(小さい順)に並び替えてくれます。
ソートした配列格納用変数 = 配列.sort
動作例
scene 'start' do #シーンstart #変数定義 a = [15, 8, 10, 2, -6] b = a.sort debug_log "a → #{a}\n b → #{b}" end #シーンスタート start_scene "start" |
因みに、降順(大きい順)にすることも出来ます。
ソートした配列格納用変数 = 配列.sort do |a, b| b <=> a end
配列については以上です。
多次元配列はまた今度。
それではまた!
おまけ
配列の値が3の倍数の時アホになるプログラム
※3の付く数字の時の条件はありません!
scene 'start' do #シーンstart #変数定義 text_sprite = nil text_sprite2 = nil arr = [] 40.times do |i| #40回ループ arr.push(i + 1) #1~40の数を配列arrに追加 end debug_log "arr → #{arr}" create do #シーン初期化 #テキストスプライト用意 text_sprite = put_text 'Text' do position 450 / 2, 50 text '3の倍数でアホになる' end text_sprite2 = put_text 'Text' do position 450 / 2, 100 end end update do #メインループ wait_time(2000) #2000ミリ秒待つ #配列内探索ループ arr.each do |item| text_sprite.text "#{item}" #数字表示 if item % 3 == 0 #itemが3の倍数か text_sprite2.text "( ゚∀゚)" #アホになる else text_sprite2.text "(^_^)" #普通 end wait_time(1000) #1000ミリ秒待つ end game_clear #ゲームクリア end end #シーンスタート start_scene "start" #テキストスプライトを定義 text 'Text' do origin :center font_size 40 color '#b0ff5a' end
次回→【講座?】CoRを触ってみる11~多次元配列編~【自分用メモ?】
コメントする
コメントするには、ログインする必要があります。
よく使う処理がひとまとめでできるようになってる!
incrudeはあるかないかだけを教えてインデックスは返らない、
find関係の返り値はインデックスじゃなくて要素、なるほど。
場所が欲しい場合はeachを使うのがいいのかな…
大変わかりやすくためになる記事ありがとうございます!