0

私は C++ でプラットフォーム ゲームを作成しており、タイル マップを使用して世界を構築しています。

マップには、タイルに割り当てられた値が含まれています。

たとえば、2D 配列の場合:

int map[4][4]={
    {1, 1, 1, 1},
    {1, 0, 0, 1},
    {1, 0, 0, 1},
    {1, 1, 1, 1}, };

同様の方法でスプライトを作成します。int sprite[1][1]={ {2} };

私の質問は、2D 配列内の特定のタイルまたは要素にどのようにアクセスするのですか?

この投稿 (3 番目の投稿)を読み、2D 配列を使用するのが最善ではないかどうか疑問に思いました。

私のスプライトは常にウィンドウの中央に留まり、キーを押すと私の世界は彼の後ろに移動します。

特定のタイルと衝突させたいので、スプライト 2D 配列タイルとマップ 2D 配列の間の相互作用が必要です...

また、現状では、別の方法でコーディングしていないため、マップから出ることができます。これについてどうすればいいですか?理想的には、彼がマップから離れないようにしたいので、衝突をそれと統合できます。

以下は、物事がどのように見えるかのスクリーンショットです (ただし、上記よりも大きなマップがあります): 蘇生プラットフォーマー

4

1 に答える 1

1

私が持っている場合:

int array[4][4];

次の方法で要素にアクセスできます。

array[a_num][also_a_num]

ここで、i と j は有効なインデックスです。

通常、このようなものが必要な場合は、1 次元配列といくつかの数学を使用します。

int height = a_num;
int width = also_a_num;
int amap[height * width];
int x_pos,y_pos;
int value = amap[y_pos*width + x_pos];

x_pos と y_pos の境界を簡単に確認できます。

衝突に関しては、構造体の配列を試すことができます。

struct tile{
  bool walkable;
  int type;
};

tile amap[height*width];
于 2013-03-28T20:06:51.960 に答える