3

プログラムでサイズ 16 の 1 次元整数配列として表す 4x4 ゲームボードがあるとします。

特定のインデックスの上、下、左、右の正方形のインデックスを取得するにはどうすればよいですか?

たとえば、次のようになります。

A = { 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 }

このボードを表すもの

 0   1   2   3
 4   5   6   7
 8   9  10  11
12  13  14  15  

現在、ボードのインデックス #8 (値 = 7) にいるとしましょう。4 (値 = 3)、5 (値 = 6)、10 (値 = 11) のインデックスを取得し、ボードの右端にあるため、右の正方形がないことを認識するにはどうすればよいですか。

モジュラス計算を使用する必要があることはわかっていますが、隣接する正方形のインデックスを取得する正しい方法を考え出すことができません。

みたいなことを考えている...

if ((i % 4) + 1 < 3) right = i + 1;
if ((i % 4) - 1 > 0) left = i - 1;
if ((i % 4) + 4 < 15) bottom = i + 4;
if ((i % 4) - 4 > 0 ) top = i - 4;

これは正しいアプローチのように思えますか?

4

1 に答える 1

7

インデックスから行、列を取得するには、次を使用します。

row = index/num_columns;
column = index % num_columns;

インデックスに戻るには、使用します

index = row * num_columns + column;

行と列にいると、周囲の位置を簡単に取得できます。

above = (row-1, column)
left = (row, column-1)
etc...
于 2010-04-18T21:07:17.703 に答える