|
|
|
|
|
|
|
public class Move {
|
|
|
|
//source and dest coordinates
|
|
|
|
int sourceIndex;
|
|
|
|
int destIndex;
|
|
|
|
|
|
|
|
public Move(int sourceIndex, int destIndex) {
|
|
|
|
this.sourceIndex = sourceIndex;
|
|
|
|
this.destIndex = destIndex;
|
|
|
|
}
|
|
|
|
|
|
|
|
public Move(int sourceColumn, int sourceRow, int destColumn, int destRow) {
|
|
|
|
sourceIndex = sourceRow * 12 + sourceColumn + 2 + 12*2;
|
|
|
|
destIndex = destRow * 12 + destColumn + 2 + 12*2;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getSourceIndex() {
|
|
|
|
return sourceIndex;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getDestIndex() {
|
|
|
|
return destIndex;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getSourceRow() {
|
|
|
|
return sourceIndex / 12 - 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getSourceCol() {
|
|
|
|
return sourceIndex % 12 - 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getDestRow() {
|
|
|
|
return destIndex / 12 - 2;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getDestCol() {
|
|
|
|
return destIndex % 12 - 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
private String letterFor(int col) {
|
|
|
|
return "abcdefgh".substring(col, col+1);
|
|
|
|
}
|
|
|
|
|
|
|
|
//returns something like e2-e4
|
|
|
|
public String toString() {
|
|
|
|
return letterFor(getSourceCol())+(getSourceRow()+1) + "-" + letterFor(getDestCol())+(getDestRow()+1);
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean equals(Object obj) {
|
|
|
|
if (obj instanceof Move) {
|
|
|
|
Move move = (Move)obj;
|
|
|
|
return (move.sourceIndex == sourceIndex && move.destIndex == destIndex);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return false; //not even a move object
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|