我正在用Java编写一个国际象棋引擎,我想打印带有ASCII字符的棋盘(例如:#8代表一个空的方块,K代表一个国王,Q代表一个王后等等)。代表应该区分黑白的部分。
我正在寻找的方法,这将有一个输入列表(或映射或数组)的片断,并将输出一个字符串代表的板。
我已经有了一个Board对象,其中包含一个棋子列表。Piece是一个抽象类,有一个位置(x,y)和一个颜色(黑色或白色)。然后,King、Queen、Knight是实现块类的类。
谢谢
发布于 2014-07-12 20:52:04
我认为你可以使用Abstract- Class (或接口)来实现它:
public abstract class ChessObject {
private ChessColor color;
public abstract String getCharRepresentation();
public ChessObject(ChessColor color){
this.color = color;
}
public ChessColor getColor() {
return color;
}
public void setColor(ChessColor color) {
this.color = color;
}
}
实施:
public class King extends ChessObject{
public King(ChessColor color){
super(color);
}
@Override
public String getCharRepresentation() {
return "K";
}
}
枚举:
public enum ChessColor {
WHITE, BLACK;
}
Main-示例:
public static void main(String[] args) {
List<ChessObject> objects = new ArrayList<ChessObject>();
objects.add(new King());
for(ChessObject obj : objects){
System.out.println(obj.getCharRepresentation());
}
}
https://stackoverflow.com/questions/24713064
复制相似问题