RPG で装備できる可能性のあるすべてのギアのすべてのデータを保持するデータ構造を作成しようとしていると想像してください。
この場合、1 つの歯車は、4 つの値で表すことができます。長さの固定長配列、長さC
の可変長配列0 < n < 5
、文字列、および実数です。私はgmlを初めて使用しますが、これには2D配列を使用する傾向があります:
2d_array[0, 0] = fixed_length[0]
...
2d_array[0, C-1] = fixed_length[C-1]
2d_array[1, 0] = variable_length[0]
...
2d_array[1, n-1] = variable_length[n-1]
2d_array[2, 0] = string
2d_array[3, 0] = real_number
次に、すべてのギアは、このようなさまざまな一意の 2 次元配列 (ハードコードされた値を持つ数百の配列) によって表されます。私がやりたいのは、これらの配列すべてを ds_map のようなデータ構造に格納することです (それ自体は、ゲームの開始時に作成された永続的なコントローラー オブジェクトに格納されます)。ここで、マップの特定のキーから取得された値は、ピースの 2 次元配列です。そのキーでギアの。何かのようなもの:
gear_piece = ds_map_find_value(map, "key"); //do things with gear_piece as a 2d array
gear_name = gear_piece[2, 0]; //e.g.
私の質問は、その ds_map にデータを入力するにはどうすればよいですか、またはそのようなデータ構造を作成することは可能ですか? gml とその中で配列がどのように機能するかについての私の (初心者の) 理解から、次のコードには問題があるため、明確にする必要があります。
var 2d_array;
2d_array[3, 0] = 3;
2d_array[2, 0] = "Book of Life";
//now the variable-length array; for this piece of gear it is length 2
2d_array[1, 1] = 26;
2d_array[1, 0] = 10;
//now the fixed-length array
//SIZE is a macro for the length of the fixed-length array
i = SIZE-1;
repeat(SIZE) {
2d_array[0, i] = 0;
i -= 1;
} //just initializes to zeros
//hard-coded arbitrary gear values
2d_array[0, 0] = 40;
2d_array[0, 2] = 60;
//now add a reference to 2d_array to the ds_map with a unique key for that piece of gear
m_ds_gear[? "book-of-life"] = 2d_array;
//do the same process for the next piece of gear
2d_array[3, 0] = 1;
2d_array[2, 0] = "Book of Death";
...
2d_array[0, 1] = 20;
m_ds_gear[? "book-of-death"] = 2d_array;
//but now, since m_ds_gear["book-of-life"] just contains the id referencing 2d_array,
//I haven't really stored multiple arrays, right?
//I've just overwritten the old array values and stored a reference to it twice
これには他にも問題があります.1つ目2d_array
はローカル変数であり、スクリプトの実行が終了したときにデータ構造内の参照は何を意味するのでしょうか? 私はそうは思わないでしょう。しかし、それをインスタンス変数に変更しても、依然として上書きの問題があり、すべての 2d 配列を保持するために何百ものインスタンス変数を明示的に作成するソリューションは、gear
オブジェクトを使用して何百もの永続的な非表示インスタンスを作成するのと同様に、ばかげているように思えます。上記のコードに関する提案、またはギア データを最適に保存するための代替ソリューションを歓迎します。
関連するメモとして、ds_lists またはマップを他の ds_lists 内に保存することについてのメモをマニュアルに記載していますが、これは JSON でのみ使用されると書かれています。データ構造を他のデータ構造内に格納できますか?