0

チェッカー ゲームの作成を開始し、すべてのグラフィックスとボードを描画しました。駒の作成に移る前に、駒の動きの論理的な側面に取り組む簡単な方法は何かと考えていました. 駒があるかどうか、ある場合は何色かを検出して、すべての正方形のテーブルを作成する必要がありますか? (つまり、0 = 空、1 = 赤、2 = 黒) または、この問題についてもっと良い考えがありますか?

4

2 に答える 2

6

OOP の原則を使用すると、次のようになります。

enum Side {
  BLACK,
  RED;
}

class Position {
  int x, int y;
}

class Piece
{
  Position position; // position inside the board
  Side side; // which side the piece is
}

class Board
{
  Piece[][] board = new Piece[8][8];

  boolean isMoveLegal(Piece p, Position newPosition) {
    ...
  }

  void doMove(Piece p, Position newPosition) {
    if (isMoveLegal(p, newPosition) {
      // game logic of movement and eating other pieces if needed
    }
  }
}

より単純なアプローチでは、単純なマップを使用できます。

class Position {
  int x, int y;
}

class Piece
{
  Side side; // which side the piece is
}

class Board
{
  HashMap<Piece, Position> board;

  boolean isMoveLegal(Piece p, Position newPosition) {
    ...
  }

  void doMove(Piece p, Position newPosition) {
    if (isMoveLegal(p, newPosition) {
      // game logic of movement and eating other pieces if needed
    }
  }
}

これは、ピースの現在の位置をそれ自体の中に保存することを避けるために使用できます。

于 2012-10-12T19:57:25.730 に答える
1

ボードを表すには、2 次元配列を作成する必要があります。

int[][] board = new int[8][8];
于 2012-10-12T19:54:34.870 に答える