【講座?】CoRを触ってみる11~多次元配列編~【自分用メモ?】

投稿者:Material 185033 3 mini 光楼(114) 投稿日:2017/03/20 13:13

【講座?】CoRを触ってみる10~配列編~【自分用メモ?】←前回

Switchを入手しすっかりゼルダにはまってしまいました。

色々HTML化されたことでスマホでも見られるようになっていることに今更気付きました。

#このブログの情報は2017年3月20日現在のものです。今後変更になる可能性があります。

多次元配列の作り方

多次元配列というか、配列の配列ですけどね。

以下はRmakeで多次元配列を作った例です。
arr = createArray()
arr[0] = createArray()

arr[0][0] = 0
  arr[0][1] = 1
  arr[0][2] = 2
arr[1] = 10
arr[2] = 20

これをCoRではどう書くか。
↓こうです↓
arr = [[0, 1, 2], 10, 20]

う~ん短いっ!

もうちょっと見やすくしてみましょうか。
arr = [
  [0, 1, 2],
  10,
  20
]

多次元配列を定義するときはこのように字下げすると見やすくなります。

このように、多次元配列を作るには[]を増やせばいいんです。
三次元、四次元も同じやり方です。

注意点

arr = [
  [0, 1, 2],
  10,
  20
]

result = arr.include?(2)

debug_log "arr → #{arr}"
debug_log "result → #{result}"

上記ソースは配列arrの中から2という値を探し、debug_logで結果を表示させています。

しかし実行してみると結果はfalseです。何故でしょうか?

答えは次元が違うからです。

上記の書き方では10や20は探してくれても、0や1、2は探してくれません。
次元の壁って、大きいですね。

では0や1、2を探したい場合はどうするのか。
こうです↓
arr = [
  [0, 1, 2],
  10,
  20
]

result = arr[0].include?(2)

debug_log "arr → #{arr}"
debug_log "result → #{result}"

ちゃんとtrueが返ってきましたね。
場所を指定してあげることが大切です。

注意するべきなのはinclude?メソッドだけではありません!
他のメソッドを使うときも要注意です。

てかRmakeで多次元配列に対してgetArrayLength関数とかを使った人なら分かるはず!


実はこんな書き方も出来る。
arr = [[], [], []]

arr[0][0] = 0
  arr[0][1] = 1
  arr[0][2] = 2
arr[1][0] = 10
  arr[1][2] = 12
arr[2][0] = 20
  arr[2][1] = 21
  arr[2][2] = 22

debug_log "arr → #{arr}"

最初に空っぽの多次元配列を作り後から値を入れていく方法。

しかし空っぽの配列を作ること自体ドキュメントには書いてないので動作は保証しない。

練習問題

以下の配列定義を今回説明した方法に書き換えなさい。
scene 'start' do #シーンstart
  arr = createArray()
  arr[0] = createArray()
  arr[1] = createArray()
  arr[2] = createArray()
  arr[2][1] = createArray()

  arr[0][0] = 0
    arr[0][1] = 1
    arr[0][2] = 2
    arr[0][3] = 3
  arr[1][0] = 10
    arr[1][3] = 13
  arr[2][0] = 20
    arr[2][1][0] = 21
      arr[2][1][1] = 21.1
      arr[2][1][2] = 21.2
    arr[2][2] = 22
end

start_scene "start"


次回→【講座?】CoRを触ってみる12~演算子編~【自分用メモ?】

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Cdv30200 aoi icon mini aoihikawa(投稿日:2017/03/20 23:25, 履歴)
いろいろな設定方法が
可能なのですね
Material 185033 3 mini 光楼(114)(投稿日:2017/04/02 09:21, 履歴)
コメントありがとうございます。
書き方が増えたことによって、今までよりも見やすく書けるようになりました!