Menu
CoddyTech

2次元配列の要素へのアクセス

CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 13/78。

2次元配列の1つのセルにアクセスするには、2つのインデックスを使います。1つ目は行を選び、2つ目はその行の中の列を選びます。どちらも0から始まります。

var level := [
	[1, 1, 1, 1],
	[1, 0, 2, 1],
	[1, 1, 1, 1]
]
print(level[1][2]) # 2 (行 1、列 2)
print(level[0][0]) # 1

level[1] は行 [1, 0, 2, 1] を返し、続いて [2] がその行のインデックス 2 を選びます。負のインデックスは、他の配列と同様に末尾から数えます。つまり、level[-1][-1] は右下のセルです。

セルに代入して変更します。プレイヤーがコインを拾うと、そのタイルは床になります:

level[1][2] = 0
print(level[1]) # [1, 0, 0, 1]

グリッドの範囲外のインデックスは、プログラムを停止させるエラーです。行が0から2までなので、level[3][0]は失敗します。インデックスが入力や計算から得られる場合は、まずグリッドのサイズと照らし合わせて確認してください:

var row := 2
var col := 5
if row >= 0 and row < level.size() and col >= 0 and col < level[row].size():
	print(level[row][col])
else:
	print("Outside the map")

列5は存在しないため、Outside the mapが出力されます。andは最初にfalseとなる条件で評価を停止するため、行が存在する場合にのみlevel[row]が読み取られます。

challenge icon

チャレンジ

簡単

3つのパラメーターを持つget_tileという名前の関数を書いてください:

  1. grid:整数の2次元配列(grid: Arrayとして宣言します)
  2. row:行インデックス
  3. col:列インデックス

その行と列にある値を返します。rowまたはcolがグリッドの範囲外(0未満、または行数や列数未満ではない)の場合は、代わりに-1を返します。負のインデックスは範囲外として扱います。

たとえば、get_tile([[1, 2, 3], [4, 5, 6]], 1, 2)は6を返し、get_tile([[1, 2], [3, 4]], 2, 1)は-1を返します。

テストではget_tile()を呼び出し、戻り値を確認します。自分で呼び出したり、何かを出力したりしないでください。

自分で試してみよう

func get_tile(grid: Array, row: int, col: int):
	# ここにコードを書いてください
	pass
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: GDScriptオンラインコンパイラ