【講座?】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を使うのがいいのかな…
大変わかりやすくためになる記事ありがとうございます!