Game Maker Language リファレンス > 組み込み関数 用途別 > データ構造
特殊なデータ構造を扱うための関数群。なお、これら関数のプレフィクス「ds_」は「Data structures」の頭文字をとったものとなります。
スタックデータ構造は、LIFO(後入れ先出し)構造で、値をプッシュし、スタックからそれらをポップすることでそれらを再び削除することができます
キューはスタックにやや似ていますが、FIFO(先入れ先出し)で動作します。最初のキューに入れられた値は、除去するのも最初のものとなります
リストは、特定の順序で値のコレクションを格納します。リストの終端に値を追加するか、リストのどこか途中に値を挿入することができます。またインデックスを使用して値にアクセスできるます。また、昇順または降順のいずれかで、要素を並べ替えることができます
GameMaker:Studio v1.4 からリスト操作のシンタックスシュガーが用意されました。 次のように略記できます。
// 指定した位置の値を取得 var val = ds_list_find_value(list_id, pos); ↓ var val = list_id[| pos]; // 指定した位置の値を置き換え ds_list_replace(list_id, pos, val); ↓ list_id[| pos] = val;
マップは、キーと値から成るペアを格納することができます
GameMaker:Studio v1.4 からマップ操作のシンタックスシュガーが用意されました。 次のように略記できます。
// マップの値を取得 var val = ds_map_find_value(map_id, key); ↓ var val = map_id[? key]; // マップの値を変更 ds_map_replace(map_id, key, val); ↓ map_id[? key] = val;
二番目の例について補足:[? ] 表記での代入は ds_map_replace() と同じように働きます。 ds_map_replace()は名前の印象に反して置き換え(replace)でなく新規追加でも使えます。これらに対して ds_map_add() は既に同じ key が格納されていたら失敗します。
優先度付きキューの値には、それぞれ優先度が格納されている。あなたはすぐに最小・最大の優先度の値を見つけることができます
グリッドは、扱いやすい2次元配列です。整数の幅と高さを持ち、あなたがそれのセル座標(X方向とY方向ともに0で始まる)を与えることで、グリッド内のセルの値を設定したり取得することができます
GameMaker:Studio v1.4 から値の取得と設定のシンタックスシュガーが用意されました。 次のように略記できます。
// 値の取得 var val = ds_grid_get(grid_id, xpos, ypos); ↓ var val = grid_id[# xpos, ypos]; // 値の設定 ds_grid_set(grid_id, xpos, ypos, val); ↓ grid_id[# xpos, ypos] = val;