DroidFish: Improved tapping behavior.

This commit is contained in:
Peter Osterlund
2012-06-10 15:01:07 +00:00
parent 10c80e802c
commit ddf86c3ad7
3 changed files with 17 additions and 8 deletions

View File

@@ -601,14 +601,15 @@ public class ChessBoard extends View {
int p = pos.getPiece(sq); int p = pos.getPiece(sq);
if (selectedSquare != -1) { if (selectedSquare != -1) {
if (sq != selectedSquare) { if (sq == selectedSquare)
if (!myColor(p)) { return null;
Move m = new Move(selectedSquare, sq, Piece.EMPTY); if (!myColor(p)) {
setSelection(sq); Move m = new Move(selectedSquare, sq, Piece.EMPTY);
return m; setSelection(sq);
} return m;
} else {
setSelection(sq);
} }
setSelection(-1);
} else { } else {
if (oneTouchMoves) { if (oneTouchMoves) {
ArrayList<Move> moves = new MoveGen().pseudoLegalMoves(pos); ArrayList<Move> moves = new MoveGen().pseudoLegalMoves(pos);

View File

@@ -204,8 +204,11 @@ public class EditBoard extends Activity {
piece = -(m.from + 2); piece = -(m.from + 2);
} }
if (m.to >= 0) { if (m.to >= 0) {
if ((m.from < 0) && (pos.getPiece(m.to) == piece)) int oPiece = Piece.swapColor(piece);
if ((m.from < 0) && (pos.getPiece(m.to) == oPiece))
pos.setPiece(m.to, Piece.EMPTY); pos.setPiece(m.to, Piece.EMPTY);
else if ((m.from < 0) && (pos.getPiece(m.to) == piece))
pos.setPiece(m.to, oPiece);
else else
pos.setPiece(m.to, piece); pos.setPiece(m.to, piece);
} }

View File

@@ -54,4 +54,9 @@ public class Piece {
public static int makeBlack(int pType) { public static int makeBlack(int pType) {
return ((pType >= WKING) && (pType <= WPAWN)) ? pType + (BKING - WKING) : pType; return ((pType >= WKING) && (pType <= WPAWN)) ? pType + (BKING - WKING) : pType;
} }
public static int swapColor(int pType) {
if (pType == EMPTY)
return EMPTY;
return isWhite(pType) ? pType + (BKING - WKING) : pType - (BKING - WKING);
}
} }