欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

自娱自乐的JS版中国象棋

程序员文章站 2022-07-12 10:35:25
...

想练技术,网上下载几个象棋游戏,居然连电脑也下不过,杯具啊 > <
网上下载的,大多都太专业,不方便吾等小菜鸟研究,看不懂棋谱 0 0 
遂按照自己的想法写了个简单版,潜心修炼。。希望有朝一日能叱咤棋坛 (想多了 ……) 

不敢独享,拿出来让大家一块玩玩

演示地址 http://jtcpp.4.huyi2.com/JScheese/index.html

用到了JQUERY库
代码写的比较随意,大家见谅,欢迎拍砖~

完整代码可以到我的资源中下载 ^_^

JScript code
// author:小弟 // MY QQ : 285037039 // PLAY FOR FUN // OH i love POINT :-) // 如果您对该CODE有什么建议和意见,请MAIL:285037039@qq.com // 功能简单,支持下棋、悔棋和棋盘翻转 function Character() { this .x = 0 ; this .y = 0 ; this .width = 0 ; this .height = 0 ; /* *0普通1DEAD */ this .state = 0 ; this .id = "" ; /* * 1车2马3相4士5帅6炮7卒子 */ this .type = 0 ; /* *方向,为卒子准备的 1↓走 2↑ - -。。 */ this .dir = 1 ; this .boardpos = 0 ; this .instance = {}; this .prepare = 0 ; this .aniTime = 500 ; this .show = function () { $( " # " + this .id).css( " left " , this .x); $( " # " + this .id).css( " top " , this .y); }; this .init = function () { var _this = this ; $( " # " + this .id).bind( " click " , function (){ _this.updateShow(); }); $( " # " + this .id).show(); } this .aniMove = function (despos) { var _this = this ; var _srcpos = this .boardpos; $( " # " + this .id).animate({left: this .instance.board[despos].x,top: this .instance.board[despos].y}, 200 , " swing " , function (){ _this.aniEat(_srcpos,despos); }); } this .aniEat = function (_srcpos,despos) { var hasindex = this .hasChessIndex( this .id,despos); if (hasindex != 0 ) { this .deleteChess(hasindex); var posstr = this .id + " | " + _srcpos + " | " + despos + " | " + this .instance.chessman[hasindex].id; this .instance.history.push(posstr); } else { var posstr = this .id + " | " + _srcpos + " | " + despos + " | " + "" ; this .instance.history.push(posstr); } // alert(this.boardpos); this .instance.filp(); } this .deleteChess = function (index) { if (index != 0 ) { $( " # " + this .instance.chessman[index].id).hide(); this .instance.chessman[index].boardpos = 0 ; if ( this .instance.chessman[index].id == " a5 " || this .instance.chessman[index].id == " b5 " ) { alert( " GAME OVER! " ); } } } this .hasChessIndex = function (exceptid,pos) { for ( var ic = 1 ;ic <= 32 ; ic ++ ) { if ( this .instance.chessman[ic].boardpos == pos && this .instance.chessman[ic].id != exceptid) { return ic; } } return 0 ; } this .updateShow = function () { var id = ( this .id.substring( 0 , 1 )); // alert(this.dir + " " + this.instance.turn); if (id == " a " && this .instance.turn == 1 ) { // alert(this.prepare); if ( this .prepare == 0 ) { this .prepare0(); this .prepare = 1 ; } else { if ( this .instance.indacatorsrcPos == this .boardpos) { return false ; } if ( ! this .validation( this .boardpos, this .instance.indacatorsrcPos)) { return false ; } this .prepare1(); this .instance.turn = 2 ; } } else if ( id == " b " && this .instance.turn == 2 ) { if ( this .prepare == 0 ) { this .prepare0(); this .prepare = 1 ; } else { if ( this .instance.indacatorsrcPos == this .boardpos) { return false ; } if ( ! this .validation( this .boardpos, this .instance.indacatorsrcPos)) { return false ; } this .prepare1(); this .instance.turn = 1 ; } } } this .prepare0 = function () { $( " #indacatordir " ).css( " left " , this .instance.board[ this .boardpos].x); $( " #indacatordir " ).css( " top " , this .instance.board[ this .boardpos].y); $( " #indacatordir " ).show(); for ( var i = 1 ;i <= 32 ;i ++ ) { this .instance.chessman[i].prepare = 0 ; } this .prepare = 1 ; return 1 ; } this .prepare1 = function () { this .prepare = 0 ; $( " #indacatordir " ).hide(); this .aniMove( this .instance.indacatorsrcPos); this .boardpos = this .instance.indacatorsrcPos; return 1 ; } this .validation = function (srcpos,despos) { var chessindex = 0 ; var chesstype = 0 ; var chesscolor = 1 ; var isValidation = true ; for ( var ic = 1 ;ic <= 32 ;ic ++ ) { if ( this .instance.chessman[ic].boardpos == srcpos) { chessindex = ic; chesstype = this .instance.chessman[ic].type; chesscolor = this .dir; break ; } } if (chessindex == 0 ) { return false ; } switch (chesstype) { case 1 : isValidation = this .validChe(chessindex,srcpos,despos); break ; case 2 : isValidation = this .validMa(chessindex,srcpos,despos); break ; case 3 : isValidation = this .validXiang(chessindex,srcpos,despos); break ; case 4 : isValidation = this .validShi(chessindex,srcpos,despos); break ; case 5 : isValidation = this .validJiang(chessindex,srcpos,despos); break ; case 6 : isValidation = this .validPao(chessindex,srcpos,despos); break ; case 7 : isValidation = this .validBing(chessindex,srcpos,despos); break ; default : isValidation = false ; break ; } return isValidation; } this .getColumn = function (pos) { if (pos < 0 || pos > 90 ) { return 0 ; } return parseInt((pos - 1 ) % 9 + 1 ); } this .getRow = function (pos) { if (pos < 0 || pos > 90 ) { return 0 ; } return parseInt((pos - 1 ) / 9+1); } this .getPos = function (row,col) { if (row < 1 || row > 10 ) { return 0 ; } if (col < 1 || col > 9 ) { return 0 ; } return parseInt( (row - 1 ) * 9 + Number(col) ); } /* *0空1红2黑 */ this .hasChess = function (pos) { for ( var i = 1 ;i <= 32 ;i ++ ) { if ( this .instance.chessman[i].boardpos == pos) { return this .instance.chessman[i].dir; } } return 0 ; } this .validChe = function (chessindex,srcpos,despos) { var srccol = this .getColumn(srcpos); var srcrow = this .getRow(srcpos); var descol = this .getColumn(despos); var desrow = this .getRow(despos); var ishor = false ; var isver = false ; if (srccol == descol) { isver = true ; } if (srcrow == desrow) { ishor = true ; } if ( ! isver && ! ishor) { return false ; } if (srcrow != desrow && srccol != descol) { return false ; } if ( this .hasChess(despos) == this .dir) { return false ; } var begin = 0 ; var end = 0 ; var chessCount = 0 ; if ( ishor ) { if (srccol < descol) { begin = srccol; end = descol; } else { begin = descol; end = srccol; } for ( var i = Number(begin) + 1 ;i < end;i ++ ) { if ( this .hasChess( this .getPos(srcrow,i)) > 0 ) { return false ; } } } else if (isver) { if (srcrow < desrow) { begin = srcrow; end = desrow; } else { begin = desrow; end = srcrow; } for ( var i = Number(begin) + 1 ;i < end;i ++ ) { if ( this .hasChess( this .getPos(i,srccol)) > 0 ) { return false ; } } } return true ; }
this .validMa = function (chessindex,srcpos,despos) { var row = this .getRow(srcpos); var col = this .getColumn(srcpos); var dirType = 0 ; if ( col < 9 && row > 2 && despos == Number(srcpos) - 17 ) { dirType = 1 ; } else if ( col < 8 && row > 1 && despos == Number(srcpos) - 7 ) { dirType = 2 ; } else if ( col < 8 && row < 10 && despos == Number(srcpos) + 11 ) { dirType = 2 ; } else if ( col < 9 && row < 9 && despos == Number(srcpos) + 19 ) { dirType = 3 ; } else if ( col > 1 && row < 9 && despos == Number(srcpos) + 17 ) { dirType = 3 ; } else if ( col > 2 && row < 10 && despos == Number(srcpos) + 7 ) { dirType = 4 ; } else if ( col > 2 && row > 1 && despos == Number(srcpos) - 11 ) { dirType = 4 ; } else if ( col > 1 && row > 2 && despos == Number(srcpos) - 19 ) { dirType = 1 ; } else { return false ; } if ( this .hasChess(despos) == this .dir) { return false ; } var tmp = 0 ; switch (dirType){ case 1 : tmp = Number(srcpos) - 9 ; break ; case 2 : tmp = Number(srcpos) + 1 ; break ; case 3 : tmp = Number(srcpos) + 9 ; break ; case 4 : tmp = Number(srcpos) - 1 ; break ; default : return false ; break ; } if (tmp < 1 || tmp > 90 ) { return false ; } if ( this .hasChess(tmp) > 0 ) { return false ; } return true ; } this .validXiang = function (chessindex,srcpos,despos) { var isValid = false ; var srccol = this .getColumn(srcpos); var srcrow = this .getRow(srcpos); var descol = this .getColumn(despos); var desrow = this .getRow(despos); // alert(srcrow); // alert(srcpos + " " + srcrow); var xAddr = new Array( 3 ); xAddr[ 1 ] = new Array( 3 , 7 , 19 , 23 , 27 , 39 , 43 ); xAddr[ 2 ] = new Array( 48 , 52 , 64 , 68 , 72 , 84 , 88 ); var clag = new Array( 3 ); clag[ 1 ] = new Array( 11 , 13 , 15 , 17 , 29 , 31 , 33 , 35 ); clag[ 2 ] = new Array( 56 , 58 , 60 , 62 , 74 , 76 , 78 , 80 ); if ( this .hasChess(despos) == this .dir) { return false ; } for ( var i = 0 ;i < xAddr[ this .dir].length;i ++ ) { if (despos == (xAddr[ this .dir])[i]) { isValid = true ; break ; } } if ( ! isValid) { return false ; } var tmprow = desrow - srcrow > 0 ? 1 : - 1 ; var tmpcol = descol - srccol > 0 ? 1 : - 1 ; if (Math.abs(desrow - srcrow) != 2 || Math.abs(descol - srccol) != 2 ) { return false ; } if ( this .hasChess( this .getPos(Number(srcrow) + Number(tmprow),Number(srccol) + Number(tmpcol)))) { return false ; } return true ; } this .validShi = function (chessindex,srcpos,despos) { var isValid = false ; var sAddr = new Array( 3 ); sAddr[ 1 ] = new Array( 4 , 6 , 14 , 22 , 24 ); sAddr[ 2 ] = new Array( 67 , 69 , 77 , 85 , 87 ); var srccol = this .getColumn(srcpos); var srcrow = this .getRow(srcpos); var descol = this .getColumn(despos); var desrow = this .getRow(despos); // alert(1); for ( var i = 0 ;i < sAddr[ this .dir].length;i ++ ) { if (despos == (sAddr[ this .dir])[i]) { isValid = true ; break ; } } if ( ! isValid) { return false ; } if ( this .hasChess(despos) == this .dir) { return false ; } var tmprow = desrow - srcrow > 0 ? 1 : - 1 ; var tmpcol = descol - srccol > 0 ? 1 : - 1 ; if (Math.abs(desrow - srcrow) != 1 || Math.abs(descol - srccol) != 1 ) { return false ; } return true ; } this .validJiang = function (chessindex,srcpos,despos) { var srccol = this .getColumn(srcpos); var srcrow = this .getRow(srcpos); var descol = this .getColumn(despos); var desrow = this .getRow(despos); var sAddr = new Array( 3 ); sAddr[ 1 ] = new Array( 4 , 5 , 6 , 13 , 14 , 15 , 22 , 23 , 24 ); sAddr[ 2 ] = new Array( 67 , 68 , 69 , 76 , 77 , 78 , 85 , 86 , 87 ); var isValid = false ; if ( this .hasChess(despos) == this .dir) { return false ; } if (Math.abs(srccol - descol) > 1 || Math.abs(srcrow - desrow) > 1 ) { return false ; } for ( var i = 0 ;i < sAddr[ this .dir].length;i ++ ) { if (despos == (sAddr[ this .dir])[i]) { isValid = true ; break ; } } if ( ! isValid) { return false ; } if (srccol != descol && srcrow != desrow ) { return false ; } return true ; } this .validPao = function (chessindex,srcpos,despos) { var srccol = this .getColumn(srcpos); var srcrow = this .getRow(srcpos); var descol = this .getColumn(despos); var desrow = this .getRow(despos); var ishor = false ; var isver = false ; var iseat = false ; if (srccol == descol) { isver = true ; } if (srcrow == desrow) { ishor = true ; } if ( ! isver && ! ishor) { return false ; } if (srcrow != desrow && srccol != descol) { return false ; } if ( this .hasChess(despos) == this .dir) { return false ; } else if ( this .hasChess(despos) == 3 - this .dir) { iseat = true ; } var begin = 0 ; var end = 0 ; var chessCount = 0 ; if ( ishor ) { if (srccol < descol) { begin = srccol; end = descol; } else { begin = descol; end = srccol; } for ( var i = begin;i <= end;i ++ ) { if ( this .hasChess( this .getPos(srcrow,i)) > 0 ) { chessCount ++ ; } } } else if (isver) { if (srcrow < desrow) { begin = srcrow; end = desrow; } else { begin = desrow; end = srcrow; } for ( var i = begin;i <= end;i ++ ) { if ( this .hasChess( this .getPos(i,srccol)) > 0 ) { chessCount ++ ; } } } // alert(chessCount + " " + iseat); // alert(chessCount); if ((iseat && chessCount != 3 ) ) { // alert(1); return false ; } else if ( ! iseat && chessCount > 1 ) { // alert(chessCount); return false ; } return true ; } this .validBing = function (chessindex,srcpos,despos) { var srccol = this .getColumn(srcpos); var srcrow = this .getRow(srcpos); var descol = this .getColumn(despos); var desrow = this .getRow(despos); var ishor = false ; // var ins = this.dir == 1 ? 1 : -1; if ( this .hasChess(despos) == this .dir ) { return false ; } if (srcrow != desrow && srccol != descol) { return false ; } if (Math.abs(srccol - descol) > 1 || Math.abs(srcrow - desrow) > 1 ) { return false ; } if (srcrow == desrow) { ishor = true ; } if (srccol == 1 && descol < srccol) { return false ; } if (srccol == 9 && descol > srccol) { return false ; } // alert(srccol); if ( this .dir == 1 ) { if (srcrow > desrow) { return false ; } if (ishor) { if (srcrow < 6 ) { return false ; } } } else { if (srcrow < desrow) { return false ; } if (ishor) { if (srcrow > 5 ) { return false ; } } } return true ; } this .boardClick = function () { if ( this .prepare == 1 ) { this .updateShow(); } } } function Rect() { this .minChar = {}; this .maxChar = {}; this .child = new Array(); this .index = "" ; this .root = "" ; } function Chessman() { this .x = 0 ; this .y = 0 ; } function Chess() { this .board = new Array(); this .chessman = new Array(); this .offsetX = 43 / 2; this .offsetY = 43 / 2; this .boardStartPointUpX = 35 ; this .boardStartPointUpY = 30 ; this .boardStartPointDownX = 35 ; this .boardStartPointDownY = 272 ; this .boardTileWidth = 48 ; this .boardTileHeight = 49 ; this .mouseX = 0 ; this .mouseY = 0 ; /* *0未移动 1移动发生 */ this .isMove = 0 ; this .rectRootMap = new Rect(); /* *1红2黑 */ this .turn = 1 ; this .indacatorsrcStay = 0 ; this .indacatordirStay = 0 ; this .selectChess = 0 ; this .indacatorsrcPos = 0 ; this .history = new Array(); this .backlock = false ; }
Chess.prototype.init = function () { for ( var i1 = 1 ;i1 <= 5 ;i1 ++ ) { for ( var i2 = 1 ;i2 <= 9 ;i2 ++ ) { var tmp = new Character(); tmp.x = this .boardStartPointUpX + this .boardTileWidth * (i2 - 1 ) - this .offsetX; tmp.y = this .boardStartPointUpY + this .boardTileHeight * (i1 - 1 ) - this .offsetY; this .board[(i1 - 1 ) * 9 + i2] = tmp; } } for ( var i1 = 6 ;i1 <= 10 ;i1 ++ ) { for ( var i2 = 1 ;i2 <= 9 ;i2 ++ ) { var tmp = new Character(); tmp.x = this .boardStartPointDownX + this .boardTileWidth * (i2 - 1 ) - this .offsetX; tmp.y = this .boardStartPointDownY + this .boardTileHeight * (i1 - 1 - 5 ) - this .offsetY; this .board[(i1 - 1 ) * 9 + i2] = tmp; } } // alert(this.board[5].x); for ( var i = 1 ;i <= 32 ;i ++ ) { var char = new Character(); this .chessman[i] = char ; } this .initChessmanPos(); // alert(this.chessman[6].boardpos); // alert(this.board[5].x); var instance = this ; $( " #board " ).bind( " mousemove " ,{fo: this }, function (e){ e.data.fo.boardMouseMove(e); }); this .isMove = 1 ; var callback = function () { instance.show(); } this .initIndexMap(); $( " #board " ).bind( " click " , function () { for ( var i = 1 ;i <= 32 ;i ++ ) { instance.chessman[i].boardClick(); } }); $( " #button_begin " ).bind( " mouseover " , function (){ $( this ).css( " background " , " url(images/button_begin.gif) -108px 0px " );}); $( " #button_begin " ).bind( " mousedown " , function (){ $( this ).css( " background " , " url(images/button_begin.gif) -54px 0px " );}); $( " #button_begin " ).bind( " mouseout " , function (){ $( this ).css( " background " , " url(images/button_begin.gif) -0px 0px " );}); $( " #button_begin " ).bind( " mouseup " , function (){ $( this ).css( " background " , " url(images/button_begin.gif) -0px 0px " );instance.aniBegin();instance.initChessmanPos();}); $( " #button_regret " ).bind( " mouseover " , function (){ $( this ).css( " background " , " url(images/button_regret.gif) -102px 0px " );}); $( " #button_regret " ).bind( " mousedown " , function (){ $( this ).css( " background " , " url(images/button_regret.gif) -51px 0px " );}); $( " #button_regret " ).bind( " mouseout " , function (){ $( this ).css( " background " , " url(images/button_regret.gif) -0px 0px " );}); $( " #button_regret " ).bind( " mouseup " , function (){ $( this ).css( " background " , " url(images/button_regret.gif) -0px 0px " ); if (instance.backlock) { alert(instance.backlock); return ; } // alert("this.backlock=true"); instance.backlock = true ; instance.chessBack(); }); setInterval(callback, 100 ); // this.show(); } Chess.prototype.initChessmanPos = function () { this .chessman[ 1 ].id = " a1 " ; this .chessman[ 1 ].dir = 1 ; this .chessman[ 1 ].type = 1 ; this .chessman[ 1 ].boardpos = 1 ; this .chessman[ 2 ].id = " a2 " ; this .chessman[ 2 ].dir = 1 ; this .chessman[ 2 ].type = 2 ; this .chessman[ 2 ].boardpos = 2 ; this .chessman[ 3 ].id = " a3 " ; this .chessman[ 3 ].dir = 1 ; this .chessman[ 3 ].type = 3 ; this .chessman[ 3 ].boardpos = 3 ; this .chessman[ 4 ].id = " a4 " ; this .chessman[ 4 ].dir = 1 ; this .chessman[ 4 ].type = 4 ; this .chessman[ 4 ].boardpos = 4 ; this .chessman[ 5 ].id = " a5 " ; this .chessman[ 5 ].dir = 1 ; this .chessman[ 5 ].type = 5 ; this .chessman[ 5 ].boardpos = 5 ; this .chessman[ 6 ].id = " a6 " ; this .chessman[ 6 ].dir = 1 ; this .chessman[ 6 ].type = 4 ; this .chessman[ 6 ].boardpos = 6 ; this .chessman[ 7 ].id = " a7 " ; this .chessman[ 7 ].dir = 1 ; this .chessman[ 7 ].type = 3 ; this .chessman[ 7 ].boardpos = 7 ; this .chessman[ 8 ].id = " a8 " ; this .chessman[ 8 ].dir = 1 ; this .chessman[ 8 ].type = 2 ; this .chessman[ 8 ].boardpos = 8 ; this .chessman[ 9 ].id = " a9 " ; this .chessman[ 9 ].dir = 1 ; this .chessman[ 9 ].type = 1 ; this .chessman[ 9 ].boardpos = 9 ; this .chessman[ 10 ].id = " a10 " ; this .chessman[ 10 ].dir = 1 ; this .chessman[ 10 ].type = 6 ; this .chessman[ 10 ].boardpos = 20 ; this .chessman[ 11 ].id = " a11 " ; this .chessman[ 11 ].dir = 1 ; this .chessman[ 11 ].type = 6 ; this .chessman[ 11 ].boardpos = 26 ; this .chessman[ 12 ].id = " a12 " ; this .chessman[ 12 ].dir = 1 ; this .chessman[ 12 ].type = 7 ; this .chessman[ 12 ].boardpos = 28 ; this .chessman[ 13 ].id = " a13 " ; this .chessman[ 13 ].dir = 1 ; this .chessman[ 13 ].type = 7 ; this .chessman[ 13 ].boardpos = 30 ; this .chessman[ 14 ].id = " a14 " ; this .chessman[ 14 ].dir = 1 ; this .chessman[ 14 ].type = 7 ; this .chessman[ 14 ].boardpos = 32 ; this .chessman[ 15 ].id = " a15 " ; this .chessman[ 15 ].dir = 1 ; this .chessman[ 15 ].type = 7 ; this .chessman[ 15 ].boardpos = 34 ; this .chessman[ 16 ].id = " a16 " ; this .chessman[ 16 ].dir = 1 ; this .chessman[ 16 ].type = 7 ; this .chessman[ 16 ].boardpos = 36 ; this .chessman[ 17 ].id = " b1 " ; this .chessman [ 17 ].dir = 2 ; this .chessman[ 17 ].type = 1 ; this .chessman[ 17 ].boardpos = 82 ; this .chessman[ 18 ].id = " b2 " ; this .chessman [ 18 ].dir = 2 ; this .chessman[ 18 ].type = 2 ; this .chessman[ 18 ].boardpos = 83 ; this .chessman[ 19 ].id = " b3 " ; this .chessman [ 19 ].dir = 2 ; this .chessman[ 19 ].type = 3 ; this .chessman[ 19 ].boardpos = 84 ; this .chessman[ 20 ].id = " b4 " ; this .chessman [ 20 ].dir = 2 ; this .chessman[ 20 ].type = 4 ; this .chessman[ 20 ].boardpos = 85 ; this .chessman[ 21 ].id = " b5 " ; this .chessman [ 21 ].dir = 2 ; this .chessman[ 21 ].type = 5 ; this .chessman[ 21 ].boardpos = 86 ; this .chessman[ 22 ].id = " b6 " ; this .chessman [ 22 ].dir = 2 ; this .chessman[ 22 ].type = 4 ; this .chessman[ 22 ].boardpos = 87 ; this .chessman[ 23 ].id = " b7 " ; this .chessman [ 23 ].dir = 2 ; this .chessman[ 23 ].type = 3 ; this .chessman[ 23 ].boardpos = 88 ; this .chessman[ 24 ].id = " b8 " ; this .chessman [ 24 ].dir = 2 ; this .chessman[ 24 ].type = 2 ; this .chessman[ 24 ].boardpos = 89 ; this .chessman[ 25 ].id = " b9 " ; this .chessman [ 25 ].dir = 2 ; this .chessman[ 25 ].type = 1 ; this .chessman[ 25 ].boardpos = 90 ; this .chessman[ 26 ].id = " b10 " ; this .chessman[ 26 ].dir = 2 ; this .chessman[ 26 ].type = 6 ; this .chessman[ 26 ].boardpos = 65 ; this .chessman[ 27 ].id = " b11 " ; this .chessman[ 27 ].dir = 2 ; this .chessman[ 27 ].type = 6 ; this .chessman[ 27 ].boardpos = 71 ; this .chessman[ 28 ].id = " b12 " ; this .chessman[ 28 ].dir = 2 ; this .chessman[ 28 ].type = 7 ; this .chessman[ 28 ].boardpos = 55 ; this .chessman[ 29 ].id = " b13 " ; this .chessman[ 29 ].dir = 2 ; this .chessman[ 29 ].type = 7 ; this .chessman[ 29 ].boardpos = 57 ; this .chessman[ 30 ].id = " b14 " ; this .chessman[ 30 ].dir = 2 ; this .chessman[ 30 ].type = 7 ; this .chessman[ 30 ].boardpos = 59 ; this .chessman[ 31 ].id = " b15 " ; this .chessman[ 31 ].dir = 2 ; this .chessman[ 31 ].type = 7 ; this .chessman[ 31 ].boardpos = 61 ; this .chessman[ 32 ].id = " b16 " ; this .chessman[ 32 ].dir = 2 ; this .chessman[ 32 ].type = 7 ; this .chessman[ 32 ].boardpos = 63 ; for ( var i = 1 ;i <= 32 ;i ++ ) { // alert(iq+"=="+this.chessman[iq].boardpos+"=="+this.board[this.chessman[iq].boardpos].x); this .chessman[i].x = this .board[ this .chessman[i].boardpos].x; this .chessman[i].y = this .board[ this .chessman[i].boardpos].y; this .chessman[i].instance = this ; this .chessman[i].init(); this .chessman[i].show(); } this .turn = 1 ; this .filp(); } Chess.prototype.chessBack = function () { if ( this .history.length == 0 ) { this .backlock = false ; return false ; } var index = this .history.length - 1 ; var historyVal = this .history[index]; var chessInfo = historyVal.split( " | " ); this .filp(); for ( var i = 1 ;i <= 32 ;i ++ ) { if ( this .chessman[i].id == chessInfo[ 0 ]) { this .chessman[i].boardpos = chessInfo[ 1 ]; this .turn = 3 - this .turn; $( " # " + this .chessman[i].id).css( " left " , this .board[chessInfo[ 1 ]].x); $( " # " + this .chessman[i].id).css( " top " , this .board[chessInfo[ 1 ]].y); $( " # " + this .chessman[i].id).show(); } if ( this .chessman[i].id == chessInfo[ 3 ]) { this .chessman[i].boardpos = chessInfo[ 2 ]; $( " # " + this .chessman[i].id).css( " left " , this .board[chessInfo[ 2 ]].x); $( " # " + this .chessman[i].id).css( " top " , this .board[chessInfo[ 2 ]].y); $( " # " + this .chessman[i].id).show(); } } // alert(index); this .history.splice(index); // alert(this.backlock); this .backlock = false ; // alert(this.backlock); }
Chess.prototype.initIndexMap = function () { /* *1 */ this .rectRootMap.minChar = this .board[ 1 ]; this .rectRootMap.maxChar = this .board[ 90 ]; this .rectRootMap.root = " root " ; /* *2 */ var rect_2_1 = new Rect(); rect_2_1.minChar = this .board[ 1 ]; rect_2_1.maxChar = this .board[ 41 ]; var rect_2_2 = new Rect(); rect_2_2.minChar = this .board[ 5 ]; rect_2_2.maxChar = this .board[ 45 ]; var rect_2_3 = new Rect(); rect_2_3.minChar = this .board[ 37 ]; rect_2_3.maxChar = this .board[ 77 ]; var rect_2_4 = new Rect(); rect_2_4.minChar = this .board[ 41 ]; rect_2_4.maxChar = this .board[ 81 ]; var rect_2_5 = new Rect(); rect_2_5.minChar = this .board[ 73 ]; rect_2_5.maxChar = this .board[ 90 ]; /* *3 */ var rect_3_1 = new Rect(); rect_3_1.minChar = this .board[ 1 ]; rect_3_1.maxChar = this .board[ 21 ]; var rect_3_2 = new Rect(); rect_3_2.minChar = this .board[ 3 ]; rect_3_2.maxChar = this .board[ 23 ]; var rect_3_3 = new Rect(); rect_3_3.minChar = this .board[ 19 ]; rect_3_3.maxChar = this .board[ 39 ]; var rect_3_4 = new Rect(); rect_3_4.minChar = this .board[ 21 ]; rect_3_4.maxChar = this .board[ 41 ]; var rect_3_5 = new Rect(); rect_3_5.minChar = this .board[ 5 ]; rect_3_5.maxChar = this .board[ 25 ]; var rect_3_6 = new Rect(); rect_3_6.minChar = this .board[ 7 ]; rect_3_6.maxChar = this .board[ 27 ]; var rect_3_7 = new Rect(); rect_3_7.minChar = this .board[ 23 ]; rect_3_7.maxChar = this .board[ 43 ]; var rect_3_8 = new Rect(); rect_3_8.minChar = this .board[ 25 ]; rect_3_8.maxChar = this .board[ 45 ]; var rect_3_9 = new Rect(); rect_3_9.minChar = this .board[ 37 ]; rect_3_9.maxChar = this .board[ 57 ]; var rect_3_10 = new Rect(); rect_3_10.minChar = this .board[ 39 ]; rect_3_10.maxChar = this .board[ 59 ]; var rect_3_11 = new Rect(); rect_3_11.minChar = this .board[ 55 ]; rect_3_11.maxChar = this .board[ 75 ]; var rect_3_12 = new Rect(); rect_3_12.minChar = this .board[ 57 ]; rect_3_12.maxChar = this .board[ 77 ]; var rect_3_13 = new Rect(); rect_3_13.minChar = this .board[ 41 ]; rect_3_13.maxChar = this .board[ 61 ]; var rect_3_14 = new Rect(); rect_3_14.minChar = this .board[ 43 ]; rect_3_14.maxChar = this .board[ 63 ]; var rect_3_15 = new Rect(); rect_3_15.minChar = this .board[ 59 ]; rect_3_15.maxChar = this .board[ 79 ]; var rect_3_16 = new Rect(); rect_3_16.minChar = this .board[ 61 ]; rect_3_16.maxChar = this .board[ 81 ]; var rect_3_17 = new Rect(); rect_3_17.minChar = this .board[ 73 ]; rect_3_17.maxChar = this .board[ 86 ]; var rect_3_18 = new Rect(); rect_3_18.minChar = this .board[ 77 ]; rect_3_18.maxChar = this .board[ 90 ]; this .rectRootMap.child.push(rect_2_1); this .rectRootMap.child.push(rect_2_2); this .rectRootMap.child.push(rect_2_3); this .rectRootMap.child.push(rect_2_4); this .rectRootMap.child.push(rect_2_5); rect_2_1.child.push(rect_3_1); rect_2_1.child.push(rect_3_2); rect_2_1.child.push(rect_3_3); rect_2_1.child.push(rect_3_4); rect_2_2.child.push(rect_3_5); rect_2_2.child.push(rect_3_6); rect_2_2.child.push(rect_3_7); rect_2_2.child.push(rect_3_8); rect_2_3.child.push(rect_3_9); rect_2_3.child.push(rect_3_10); rect_2_3.child.push(rect_3_11); rect_2_3.child.push(rect_3_12); rect_2_4.child.push(rect_3_13); rect_2_4.child.push(rect_3_14); rect_2_4.child.push(rect_3_15); rect_2_4.child.push(rect_3_16); rect_2_5.child.push(rect_3_17); rect_2_5.child.push(rect_3_18); /* *4 */ rect_3_1.index = " 1,2,3,10,11,12,19,20,21 " ; rect_3_2.index = " 3,4,5,12,13,14,21,22,23 " ; rect_3_3.index = " 19,20,21,28,29,30,37,38,39 " ; rect_3_4.index = " 21,22,23,30,31,32,39,40,41 " ; rect_3_5.index = " 5,6,7,14,15,16,23,24,25 " ; rect_3_6.index = " 7,8,9,16,17,18,25,26,27 " ; rect_3_7.index = " 23,24,25,32,33,34,41,42,43 " ; rect_3_8.index = " 25,26,27,34,35,36,43,44,45 " ; rect_3_9.index = " 37,38,39,46,47,48,55,56,57 " ; rect_3_10.index = " 39,40,41,48,49,50,57,58,59 " ; rect_3_11.index = " 55,56,57,64,65,66,73,74,75 " ; rect_3_12.index = " 57,58,59,66,67,68,75,76,77 " ; rect_3_13.index = " 41,42,43,50,51,52,59,60,61 " ; rect_3_14.index = " 43,44,45,52,53,54,61,62,63 " ; rect_3_15.index = " 59,60,61,68,69,70,77,78,79 " ; rect_3_16.index = " 61,62,63,70,71,72,79,80,81 " ; rect_3_17.index = " 73,74,75,76,77,82,83,84,85,86 " ; rect_3_18.index = " 77,78,79,80,81,86,87,88,89,90 " ; } Chess.prototype.filp = function () { for ( var i = 1 ;i <= 32 ;i ++ ) { if ( this .chessman[i].boardpos == 0 ) { continue ; } this .chessman[i].boardpos = 91 - this .chessman[i].boardpos; this .chessman[i].dir = 3 - this .chessman[i].dir; // this.turn = 3 - this.turn; this .chessman[i].x = this .board[ this .chessman[i].boardpos].x; this .chessman[i].y = this .board[ this .chessman[i].boardpos].y; this .chessman[i].show(); } } Chess.prototype.start = function () { this .init(); } Chess.prototype.show = function () { /* if(this.isMove) { for( var i=1;i<=32;i++) { this.chessman[i].show(); } this.isMove = 0; } */ } Chess.prototype.boardMouseMove = function (e) { this .mouseX = e.pageX - $( " #board " )[ 0 ].offsetLeft - this .offsetX; this .mouseY = e.pageY - $( " #board " )[ 0 ].offsetTop - this .offsetY; var index = this .searchIndex( this .mouseX, this .mouseY); $( " #test " ).text( this .mouseX + " ---- " + this .mouseY + " ---index= " + index + " board 10= " + this .board[ 20 ].x + " - " + this .board[ 20 ].y + " --chessman[1].boardpos= " + this .chessman[ 1 ].boardpos); if (index > 0 ) { this .indacatorsrcPos = index; $( " #indacatorsrc " ).css( " left " , this .board[index].x); $( " #indacatorsrc " ).css( " top " , this .board[index].y); } } Chess.prototype.aniBegin = function () { this .history = null ; this .history = new Array(); // $("#a1").animate({left:100,top:200},1000,"swing",function(){alert(12313);}); // alert(1); } Chess.prototype.searchIndex = function (x,y) { if (x > this .rectRootMap.minChar.x - 30 && x < this .rectRootMap.maxChar.x + 30 && y > this .rectRootMap.minChar.y - 30 && y < this .rectRootMap.maxChar.y + 30 ) { return this .searchBack( this .rectRootMap,x,y); } else { return 0 ; } return 0 ; } Chess.prototype.searchBack = function (instance,x,y) { var child = instance.child; if (child != undefined && instance.child.length > 0 ) { for ( var i = 0 ;i < child.length;i ++ ) { if (x > child[i].minChar.x - 20 && x < child[i].maxChar.x + 20 && y > child[i].minChar.y - 20 && y < child[i].maxChar.y + 20 ) { return this .searchBack(child[i],x,y); } } } else { child = instance; var indexarr = child.index.split( " , " ); for ( var i = 0 ;i < indexarr.length;i ++ ) { if (indexarr[i] == "" ) { continue ; } // $("#test").text(child.index + "----" + this.mouseX + "---x=" + x + "index=" + ""); if ( x > this .board[indexarr[i]].x - 20 && x < this .board[indexarr[i]].x + 20 && y > this .board[indexarr[i]].y - 20 && y < this .board[indexarr[i]].y + 20 ) { return indexarr[i]; } } } return 0 ; }