亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? plygenerator.java

?? chess 一個beguanyu國際象棋的一個Java源碼
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
			}			// Add the en passant attacks.			if( ( ( ( pawnPos & BitBoard._NOT_LINE_H) >>> 7) & attackablePawnBitmask) != 0L) {			    addPly( new EnPassantPlyImpl( new PositionImpl( attackableIndex + 7)			                 	          , new PositionImpl( attackableIndex)				                          , new PositionImpl( destinationIndex))				    , MATERIAL_WIN);			}		    }		}	    }	    // Add all the 2 square plies. Since the square in front of the pawn has to be free, I have to	    // add the bit and with the shifted empty squares.	    addRelativePliesDownward( ( ( pawnPos & BitBoard._ROW_7 & ( _emptySquares << 8) ) >>> 16) & _emptySquares, 39, 32, 16);	    // Add all the 1 square plies.	    long movedPawns = (pawnPos >>> 8) & _emptySquares;	    addRelativePliesDownward( movedPawns & BitBoard._NOT_ROW_1, 56, 8, 8);	    	    // Now take care of the last row.	    movedPawns &= BitBoard._ROW_1;	    while( movedPawns != 0L) {		int destinationSquare = BitUtils.getHighestBit( movedPawns);		int sourceSquare = destinationSquare + 8;		// Add all transformation types as plies.		boolean capture = ( ( ( 1L << destinationSquare) & _attackablePieces) != 0L);		addTransformationPly( sourceSquare, destinationSquare, Piece.QUEEN, capture, QUEEN_TRANSFORMATION);		addTransformationPly( sourceSquare, destinationSquare, Piece.KNIGHT, capture, KNIGHT_TRANSFORMATION);		addTransformationPly( sourceSquare, destinationSquare, Piece.ROOK, capture, ROOK_TRANSFORMATION);		addTransformationPly( sourceSquare, destinationSquare, Piece.BISHOP, capture, BISHOP_TRANSFORMATION);		movedPawns &= ~( 1L << destinationSquare);	    }	}    }    /**     * Compute the knight plies for each square. This is done at startup,     * so we can get the plies by a simple array access.     */    private final void precomputeKnightPlies() {	for( int i = 0; i < 64; i++) {	    long currentMask = 0L;	    int line = i & 7;	    int row = i >> 3;	    for( int currentPlyIndex = 0; currentPlyIndex < _knightPlyOffset.length; currentPlyIndex++) {		int [] curOffsets = _knightPlyOffset[ currentPlyIndex];		int targetRow = row + curOffsets[1];		int targetLine = line + curOffsets[0];		if( targetRow >= 0 && targetRow < 8 && targetLine >= 0 && targetLine < 8) {		    currentMask |= 1L << ((targetRow << 3) + targetLine);		}	    }	    _knightMask[i] = currentMask; 	}    }    /**     * Compute the king moves for each square in advance.     */     private final void precomputeKingPlies() {	 for( int i = 0; i < 64; i++) {	     long currentMask = 0L;	     int line = i & 7;	     int row = i >> 3;	     for( int currentPlyIndex = 0; currentPlyIndex < _kingPlyOffset.length; currentPlyIndex++) {		 int [] curOffsets = _kingPlyOffset[ currentPlyIndex];		 int targetRow = row + curOffsets[1];		 int targetLine = line + curOffsets[0];		 if( targetRow >= 0 && targetRow < 8 && targetLine >= 0 && targetLine < 8) {		     currentMask |= 1L << ((targetRow << 3) + targetLine);		 }	     }	     _kingMask[i] = currentMask; 	}      }    /**     * Add all the plies for knights of the current color.     */    private final void addPliesForKnights() {	long knightPositions = getBoard().getPositionOfPieces( _white ? Piece.KNIGHT << 1 | 1 : Piece.KNIGHT << 1 );		while( knightPositions != 0) {	    int highestBit = BitUtils.getHighestBit( knightPositions);	    long curMoves = _knightMask[ highestBit] & (_emptySquares | _attackablePieces);	    int startBitRange = highestBit - 17;	    if( startBitRange < 0) {		startBitRange = 0;	    }	    int endBitRange = highestBit + 17;	    if( endBitRange > 63) {		endBitRange = 63;	    }	    addAbsolutePlies( curMoves, startBitRange, endBitRange, highestBit);	    knightPositions &= ~(1L << highestBit);	}    }    /**     * Add the plies for bishops.     */    public final void addPliesForBishops() {	long bishopPositions = getBoard().getPositionOfPieces( _white ? Piece.BISHOP << 1 | 1 : Piece.BISHOP << 1);	while( bishopPositions != 0) {	    int highestBit = BitUtils.getHighestBit( bishopPositions);	    addPliesForBishopPos( highestBit);	    bishopPositions &= ~(1L << highestBit);	}    }    /**     * Add the plies for a bishop position.     *     * @param square The square index of the bishop pos.     */    private final void addPliesForBishopPos( int square) {	int orgPos = square;  // Save the original position.	int squareRow = square >> 3;	int squareLine = square & 7;	long bitmask;	if( squareRow > 0) {  // If we are not on row 1	    if( squareLine < 7) {		// Compute plies to the lower right.		square -= 7;		bitmask = 1L << square;		while( square >= 0 && ( ( square & 7) > 0)) {		    if( ( bitmask & (_emptySquares | _attackablePieces)) != 0L) {			boolean capture = ( (bitmask & _attackablePieces) != 0L);			addRegularPly( orgPos, square, capture, capture ? MATERIAL_WIN : REGULAR_PLY);						// If we attacked a piece, we cannot move further			if( capture) {			    break;			}		    } else {			break;		    }		    square -= 7;		    bitmask >>>= 7;		}	    }	    if( squareLine > 0) {		// Compute plies to the lower left.		square = orgPos - 9;		bitmask = 1L << square;		while( square >= 0 && ( ( square & 7) != 7)) {		    if( ( bitmask & (_emptySquares | _attackablePieces)) != 0L) {			boolean capture = ( (bitmask & _attackablePieces) != 0L);			addRegularPly( orgPos, square, capture, capture ? MATERIAL_WIN : REGULAR_PLY);						// If we attacked a piece, we cannot move further			if( capture) {			    break;			}		    } else {			break;		    }		    square -= 9;		    bitmask >>>= 9;		}	    }	}	if( squareRow < 7) {	    if( squareLine > 0) {		// Compute plies to the upper left.		square = orgPos + 7;		bitmask = 1L << square;		while( square < 64 && ( ( square & 7) != 7)) {		    if( ( bitmask & (_emptySquares | _attackablePieces)) != 0L) {			boolean capture = ( (bitmask & _attackablePieces) != 0L);			addRegularPly( orgPos, square, capture, capture ? MATERIAL_WIN : REGULAR_PLY);						// If we attacked a piece, we cannot move further			if( capture) {			    break;			}		    } else {			break;		    }		    square += 7;		    bitmask <<= 7;		}	    }	    if( squareLine < 7) {		// Compute plies to the upper right.		square = orgPos + 9;		bitmask = 1L << square;		while( square < 64 && ( ( square & 7) > 0)) {		    if( ( bitmask & (_emptySquares | _attackablePieces)) != 0L) {                        boolean capture = ( (bitmask & _attackablePieces) != 0L);			addRegularPly( orgPos, square, capture, capture ? MATERIAL_WIN : REGULAR_PLY);						// If we attacked a piece, we cannot move further			if( capture) {			    break;			}		    } else {			break;		    }		    square += 9;		    bitmask <<= 9;		}	    }	}    }    /**     * Add the plies for rooks.     */    public final void addPliesForRooks() {	long rookPositions = getBoard().getPositionOfPieces( _white ? Piece.ROOK << 1 | 1 : Piece.ROOK << 1);	while( rookPositions != 0) {	    int highestBit = BitUtils.getHighestBit( rookPositions);	    addPliesForRookPos( highestBit);	    rookPositions &= ~(1L << highestBit);	}    }    /**     * Add the plies for one rook position.     *     * @param square The square index of the rook pos.     */    private final void addPliesForRookPos( int square) {	int orgPos = square;  // Save the original position.	long bitmask;	// Compute plies to the left.	bitmask = 1L << square;	while( ( square & 7) > 0) {	    square -= 1;	    bitmask >>>= 1;	    if( ( bitmask & (_emptySquares | _attackablePieces)) != 0) {		boolean capture = ( (bitmask & _attackablePieces) != 0L);		addRegularPly( orgPos, square, capture, capture ? MATERIAL_WIN : REGULAR_PLY);				// If we attacked a piece, we cannot move further		if( capture) {		    break;		}	    } else {		break;	    }	}	// Compute plies downwards.	square = orgPos;	bitmask = 1L << square;	while( square > 8) {	    square -= 8;	    bitmask >>>= 8;	    if( ( bitmask & (_emptySquares | _attackablePieces)) != 0) {		boolean capture = ( (bitmask & _attackablePieces) != 0L);		addRegularPly( orgPos, square, capture, capture ? MATERIAL_WIN : REGULAR_PLY);				// If we attacked a piece, we cannot move further		if( capture) {		    break;		}	    } else {		break;	    }	}	// Compute plies to the right.	square = orgPos;	bitmask = 1L << square;	while( ( square & 7) < 7) {	    square += 1;	    bitmask <<= 1;	    if( ( bitmask & (_emptySquares | _attackablePieces)) != 0) {		boolean capture = ( (bitmask & _attackablePieces) != 0L);		addRegularPly( orgPos, square, capture, capture ? MATERIAL_WIN : REGULAR_PLY);				// If we attacked a piece, we cannot move further		if( capture) {		    break;		}	    } else {		break;	    }	}	// Compute plies upwards.	square = orgPos;	bitmask = 1L << square;	while( square < 56) {	    square += 8;	    bitmask <<= 8;	    if( ( bitmask & (_emptySquares | _attackablePieces)) != 0) {		boolean capture = ( (bitmask & _attackablePieces) != 0L);		addRegularPly( orgPos, square, capture, capture ? MATERIAL_WIN : REGULAR_PLY);				// If we attacked a piece, we cannot move further		if( capture) {		    break;		}	    } else {		break;	    }	}    }    /**     * Add the plies for queens.     */    public final void addPliesForQueens() {	long queenPositions = getBoard().getPositionOfPieces( _white ? Piece.QUEEN << 1 | 1 : Piece.QUEEN << 1);	while( queenPositions != 0) {	    int highestBit = BitUtils.getHighestBit( queenPositions);	    addPliesForQueenPos( highestBit);	    queenPositions &= ~(1L << highestBit);	}    }    /**     * Add the plies for one queen position.     *     * @param square The square index of the queen position.     */    private final void addPliesForQueenPos( int square) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品毛片无遮挡高清| 国内精品国产三级国产a久久| 人禽交欧美网站| 国产98色在线|日韩| 欧美人动与zoxxxx乱| 亚洲国产精品二十页| 日本在线不卡视频一二三区| 91一区二区在线| 久久久久久免费网| 欧美aaaaaa午夜精品| 在线观看三级视频欧美| 国产欧美综合色| 精品亚洲成av人在线观看| 欧美人动与zoxxxx乱| 亚洲最大的成人av| 97久久精品人人爽人人爽蜜臀| 久久综合九色综合欧美就去吻 | 免费视频一区二区| 色呦呦国产精品| 国产精品二区一区二区aⅴ污介绍| 美女视频黄a大片欧美| 欧美日韩三级在线| 亚洲自拍欧美精品| 91国产福利在线| 伊人婷婷欧美激情| 91麻豆高清视频| 亚洲男人电影天堂| 91网站黄www| 亚洲人妖av一区二区| 成人av集中营| 亚洲视频图片小说| 91社区在线播放| 亚洲卡通动漫在线| 欧美性大战xxxxx久久久| 一区二区三区丝袜| 欧美色手机在线观看| 亚洲国产精品视频| 在线观看91精品国产麻豆| 天堂在线亚洲视频| 精品久久久久久久久久久久久久久久久 | 激情综合五月天| 欧美精品一区二区三区在线| 精品一区免费av| 久久先锋资源网| 成人午夜大片免费观看| 1024成人网| 在线观看www91| 免费视频最近日韩| 国产午夜久久久久| 97国产一区二区| 亚洲午夜久久久久久久久电影网 | 免费成人在线播放| 欧美大片顶级少妇| 成人三级伦理片| 亚洲一区av在线| 日韩欧美亚洲国产精品字幕久久久 | 亚洲大型综合色站| 日韩一级高清毛片| 成人性生交大片免费看中文| 亚洲激情第一区| 精品va天堂亚洲国产| 成人午夜av在线| 视频一区二区中文字幕| 国产亚洲短视频| 在线观看91精品国产入口| 美女视频一区在线观看| 亚洲日本青草视频在线怡红院| 欧美精品123区| 成人免费视频播放| 天堂在线亚洲视频| 成人免费在线视频观看| 日韩午夜在线观看| 色爱区综合激月婷婷| 激情欧美一区二区| 亚洲一区在线视频观看| 久久人人超碰精品| 欧美日韩国产小视频在线观看| 国产激情视频一区二区三区欧美| 一区二区免费在线| 中文字幕 久热精品 视频在线 | 欧美日本韩国一区| 成人动漫一区二区在线| 日韩av一二三| 亚洲精品国产无套在线观| 久久麻豆一区二区| 欧美日韩成人一区二区| 99久免费精品视频在线观看| 蜜臀av一区二区在线免费观看 | 欧美日韩中文字幕一区| 国产老女人精品毛片久久| 日韩国产精品大片| 一区二区三区四区视频精品免费 | 色悠悠亚洲一区二区| 国产91露脸合集magnet | 91性感美女视频| 国产精品资源站在线| 久久精品国产一区二区三区免费看| 尤物视频一区二区| 亚洲欧洲在线观看av| 国产精品色在线观看| 26uuu精品一区二区三区四区在线| 欧美日韩卡一卡二| 欧美日韩专区在线| 欧美日韩美女一区二区| 欧美人牲a欧美精品| 欧美三区免费完整视频在线观看| 91丨porny丨蝌蚪视频| 成人av在线影院| av不卡免费电影| 一本到一区二区三区| 91原创在线视频| 色哟哟国产精品免费观看| 99国产精品国产精品毛片| 99国产欧美另类久久久精品| 97精品视频在线观看自产线路二| 成人av网站大全| 91在线观看免费视频| 在线看不卡av| 欧美年轻男男videosbes| 欧美精品日韩精品| 日韩欧美区一区二| 久久久欧美精品sm网站| 国产精品色噜噜| 亚洲免费资源在线播放| 亚洲成人动漫精品| 久久精品国产秦先生| 国产精品一区三区| yourporn久久国产精品| 色婷婷久久一区二区三区麻豆| 在线亚洲高清视频| 日韩一区二区在线免费观看| 精品国产免费一区二区三区四区| 国产日韩亚洲欧美综合| 亚洲私人黄色宅男| 亚洲第一成人在线| 国产精品一区二区在线观看不卡| 国产.精品.日韩.另类.中文.在线.播放| 国产成人精品一区二区三区网站观看| 波多野结衣中文字幕一区二区三区 | 国产福利91精品| 91网站黄www| 91精品啪在线观看国产60岁| www国产亚洲精品久久麻豆| 国产清纯在线一区二区www| 最新国产の精品合集bt伙计| 亚洲成a人在线观看| 韩日av一区二区| 日本高清不卡在线观看| 日韩视频免费观看高清完整版 | 国产一区二区三区日韩| 91网站黄www| 精品粉嫩aⅴ一区二区三区四区| 欧美国产日韩精品免费观看| 亚洲精品成人悠悠色影视| 秋霞午夜鲁丝一区二区老狼| 国产成人一级电影| 欧美精品亚洲二区| 国产精品久久久久久亚洲毛片| 亚洲gay无套男同| 高清日韩电视剧大全免费| 欧美夫妻性生活| 亚洲色图在线视频| 久久国产精品72免费观看| 91免费版在线看| 精品对白一区国产伦| 亚洲妇女屁股眼交7| 成人国产精品免费观看视频| 欧美一卡2卡3卡4卡| 亚洲视频一二区| 丁香啪啪综合成人亚洲小说| 欧美美女视频在线观看| 亚洲美女区一区| 成人免费毛片a| 精品国一区二区三区| 亚洲综合男人的天堂| 高清国产一区二区| 久久婷婷一区二区三区| 日韩在线一区二区| 色婷婷久久99综合精品jk白丝| 久久精品一区二区| 免费成人在线观看| 欧美顶级少妇做爰| 亚洲最色的网站| 色综合天天在线| 国产精品久线在线观看| 国产乱国产乱300精品| 日韩精品一区二| 热久久一区二区| 欧美一二三四区在线| 日韩av中文字幕一区二区三区| 欧美日韩成人一区| 五月天亚洲精品| 欧美日韩午夜精品| 亚洲成人在线观看视频| 欧美色视频在线观看| 亚洲图片欧美综合| 欧美体内she精视频| 亚洲精品成人精品456| 色欧美乱欧美15图片| 亚洲一区国产视频|