0

私は Java の初心者で、作成中のゲームの配列に問題があります。これは Bejeweled に似ています。

このゲームでは、タイルと呼ばれる 1 つのクラスを使用します。これは、ボード上の 1 つの色付きタイルと、ボード上の列と行 (整数) を表します。Board と呼ばれるボード用の別のクラスがあります。これは、これらのタイルを列と行で編成された整数の 2D 配列で管理します。

画面上の 2 つのタイルを交換すると問題が発生します。これが発生すると、列と行が交換されますが、保存されている配列はこの変更を認識しません。画面上では、すべてが正常に見えます。2 つのタイルの位置が切り替わります。

たとえば、切り替えたい 2 つの隣接するタイルがある場合、(column0, row0)(column1, row0). 私のタイルの配列では、これらはタイルarray[0][0]array[1][0]. それらを切り替えると、最初のタイルは 2 番目のタイルの古い位置になり、2 番目のタイルは最初のタイルの古い位置になります。ただし、最初のタイルは と認識されるarray[0][0]はずですが、まだ と認識されていますarray[1][0]

これの重要な点は、私のプログラムは同じ色の 3 つの連続したタイルを認識しないため、ボードからそれらを消去しないことです。これを修正するためにできることはありますか?

何か提案があれば、それは素晴らしいことです。ありがとうございました。

4

1 に答える 1

1

あなたの説明から何が間違っているのか正確にはわかりません。コードは次のようになります。

class Tile {
  int col;
  int row;
  void setPos(int newCol, int newRow) {
    col = newCol;
    row = newRow;
}

class Board {
  Tile[][] array;

  void swap(int col0, int row0, int col1, int row1) {
    // Get hold of the tile objects to swap
    Tile tile0 = array[col0][row0];
    Tile tile1 = array[col1][row1];

    // Swap the positions stored in the tile objects
    tile0.setPos(col1, row1);
    tile1.setPos(col0, row0); 

    // Swap the tile objects in the array
    array[col0][row0] = tile1;
    array[col1][row1] = tile0;
  }
}
于 2013-05-24T06:08:41.383 に答える