我开始制作西洋跳棋游戏,并且我已经绘制了所有图形和棋盘。在我开始创作这些碎片之前,我想知道有什么简单的方法可以解决碎片运动的逻辑方面。我应该为每个正方形制作一张桌子,检测它是否有一块,如果有,什么颜色?(即0=空,1=红色,2=黑色)或者你们对这个问题有更好的想法吗?
问问题
6376 次
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 回答