home *** CD-ROM | disk | FTP | other *** search
- function MovementRules()
- {
- this.up = 0;
- this.down = 0;
- this.left = 0;
- this.right = 0;
- this.up_left = 0;
- this.up_right = 0;
- this.down_left = 0;
- this.down_right = 0;
- this.isKnight = false;
- this.isPawn = false;
- }
- function Move(firstPosX, firstPosY, lastPosX, lastPosY)
- {
- this.fPX = firstPosX;
- this.fPY = firstPosY;
- this.lPX = lastPosX;
- this.lPY = lastPosY;
- }
- function rulesFor(piece)
- {
- if(piece == PAWN_W || piece == PAWN_B)
- {
- return pawnRules;
- }
- if(piece == KNIGHT_W || piece == KNIGHT_B)
- {
- return knightRules;
- }
- if(piece == ROOK_W || piece == ROOK_B)
- {
- return rookRules;
- }
- if(piece == BISSHOP_W || piece == BISSHOP_B)
- {
- return bisshopRules;
- }
- if(piece == QUEEN_W || piece == QUEEN_B)
- {
- return queenRules;
- }
- if(piece == KING_W || piece == KING_B)
- {
- return kingRules;
- }
- }
- function initChessBoard()
- {
- chessBoard = new Array(8);
- chessBoard[0] = new Array(ROOK_B,KNIGHT_B,BISSHOP_B,QUEEN_B,KING_B,BISSHOP_B,KNIGHT_B,ROOK_B);
- chessBoard[1] = new Array(PAWN_B,PAWN_B,PAWN_B,PAWN_B,PAWN_B,PAWN_B,PAWN_B,PAWN_B);
- chessBoard[2] = new Array(VOID,VOID,VOID,VOID,VOID,VOID,VOID,VOID);
- chessBoard[3] = new Array(VOID,VOID,VOID,VOID,VOID,VOID,VOID,VOID);
- chessBoard[4] = new Array(VOID,VOID,VOID,VOID,VOID,VOID,VOID,VOID);
- chessBoard[5] = new Array(VOID,VOID,VOID,VOID,VOID,VOID,VOID,VOID);
- chessBoard[6] = new Array(PAWN_W,PAWN_W,PAWN_W,PAWN_W,PAWN_W,PAWN_W,PAWN_W,PAWN_W);
- chessBoard[7] = new Array(ROOK_W,KNIGHT_W,BISSHOP_W,QUEEN_W,KING_W,BISSHOP_W,KNIGHT_W,ROOK_W);
- var i = 0;
- while(i < 8)
- {
- var j = 0;
- while(j < 8)
- {
- _root["piece_" + i + "_" + j].showPiece(chessBoard[i][j]);
- _root["piece_" + i + "_" + j].row = i;
- _root["piece_" + i + "_" + j].col = j;
- j++;
- }
- i++;
- }
- }
- function calculateMoves(row, col, side)
- {
- if(chessBoard[row][col] == VOID)
- {
- trace("Error: no piece to calculate moves for !!");
- return null;
- }
- var poMo = new Array();
- rules = rulesFor(chessBoard[row][col]);
- var poTa;
- if(rules.isKnight)
- {
- var x = row - 1;
- var y = col + 2;
- if(x >= 0 && x < 8 && y >= 0 && y < 8)
- {
- if(chessBoard[x][y] == VOID || side != (chessBoard[x][y] & 1))
- {
- poMo[poMo.length] = row << 9 | col << 6 | x << 3 | y;
- }
- }
- x = row - 1;
- y = col - 2;
- if(x >= 0 && x < 8 && y >= 0 && y < 8)
- {
- if(chessBoard[x][y] == VOID || side != (chessBoard[x][y] & 1))
- {
- poMo[poMo.length] = row << 9 | col << 6 | x << 3 | y;
- }
- }
- x = row + 1;
- y = col + 2;
- if(x >= 0 && x < 8 && y >= 0 && y < 8)
- {
- if(chessBoard[x][y] == VOID || side != (chessBoard[x][y] & 1))
- {
- poMo[poMo.length] = row << 9 | col << 6 | x << 3 | y;
- }
- }
- x = row + 1;
- y = col - 2;
- if(x >= 0 && x < 8 && y >= 0 && y < 8)
- {
- if(chessBoard[x][y] == VOID || side != (chessBoard[x][y] & 1))
- {
- poMo[poMo.length] = row << 9 | col << 6 | x << 3 | y;
- }
- }
- x = row - 2;
- y = col + 1;
- if(x >= 0 && x < 8 && y >= 0 && y < 8)
- {
- if(chessBoard[x][y] == VOID || side != (chessBoard[x][y] & 1))
- {
- poMo[poMo.length] = row << 9 | col << 6 | x << 3 | y;
- }
- }
- x = row - 2;
- y = col - 1;
- if(x >= 0 && x < 8 && y >= 0 && y < 8)
- {
- if(chessBoard[x][y] == VOID || side != (chessBoard[x][y] & 1))
- {
- poMo[poMo.length] = row << 9 | col << 6 | x << 3 | y;
- }
- }
- x = row + 2;
- y = col - 1;
- if(x >= 0 && x < 8 && y >= 0 && y < 8)
- {
- if(chessBoard[x][y] == VOID || side != (chessBoard[x][y] & 1))
- {
- poMo[poMo.length] = row << 9 | col << 6 | x << 3 | y;
- }
- }
- x = row + 2;
- y = col + 1;
- if(x >= 0 && x < 8 && y >= 0 && y < 8)
- {
- if(chessBoard[x][y] == VOID || side != (chessBoard[x][y] & 1))
- {
- poMo[poMo.length] = row << 9 | col << 6 | x << 3 | y;
- }
- }
- }
- else if(rules.isPawn)
- {
- if(side == SIDE_PLAYER)
- {
- var possibleEmpassant = false;
- var i = row - 1;
- if(chessBoard[i][col] == VOID)
- {
- poMo[poMo.length] = row << 9 | col << 6 | i << 3 | col;
- possibleEmpassant = true;
- }
- if(row == 6 && possibleEmpassant)
- {
- i--;
- if(chessBoard[i][col] == VOID)
- {
- poMo[poMo.length] = row << 9 | col << 6 | i << 3 | col;
- }
- }
- var x = row - 1;
- var y = col - 1;
- if(x >= 0 && x < 8 && y >= 0 && y < 8 && (chessBoard[x][y] != VOID && side != (chessBoard[x][y] & 1)))
- {
- poMo[poMo.length] = row << 9 | col << 6 | x << 3 | y;
- }
- var x = row - 1;
- var y = col + 1;
- if(x >= 0 && x < 8 && y >= 0 && y < 8 && (chessBoard[x][y] != VOID && side != (chessBoard[x][y] & 1)))
- {
- poMo[poMo.length] = row << 9 | col << 6 | x << 3 | y;
- }
- }
- else
- {
- var possibleEmpassant = false;
- var i = row + 1;
- if(chessBoard[i][col] == VOID)
- {
- poMo[poMo.length] = row << 9 | col << 6 | i << 3 | col;
- possibleEmpassant = true;
- }
- if(row == 1 && possibleEmpassant)
- {
- i++;
- if(chessBoard[i][col] == VOID)
- {
- poMo[poMo.length] = row << 9 | col << 6 | i << 3 | col;
- }
- }
- x = row + 1;
- y = col - 1;
- if(x >= 0 && x < 8 && y >= 0 && y < 8 && (chessBoard[x][y] != VOID && side != (chessBoard[x][y] & 1)))
- {
- poMo[poMo.length] = row << 9 | col << 6 | x << 3 | y;
- }
- x = row + 1;
- y = col + 1;
- if(x >= 0 && x < 8 && y >= 0 && y < 8 && (chessBoard[x][y] != VOID && side != (chessBoard[x][y] & 1)))
- {
- poMo[poMo.length] = row << 9 | col << 6 | x << 3 | y;
- }
- }
- }
- else
- {
- var delta = rules.up;
- var i = row - 1;
- while(0 < delta && i >= 0)
- {
- if(!(chessBoard[i][col] == VOID || side != (chessBoard[i][col] & 1)))
- {
- break;
- }
- poMo[poMo.length] = row << 9 | col << 6 | i << 3 | col;
- if(chessBoard[i][col] != VOID)
- {
- break;
- }
- i--;
- delta--;
- }
- var delta = rules.down;
- var i = row + 1;
- while(0 < delta && i < 8)
- {
- if(!(chessBoard[i][col] == VOID || side != (chessBoard[i][col] & 1)))
- {
- break;
- }
- poMo[poMo.length] = row << 9 | col << 6 | i << 3 | col;
- if(chessBoard[i][col] != VOID)
- {
- break;
- }
- i++;
- delta--;
- }
- var delta = rules.left;
- var j = col - 1;
- while(0 < delta && j >= 0)
- {
- if(!(chessBoard[row][j] == VOID || side != (chessBoard[row][j] & 1)))
- {
- break;
- }
- poMo[poMo.length] = row << 9 | col << 6 | row << 3 | j;
- if(chessBoard[row][j] != VOID)
- {
- break;
- }
- j--;
- delta--;
- }
- var delta = rules.right;
- var j = col + 1;
- while(0 < delta && j < 8)
- {
- if(!(chessBoard[row][j] == VOID || side != (chessBoard[row][j] & 1)))
- {
- break;
- }
- poMo[poMo.length] = row << 9 | col << 6 | row << 3 | j;
- if(chessBoard[row][j] != VOID)
- {
- break;
- }
- j++;
- delta--;
- }
- var delta = rules.up_left;
- var i = row - 1;
- var j = col - 1;
- while(0 < delta && j >= 0 && i >= 0)
- {
- if(!(chessBoard[i][j] == VOID || side != (chessBoard[i][j] & 1)))
- {
- break;
- }
- poMo[poMo.length] = row << 9 | col << 6 | i << 3 | j;
- if(chessBoard[i][j] != VOID)
- {
- break;
- }
- i--;
- j--;
- delta--;
- }
- var delta = rules.up_right;
- var i = row - 1;
- var j = col + 1;
- while(0 < delta && j < 8 && i >= 0)
- {
- if(!(chessBoard[i][j] == VOID || side != (chessBoard[i][j] & 1)))
- {
- break;
- }
- poMo[poMo.length] = row << 9 | col << 6 | i << 3 | j;
- if(chessBoard[i][j] != VOID)
- {
- break;
- }
- i--;
- j++;
- delta--;
- }
- var delta = rules.down_left;
- var i = row + 1;
- var j = col - 1;
- while(0 < delta && j >= 0 && i < 8)
- {
- if(!(chessBoard[i][j] == VOID || side != (chessBoard[i][j] & 1)))
- {
- break;
- }
- poMo[poMo.length] = row << 9 | col << 6 | i << 3 | j;
- if(chessBoard[i][j] != VOID)
- {
- break;
- }
- i++;
- j--;
- delta--;
- }
- var delta = rules.down_right;
- var i = row + 1;
- var j = col + 1;
- while(0 < delta && j < 8 && i < 8)
- {
- if(!(chessBoard[i][j] == VOID || side != (chessBoard[i][j] & 1)))
- {
- break;
- }
- poMo[poMo.length] = row << 9 | col << 6 | i << 3 | j;
- if(chessBoard[i][j] != VOID)
- {
- break;
- }
- i++;
- j++;
- delta--;
- }
- }
- return poMo;
- }
- function checkChessState(side)
- {
- var row;
- var col;
- var i = 0;
- while(i < 8)
- {
- var j = 0;
- while(j < 8)
- {
- if((chessBoard[i][j] & 1) == getOpponent(side) && chessBoard[i][j] != VOID)
- {
- compMoves = calculateMoves(i,j,getOpponent(side));
- var k = 0;
- while(k < compMoves.length)
- {
- row = compMoves[k] >> 3 & 7;
- col = compMoves[k] & 7;
- if(chessBoard[row][col] == KING_W && side == SIDE_PLAYER || chessBoard[row][col] == KING_B && side == SIDE_COMPUTER)
- {
- if(side == SIDE_PLAYER)
- {
- kingInChess(row,col,side);
- }
- return false;
- }
- k++;
- }
- }
- j++;
- }
- i++;
- }
- if(side == SIDE_PLAYER)
- {
- var totalMoves = 0;
- var i = 0;
- while(i < 8)
- {
- var j = 0;
- while(j < 8)
- {
- if((chessBoard[i][j] & 1) == SIDE_PLAYER && chessBoard[i][j] != VOID)
- {
- totalMoves += select(i,j,true);
- }
- j++;
- }
- i++;
- }
- if(totalMoves == 0)
- {
- invalidateAll();
- messages.gotoAndStop("Pat");
- }
- }
- return true;
- }
- function computerLoose()
- {
- trace("ComputerLost");
- invalidateAll();
- messages.gotoAndStop(2);
- stop();
- }
- function deselect(piece)
- {
- resetAllSelection();
- pieceSelected = null;
- possiblePositions = null;
- }
- function displayMove(move, side)
- {
- var fPX = move >> 9 & 7;
- var fPY = move >> 6 & 7;
- var lPX = move >> 3 & 7;
- var lPY = move & 7;
- var text = " ";
- if(side == SIDE_COMPUTER)
- {
- text += "Comp: ";
- }
- else
- {
- text += "You: ";
- }
- text += letters[fPY];
- text += 9 - (fPX + 1);
- text += " - ";
- text += letters[lPY];
- text += 9 - (lPX + 1);
- _root.myscroll.appendText(text);
- }
- function do_move(move, side)
- {
- var pieceCaptured = VOID;
- var fPX = move >> 9 & 7;
- var fPY = move >> 6 & 7;
- var lPX = move >> 3 & 7;
- var lPY = move & 7;
- if(side == SIDE_COMPUTER)
- {
- if(chessBoard[lPX][lPY] != VOID)
- {
- pieceCaptured = chessBoard[lPX][lPY];
- playerScore -= chessBoard[lPX][lPY] >> 1;
- computerScore += chessBoard[lPX][lPY] >> 1;
- }
- chessBoard[lPX][lPY] = chessBoard[fPX][fPY];
- chessBoard[fPX][fPY] = VOID;
- return pieceCaptured;
- }
- if(chessBoard[lPX][lPY] != VOID)
- {
- pieceCaptured = chessBoard[lPX][lPY];
- playerScore += chessBoard[lPX][lPY] >> 1;
- computerScore -= chessBoard[lPX][lPY] >> 1;
- }
- chessBoard[lPX][lPY] = chessBoard[fPX][fPY];
- chessBoard[fPX][fPY] = VOID;
- return pieceCaptured;
- }
- function invalidateAll()
- {
- var i = 0;
- while(i < 8)
- {
- var j = 0;
- while(j < 8)
- {
- _root["piece_" + i + "_" + j].marker.gotoAndStop("disabled");
- j++;
- }
- i++;
- }
- }
- function movePlayer()
- {
- messages.gotoAndStop(0);
- resetAllSelection();
- checkChessState(SIDE_PLAYER);
- signal.gotoAndStop("player");
- }
- function moveRealPlayer(move, side)
- {
- var fPX = move >> 9 & 7;
- var fPY = move >> 6 & 7;
- var lPX = move >> 3 & 7;
- var lPY = move & 7;
- if(pieceSelected == null)
- {
- trace("ERROR: no piece selected");
- return undefined;
- }
- if(chessBoard[fPX][fPY] == KING_W && chessBoard[lPX][lPY] == ROOK_W)
- {
- trace("rocade");
- possibleRocade = false;
- chessBoard[fPX][fPY] = VOID;
- chessBoard[lPX][lPY] = VOID;
- if(fPY < lPY)
- {
- chessBoard[fPX][fPY + 2] = KING_W;
- chessBoard[fPX][fPY + 1] = ROOK_W;
- _root["piece_" + fPX + "_" + (fPY + 1)].showPiece(chessBoard[fPX][fPY + 1]);
- _root["piece_" + fPX + "_" + (fPY + 2)].showPiece(chessBoard[fPX][fPY + 2]);
- }
- else
- {
- chessBoard[fPX][fPY - 2] = KING_W;
- chessBoard[fPX][fPY - 1] = ROOK_W;
- _root["piece_" + fPX + "_" + (fPY - 1)].showPiece(chessBoard[fPX][fPY - 1]);
- _root["piece_" + fPX + "_" + (fPY - 2)].showPiece(chessBoard[fPX][fPY - 2]);
- }
- _root["piece_" + lPX + "_" + lPY].showPiece(chessBoard[lPX][lPY]);
- _root["piece_" + fPX + "_" + fPY].showPiece(chessBoard[fPX][fPY]);
- }
- else
- {
- if(chessBoard[fPX][fPY] == KING_W || chessBoard[fPX][fPY] == ROOK_W)
- {
- possibleRocade = false;
- }
- var target = chessBoard[lPX][lPY];
- if((target & 1) == SIDE_COMPUTER && target != VOID)
- {
- trace("capture the computer piece");
- }
- chessBoard[lPX][lPY] = chessBoard[fPX][fPY];
- chessBoard[fPX][fPY] = VOID;
- _root["piece_" + lPX + "_" + lPY].showPiece(chessBoard[lPX][lPY]);
- _root["piece_" + fPX + "_" + fPY].showPiece(VOID);
- }
- invalidateAll();
- if(lPX == 0 && chessBoard[lPX][lPY] == PAWN_W)
- {
- trace("promotion");
- chessBoard[lPX][lPY] = QUEEN_W;
- _root["piece_" + lPX + "_" + lPY].showPiece(QUEEN_W);
- }
- displayMove(move,SIDE_PLAYER);
- gotoAndPlay(7);
- }
- function moveRealComputer(move)
- {
- var fPX = move >> 9 & 7;
- var fPY = move >> 6 & 7;
- var lPX = move >> 3 & 7;
- var lPY = move & 7;
- var target = chessBoard[lPX][lPY];
- if((target & 1) == SIDE_PLAYER && target != VOID)
- {
- trace("captures the player piece");
- }
- chessBoard[lPX][lPY] = chessBoard[fPX][fPY];
- chessBoard[fPX][fPY] = VOID;
- _root["piece_" + lPX + "_" + lPY].showPiece(chessBoard[lPX][lPY]);
- _root["piece_" + fPX + "_" + fPY].showPiece(VOID);
- if(lPX == 7 && chessBoard[lPX][lPY] == PAWN_B)
- {
- trace("promotion");
- chessBoard[lPX][lPY] = QUEEN_B;
- _root["piece_" + lPX + "_" + lPY].showPiece(QUEEN_B);
- }
- displayMove(move,SIDE_COMPUTER);
- movePlayer();
- }
- function resetAllSelection()
- {
- var i = 0;
- while(i < 8)
- {
- var j = 0;
- while(j < 8)
- {
- if(chessBoard[i][j] == VOID || (chessBoard[i][j] & 1) == SIDE_COMPUTER)
- {
- _root["piece_" + i + "_" + j].marker.gotoAndStop("disabled");
- }
- else
- {
- _root["piece_" + i + "_" + j].marker.gotoAndStop("normal");
- }
- j++;
- }
- i++;
- }
- }
- function select(row, col, real)
- {
- resetAllSelection();
- var possibleMoves = calculateMoves(row,col,SIDE_PLAYER);
- if(possibleRocade && real != true)
- {
- if(chessBoard[row][col] == KING_W)
- {
- var k = col;
- var adv = true;
- while(adv)
- {
- k++;
- if(chessBoard[row][k] != VOID)
- {
- if(chessBoard[row][k] == ROOK_W)
- {
- if(verifyKingState(row << 9 | col << 6 | row << 3 | col + 2,SIDE_PLAYER))
- {
- possibleMoves[possibleMoves.length] = row << 9 | col << 6 | row << 3 | k;
- }
- }
- adv = false;
- }
- }
- k = col;
- adv = true;
- while(adv)
- {
- k--;
- if(chessBoard[row][k] != VOID)
- {
- if(chessBoard[row][k] == ROOK_W)
- {
- if(verifyKingState(row << 9 | col << 6 | row << 3 | col - 2,SIDE_PLAYER))
- {
- possibleMoves[possibleMoves.length] = row << 9 | col << 6 | row << 3 | k;
- }
- }
- adv = false;
- }
- }
- }
- }
- var validMoves = new Array();
- var i = 0;
- while(i < possibleMoves.length)
- {
- if(verifyKingState(possibleMoves[i],SIDE_PLAYER))
- {
- validMoves[validMoves.length] = possibleMoves[i];
- }
- i++;
- }
- if(real != true)
- {
- var i = 0;
- while(i < validMoves.length)
- {
- _root["piece_" + (validMoves[i] >> 3 & 7) + "_" + (validMoves[i] & 7)].marker.gotoAndStop("selectedTo");
- i++;
- }
- pieceSelected = _root["piece_" + row + "_" + col];
- }
- return validMoves.length;
- }
- function kingInChess(rowKing, colKing, side)
- {
- trace(" >>>> CHESS " + side);
- possibleRocade = false;
- if(side == SIDE_PLAYER)
- {
- messages.gotoAndStop("playerChess");
- }
- else
- {
- messages.gotoAndStop("computerChess");
- }
- var possibleMoves;
- var isChessMat = true;
- var i = 0;
- while(i < 8)
- {
- var j = 0;
- while(j < 8)
- {
- if((chessBoard[i][j] & 1) == side && chessBoard[i][j] != VOID)
- {
- possibleMoves = calculateMoves(i,j,side);
- disabled = true;
- var k = 0;
- while(k < possibleMoves.length)
- {
- if(verifyKingState(possibleMoves[k],side))
- {
- isChessMat = false;
- }
- k++;
- }
- }
- j++;
- }
- i++;
- }
- if(isChessMat)
- {
- loose(side);
- }
- }
- function loose(side)
- {
- if(side == SIDE_COMPUTER)
- {
- computerLoose();
- }
- else
- {
- playerLoose();
- }
- }
- function playerLoose()
- {
- trace("Player Lost");
- invalidateAll();
- messages.gotoAndStop(3);
- stop();
- }
- function search(side, depth, alpha, beta)
- {
- var bestScore = - INFINITY;
- var aM = new Array();
- var capturedPiece = null;
- var moveScore;
- var compMoves;
- var i = 0;
- while(i < 8)
- {
- var j = 0;
- while(j < 8)
- {
- if((chessBoard[i][j] & 1) == side && chessBoard[i][j] != VOID)
- {
- aM = aM.concat(calculateMoves(i,j,side));
- }
- j++;
- }
- i++;
- }
- var i = 0;
- while(i < aM.length)
- {
- capturedPiece = do_move(aM[i],side);
- if(depth == 0)
- {
- moveScore = side != SIDE_COMPUTER ? playerScore : computerScore;
- }
- else
- {
- moveScore = - search(getOpponent(side),depth - 1,-1 * beta,-1 * alpha);
- }
- undo_move(aM[i],side,capturedPiece);
- if(bestScore < moveScore)
- {
- bestScore = moveScore;
- }
- if(alpha < bestScore)
- {
- alpha = bestScore;
- }
- if(alpha >= beta)
- {
- return alpha;
- }
- i++;
- }
- return bestScore;
- }
- function shuffle(collection)
- {
- var nCollection = new Array();
- var value;
- var val;
- while(collection.length != 0)
- {
- val = Math.round(Math.random() * (collection.length - 1));
- value = collection[val];
- collection.splice(val,1);
- nCollection.push(value);
- }
- delete collection;
- return nCollection;
- }
- function getOpponent(side)
- {
- if(side == SIDE_PLAYER)
- {
- return SIDE_COMPUTER;
- }
- return SIDE_PLAYER;
- }
- function undo_move(move, side, pieceCaptured)
- {
- var fPX = move >> 9 & 7;
- var fPY = move >> 6 & 7;
- var lPX = move >> 3 & 7;
- var lPY = move & 7;
- if(side == SIDE_COMPUTER)
- {
- chessBoard[fPX][fPY] = chessBoard[lPX][lPY];
- if(pieceCaptured != VOID)
- {
- chessBoard[lPX][lPY] = pieceCaptured;
- playerScore += chessBoard[lPX][lPY] >> 1;
- computerScore -= chessBoard[lPX][lPY] >> 1;
- }
- else
- {
- chessBoard[lPX][lPY] = VOID;
- }
- }
- else
- {
- chessBoard[fPX][fPY] = chessBoard[lPX][lPY];
- if(pieceCaptured != VOID)
- {
- chessBoard[lPX][lPY] = pieceCaptured;
- playerScore -= chessBoard[lPX][lPY] >> 1;
- computerScore += chessBoard[lPX][lPY] >> 1;
- }
- else
- {
- chessBoard[lPX][lPY] = VOID;
- }
- }
- }
- function verifyKingState(move, side)
- {
- var capturedPiece;
- var compMoves;
- var row;
- var col;
- capturedPiece = do_move(move,side);
- var i = 0;
- while(i < 8)
- {
- var j = 0;
- while(j < 8)
- {
- if((chessBoard[i][j] & 1) == getOpponent(side) && chessBoard[i][j] != VOID)
- {
- compMoves = calculateMoves(i,j,getOpponent(side));
- var k = 0;
- while(k < compMoves.length)
- {
- row = compMoves[k] >> 3 & 7;
- col = compMoves[k] & 7;
- if(chessBoard[row][col] == KING_W && side == SIDE_PLAYER || chessBoard[row][col] == KING_B && side == SIDE_COMPUTER)
- {
- undo_move(move,side,capturedPiece);
- return false;
- }
- k++;
- }
- }
- j++;
- }
- i++;
- }
- undo_move(move,side,capturedPiece);
- return true;
- }
- VOID = -1;
- PAWN_W = 5;
- KNIGHT_W = 13;
- ROOK_W = 21;
- BISSHOP_W = 17;
- QUEEN_W = 29;
- KING_W = 2001;
- PAWN_B = 4;
- KNIGHT_B = 12;
- ROOK_B = 20;
- BISSHOP_B = 16;
- QUEEN_B = 28;
- KING_B = 4000;
- SIDE_COMPUTER = 0;
- SIDE_PLAYER = 1;
- letters = new Array("a","b","c","d","e","f","g","h");
- possibleRocade = true;
- pawnRules = new MovementRules();
- pawnRules.isPawn = true;
- pawnRules.up = 1;
- knightRules = new MovementRules();
- knightRules.isKnight = true;
- rookRules = new MovementRules();
- rookRules.up = 8;
- rookRules.down = 8;
- rookRules.left = 8;
- rookRules.right = 8;
- bisshopRules = new MovementRules();
- bisshopRules.up_left = 8;
- bisshopRules.up_right = 8;
- bisshopRules.down_left = 8;
- bisshopRules.down_right = 8;
- queenRules = new MovementRules();
- queenRules.up = 8;
- queenRules.down = 8;
- queenRules.left = 8;
- queenRules.right = 8;
- queenRules.up_left = 8;
- queenRules.up_right = 8;
- queenRules.down_left = 8;
- queenRules.down_right = 8;
- kingRules = new MovementRules();
- kingRules.up = 1;
- kingRules.down = 1;
- kingRules.left = 1;
- kingRules.right = 1;
- kingRules.up_left = 1;
- kingRules.up_right = 1;
- kingRules.down_left = 1;
- kingRules.down_right = 1;
- poMo = new Array();
- initChessBoard();
- movePlayer();
- myscroll.clearText();
- stop();
-