我在用java製作象棋遊戲,棋子給我一個地獄般的問題。我真的不知道爲什麼,因爲他們的運動是最簡單的。這是Piece聲明和Pawn(extends Piece)聲明。運動類定義了一個簡單的x; y對象,我用它來標記棋盤上的可能運動目標。我有一個GameHandler類,稍後將根據遊戲規則來處理所有不可能的運動。但Pawn的動作陣列似乎很乾淨;所有其他作品的動作都像奇蹟般運作!提前致謝!<Java>國際象棋棋子運動問題
件類
public abstract class Piece{
protected int x, y;
protected boolean isWhite;
protected ArrayList<Movement> moves;
public Piece(int x, int y, boolean isWhite) {
this.x=x;
this.y=y;
this.isWhite = isWhite;
moves = new ArrayList<Movement>();
}
public abstract ArrayList<Movement> getMoves();
//obvious methods
public int getX()
public int getY()
public boolean isWhite()
//end obvious methods
public void setCoordinates(int x, int y){
this.x=x;
this.y=y;
}
}
Pawn類
public class Pawn extends Piece{
public Pawn(int x, int y, boolean isWhite){
super(x,y,isWhite);
}
public ArrayList<Movement> getMoves() {
moves.clear();
if(isWhite){
if(y>0) moves.add(new Movement(x, y-1));
if(y==7) moves.add(new Movement(x, y-2));
}else{
if(y<7) moves.add(new Movement(x, y+1));
if(y==0) moves.add(new Movement(x, y+2));
}
return moves;
}
}
編輯:王添加類作爲參考
public class King extends Piece{
public King(int x, int y, boolean isWhite){
super(x,y,isWhite);
}
public ArrayList<Movement> getMoves() {
moves.clear();
if(y-1>=0 && x-1>=0) moves.add(new Movement (x-1, y-1));
if(y-1>=0 && x+1<8) moves.add(new Movement (x+1, y-1));
if(y+1<8 && x+1<8) moves.add(new Movement (x+1, y+1));
if(y+1<8 && x-1>=0) moves.add(new Movement (x-1, y+1));
if(y-1>=0) moves.add(new Movement (x, y-1));
if(y+1<8) moves.add(new Movement (x, y+1));
if(x+1<8) moves.add(new Movement (x+1, y));
if(x-1>=0) moves.add(new Movement (x-1, y));
return moves;
}
}
你有任何其他遊戲作品可以發佈嗎? –
典當並不是最簡單的一種。它可以從雙動開始,它可以變成皇后。例如,比主教更復雜。 – Thilo
它也可以攻擊對角線 –