2015/08/21

開発再開中

人並みにお盆でも…
ということで、暫くの間、開発を停止していましたが、
涼しくなってきましたので、開発を再開いたしました。

それで、今度もパズルゲームです。
あまり難しくないものをということで、リバーシでも作ろうかと思っています。

巷にはありふれているゲームですので、どこで差別化を図るのかが問題になります。
さて、どうしたものでしょう…

今までと同じく、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 件のコメント:

コメントを投稿