人並みにお盆でも…
ということで、暫くの間、開発を停止していましたが、
涼しくなってきましたので、開発を再開いたしました。
それで、今度もパズルゲームです。
あまり難しくないものをということで、リバーシでも作ろうかと思っています。
巷にはありふれているゲームですので、どこで差別化を図るのかが問題になります。
さて、どうしたものでしょう…
今までと同じく、Androidアプリとなるわけですが、
作っていて気がついたことがありました。
そういえば、JavaにReallocないよなぁ。
reallocを実行するときと言うのは、領域をどんどん拡張していきたいときに使うのですが、
今回のリバーシで必要になりました。
なぜ、リバーシで領域を拡張していく必要があるのでしょうかねぇ?
それはさておき、なければ作るだけ。作るのは簡単です。
ついでに、元の領域から新しい領域へデータもコピーしちゃいましょう。
(1) 元の領域を渡す
(2) 新しい領域を作る
(3) 新しい領域へ元の領域のデータをコピーする
(4) 元の領域を解放する
(5) 新しい領域を返す
うん、簡単ですね。
// 領域の拡張
public static int[][] array_extend(int array[][])
{
int new_array[][] = new int[array.length + 1][array[0].length + 1];
// 領域の初期化
for (int y = 0 ; y < new_array.length ; y++) {
for (int x = 0 ; x < new_array[0].length ; x++) {
array[y][x] = 0;
}
}
// 領域を拡張してコピー
for (int iy = 0; iy < array.length; iy++) {
for (int ix = 0 ; ix < array[0].length ; ix++) {
new_array[iy][ix] = array[iy][ix];
}
}
// 古い領域の解放
array = null;
// 新しい領域を返す
return new_array;
}
int型の2次元配列を1ずつ拡張して返却します。
領域の初期化もしてあげると、後々に使い回しが効くと思われます。
とりあえず、今回はここまで。
0 件のコメント:
コメントを投稿