/** * Check if this pin is an opponent-pin and has connection. The two connection up are not checked. * * @param oppX x of pin to check * @param oppY y of pin to check * @return true if pin is not blocking */ private boolean checkTopPin(final int oppX, final int oppY) { return !(board.getPin(oppX, oppY) == Board.XPLAYER && (board.isBridged(oppX, oppY, 0) || board.isBridged(oppX, oppY, 3) || board.isBridged(oppX + 2, oppY + 1, 0) || board.isBridged(oppX + 1, oppY + 2, 1) || board.isBridged(oppX - 1, oppY + 2, 2) || board.isBridged(oppX - 2, oppY + 1, 3))); }
/** * Check for race 2 (upper-right to left, gentle). * * @return true if no blocking race exists */ private boolean checkFor2() { boolean ret = true; int vx = (board.getXsize() - 2 - pinX); int vy = (pinY - 1) * 2; // System.out.println("2 fuer " + GuiBoard.getHoleName(pinX, pinY, false) + ":" // + ((vx >= vy) ? " save" : " not save")); if (board.getPin(pinX - 1, pinY) == Board.XPLAYER && vx < vy && (board.isConnected(pinX - 1, pinY, pinX + 1, pinY - 1) || (board.isConnected(pinX - 1, pinY, pinX - 3, pinY + 1) && nextPlayer == Board.XPLAYER))) { ret = false; } // System.out.println("Check: " + (ret ? "okay" : "not okay") + // " NextPlayer: " + (nextPlayer == Board.XPLAYER ? "X" : "Y")); return ret; }
/** * Check for race 4 (down-right to left, steep). * * @return true if no blocking race exists */ private boolean checkFor4() { boolean ret = true; int vx = (board.getXsize() - 2 - pinX) * 2; int vy = (board.getYsize() - 2 - pinY); // System.out.println("4 fuer " + GuiBoard.getHoleName(pinX, pinY, false) + ":" // + ((vx >= vy) ? " save " : " not save ") + vx + "," + vy + "-" + (board.getYsize() // - 2 - pinY)); if (board.getPin(pinX - 1, pinY - 1) == Board.XPLAYER && vx < vy && (board.isConnected(pinX - 1, pinY - 1, pinX, pinY + 1) || (board.isConnected(pinX - 1, pinY - 1, pinX - 2, pinY - 3) && board.bridgeAllowed(pinX, pinY + 1, 1) && nextPlayer == Board.XPLAYER))) { ret = false; } // System.out.println("Check: " + (ret ? "okay" : "not okay") + // " NextPlayer: " + (nextPlayer == Board.XPLAYER ? "X" : "Y")); return ret; }
/** * Check if this pin is an opponent-pin and has connection. Only two connection are checked. * * @param oppX x of pin to check * @param oppY y of pin to check * @return true if pin is not blocking */ private boolean checkTopPinTwo(final int oppX, final int oppY) { return oppY <= 0 || !(board.getPin(oppX, oppY) == Board.XPLAYER && (board.isBridged(oppX - 2, oppY + 1, 3) || board.isBridged(oppX + 2, oppY + 1, 0))); }
/** * Check if this pin is an opponent-pin and has connection. Only two connection are checked. * * @param oppX x of pin to check * @param oppY y of pin to check * @return true if pin is not blocking */ private boolean checkButtomPinTwo(final int oppX, final int oppY) { return oppY >= board.getYsize() || !(board.getPin(oppX, oppY) == Board.XPLAYER && (board.isBridged(oppX, oppY, 0) || board.isBridged(oppX, oppY, 3))); }