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

您应该制作一个二维数组来表示棋盘。

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