0

私が何かを説明し損ねた場合は、お手柔らかにお願いします。

基本的に、テトラベックス グリッド内のすべてのポイントを交換した記録を保持する方法を知りたいと考えています。[参照: http://gamegix.com/tetravex/game]。

グリッドを作成し、ランダム ソリューションからタイルを追加しました。現在、ユーザーが生成した 1 組のタイルを交換できますが、これを自動プロセスとして行うことはできません。

アイテムを自動的に交換するプロセスを一般的にどのように自動化しますか? そして、「良い」スワップの記録を残す

swap メソッドは、次のパラメーターを受け入れます。

ems.swap(i1, j1, i2, j2);

i1,j1スワップする最初のタイルとスワップする 2 番目のタイルはどこにありますi2,j2か。

これが完了すると、タイルが評価され、

 public static int AssessSwapTiles(EdgeMatchSolution ems, EdgeMatch em)
{
    int a = em.getRows();
    int b = em.getColumns();
    int swaptotal = 0;

    for (int i = 0; i < a; i++)
    {
        for (int j = 0; j < b; j++)
        {
            int numSides = ems.sidesMatched(i,j);
            System.out.print(numSides + " ");
            swaptotal += numSides;
        }
        System.out.println();
    }
    System.out.println(swaptotal);
    return swaptotal;
}

このメソッドは、スワップ前に 1 回呼び出され、スワップ後に再度呼び出されます。

長い説明で申し訳ありません。これは、将来これに出くわす人のためだけのものでした.

4

1 に答える 1

0

これを格納する最も簡単な方法は、、、を保持するクラスであるMap<Swap, Int>whereを使用することです(およびとメソッドが定義されています)。「良い」スワップは、最大値を持つ s です。Swapi1j1i2j2equalshashCodeSwap

あるいは、4 次元配列を使用して、行われたスワップによってインデックス付けされたスワップ値を格納することもできます。つまりswapValues[i1][j1][i2][j2]、 swapping i1, j1with i2,の値になりますj2

スワップを保存する以外に何をするつもりなのかわからないので、より多くの情報がなければ、「良い」スワップを保存するためのより良い方法を言うのは難しい.

于 2013-01-13T04:30:10.830 に答える