`
saybody
  • 浏览: 870651 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

自娱自乐的JS版中国象棋

 
阅读更多

想练技术,网上下载几个象棋游戏,居然连电脑也下不过,杯具啊 > <
网上下载的,大多都太专业,不方便吾等小菜鸟研究,看不懂棋谱 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 ; }
0
4
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics