ステージのマップデータを配列で持とうとして、1次元で持つか2次元で持つかちょっと悩む。
int MapWidth = 20; int MapHeight = 20; // 1次元 int map[MapWidth * MapHeight]; // 2次元 int map[MapWidth][MapHeight];
1次元で持つとx座標とy座標から配列のインデックスを計算して求める必要がある。2次元ならそのままでいい。でもマップデータ全体を扱うとき、たとえばコピーするような場合は1次元のほうが扱いやすい。
今回は1次元で持つことに決定。座標からインデックスを求めるのはマクロかインライン関数にしてしまえばいいし。
#define POS((x),(y)) ((y)*MapWidth+(x)) int pos(int x, int y) { return y*MapWidth+x; }
あと2次元配列はどっちがxでyなのか良く分からなくなってしまうので苦手というのもある。