2次元配列の基礎
CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 12/78。
2次元配列は、テーブルやゲームマップのタイルのように、行と列に値を格納します。GDScriptでは、2次元配列は要素が配列である配列です。各内側の配列が1行に相当します。
var level := [
[1, 1, 1, 1],
[1, 0, 2, 1],
[1, 1, 1, 1]
]このマップでは、0は床、1は壁、2はコインです。1行ずつ書くとグリッドが読みやすくなります。また、GDScriptではリテラル全体を1行で書くこともできます。
print()は2次元配列を1行で表示し、各行はそれぞれ独自の角括弧で囲まれます:
print(level)[[1, 1, 1, 1], [1, 0, 2, 1], [1, 1, 1, 1]]外側の配列に対するsize()は、行数を数えます。level[0]は最初の行で、通常の配列なので、level[0].size()は列数を数えます。
print(level.size()) # 3行
print(level[0].size()) # 4列外側の配列に対するforループでは、1回の反復ごとに1行が得られます。
for row in level:
print(row)[1, 1, 1, 1]
[1, 0, 2, 1]
[1, 1, 1, 1]セルはどの型でもかまいません。[["X", "O"], ["O", "X"]]は文字列のグリッドです。空の配列から始めて、行全体をappend()することもできます。
var board := []
board.append(["X", "O", "X"])
board.append(["O", "X", "O"])
print(board.size()) # 2チャレンジ
簡単小さなダンジョンのマップを作成します。次の4行をこの順序で持つ、levelという名前の2次元配列を作成してください。
1 1 1 1 1
1 0 2 0 1
1 0 1 3 1
1 1 1 1 1各行は5つの数値からなる配列です。次に、指定されたループで各行を出力する前に、size()を使って行数と列数を出力してください。出力は次のとおりです。
Rows: 4
Columns: 5
[1, 1, 1, 1, 1]
[1, 0, 2, 0, 1]
[1, 0, 1, 3, 1]
[1, 1, 1, 1, 1]自分で試してみよう
extends Node
func _ready():
# [] をダンジョンのマップに置き換えてください
var level := []
# ここで行数と列数を出力してください
for row in level:
print(row)
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: GDScriptオンラインコンパイラ