checkrule.js

/*****************************************/ /****************棋子的走法***************/ /*****************************************/ function check(chess, from, to){ /****************************[卒]*******************************/ if(chess == "011" || chess == "012" || chess == "013" || chess == "014" || chess == "015"){   //控制黑旗卒的走法 if(from >= 46 && (from - to == 1 || to - from == 1)) return 1;    //横向走 if(to - from == 9)  //卒字必须向前走,因此它的目的坐标减去走前的坐标必须等于9,说明走的是直线 return 1;    //向前走一步 } if(chess == "111" || chess == "112" || chess == "113" || chess == "114" || chess == "115"){   //控制黑旗卒的走法 if(from <= 45 && (from - to == 1 || to - from == 1)) return 1;   //横向走 if(from - to == 9) //卒字必须向前走,因此它的原点坐标减去目的坐标必须等于9,说明走的是直线 return 1;   //向前走一步 } /*****************************[炮]******************************/ if(chess == "010" || chess == "009" || chess == "110" || chess == "109"){   //控制炮的走法 if(to - from > 0 && (to - from) % 9 == 0){    //控制炮向下走 var count = 0; for(var i = from + 9;i < to;i += 9){ if(document.getElementById("chess_value_"+i).value != "blank") count ++; } if(count == 0 && document.getElementById("chess_value_"+to).value == "blank")   //炮前不允许有旗子时,可以走棋 return 1; if(count == 1 && document.getElementById("chess_value_"+to).value != "blank")   //炮前面有一个旗子时,可以走棋 return 1; } if(from - to > 0 && (from - to) % 9 == 0){   //控制炮向上走 var count = 0; for(var i = to + 9;i < from;i += 9){ if(document.getElementById("chess_value_"+i).value != "blank") count ++; } if(count == 0 && document.getElementById("chess_value_"+to).value == "blank") return 1; if(count == 1 && document.getElementById("chess_value_"+to).value != "blank") return 1; } if(to - from > 0 && to - from < 9){   //控制炮向右走 var count = 0; for(var i = from + 1;i < to;i ++){ if(document.getElementById("chess_value_"+i).value != "blank") count ++; } if(count == 0 && document.getElementById("chess_value_"+to).value == "blank") return 1; if(count == 1 && document.getElementById("chess_value_"+to).value != "blank") return 1; } if(from - to > 0 && from - to < 9){   //控制炮向左走 var count = 0; for(var i = to + 1;i < from;i ++) { if(document.getElementById("chess_value_"+i).value != "blank") count ++; } if(count == 0 && document.getElementById("chess_value_"+to).value == "blank") return 1; if(count == 1 && document.getElementById("chess_value_"+to).value != "blank") return 1; } } /****************************[车]*******************************/ if(chess == "008" || chess == "007" || chess == "108" || chess == "107"){  //控制车的走法 if(to - from > 0 && (to - from) % 9 == 0){   //控制车向上走 var count = 0; for(var i = from + 9;i < to;i += 9){ if(document.getElementById("chess_value_"+i).value != "blank") count ++; } if(count == 0) return 1; } if(from - to > 0 && (from - to) % 9 == 0){   //控制车向下走 var count = 0; for(var i = to + 9;i < from;i += 9) { if(document.getElementById("chess_value_"+i).value != "blank") count ++; } if(count == 0) return 1; } if(to - from > 0 && to - from < 9){   //控制车向右走 var count = 0; for(var i = from + 1;i < to;i ++) { if(document.getElementById("chess_value_"+i).value != "blank") count ++; } if(count == 0) return 1; } if(from - to > 0 && from - to < 9){   //控制车向左走 var count = 0; for(var i = to + 1;i < from;i ++){ if(document.getElementById("chess_value_"+i).value != "blank") count ++; } if(count == 0) return 1; } } /*****************************[马]******************************/ if(chess == "006" || chess == "005" || chess == "106" || chess == "105"){  //控制马的走法 if(to - from == 19 || to - from == 17){   //控制马向上走“日”字(向前上17或19个坐标点),并且马所在坐标点的直上方必须是空棋 if(document.getElementById("chess_value_"+(from + 9)).value == "blank") return 1; } if(from - to == 19|| from - to == 17){   //控制马向下走“日”字(向下走17或19个坐标点),并且马所在坐标点的直下方必须是空棋 if(document.getElementById("chess_value_"+(from - 9)).value == "blank") return 1; } if(to - from == 7 || from - to == 11){     //控制向左走横“日”字(向左上角和左下角走7或11个坐标点) if(document.getElementById("chess_value_"+(from - 1)).value == "blank")   //马所在坐标点减1必须是空棋 return 1; } if(from - to == 7 || to - from == 11){     //控制向右走横“日”字(向下走7和11个坐标点) if(document.getElementById("chess_value_"+(from + 1)).value == "blank")   //马所在坐标点+1必须是空棋 return 1; } } /****************************[象]******************************/ if(((chess == "004" || chess == "003") && to <= 45) || ((chess == "104" || chess == "103") && to >= 46)){  //控制象的走法 if(to - from == 16){   //控制象向左下走 if(document.getElementById("chess_value_"+(from + 8)).value == "blank")  //该棋子当前坐标点加8必须是空棋,田字的心必须是空棋,不能超过16个坐标点区域 return 1; } if(from - to == 16){   //控制象向右上走 if(document.getElementById("chess_value_"+(from - 8)).value == "blank")  //该棋子当前坐标点减8必须是空棋,田字的心必须是空棋,不能超过16个坐标点区域 return 1; } if(to - from ==20){   //控制象向右下走 if(document.getElementById("chess_value_"+(from + 10)).value == "blank") //该棋子当前坐标点加10必须是空棋,田字的心必须是空棋,不能超过20个坐标点区域 return 1; } if(from - to == 20){   //控制象向左上走 if(document.getElementById("chess_value_"+(from - 10)).value == "blank") //该棋子当前坐标点减10必须是空棋,田字的心必须是空棋,不能超过20个坐标点区域 return 1; } } /****************************[士]*****************************/ if(chess == "002" || chess == "001"){  //控制黑旗士的走法(所走范围在4、6、14、22、24点),不能超过8个或10个坐标点 if((to == 6 || to == 4 || to == 14 || to == 22 || to == 24) && (to - from == 8 || from - to == 8 || to - from == 10 || from - to == 10)) return 1; } if(chess == "102" || chess == "101"){  //控制红旗士的走法 if((to == 85 || to == 87 || to == 77 || to == 69 || to == 67) && (to - from == 8 || from - to == 8 || to - from == 10 || from - to == 10)) return 1; } /****************************[将]*****************************/ if(chess == "000"){   //控制黑旗将的走法 if(((to >= 4 && to <= 6) || (to >= 13 && to <= 15) || (to >= 22 && to <= 24)) && (to - from == 1 || from - to == 1 || to - from == 9 || from - to == 9)) return 1; if(to > from && (to - from) % 9 == 0 && document.getElementById("chess_value_"+to).value == "100"){ var count = 0; for(var i = from + 9;i < to;i += 9){  //该棋子所对应的直上方或直下方如果不为空,则Count变量加1,说明有棋,不能走,系统会弹出提示 if(document.getElementById("chess_value_"+i).value != "blank") count ++; } if(count == 0)   //如果count变量值为0,则说明可以行走 return 1; } } if(chess == "100"){   //控制红旗将的走法(所走范围在85、86、87、76、77、78、67、68、69点) if(((to <= 87 && to >= 85) || (to <= 78 && to >=76) || (to <= 69 && to >= 67)) && (to - from == 1 || from - to == 1 || to - from == 9 || from - to == 9))  return 1; if(from > to && (from - to) % 9 == 0 && document.getElementById("chess_value_"+to).value == "000"){ var count = 0; for(var i = to + 9;i < from;i += 9){ //该棋子所对应的直上方或直下方如果不为空,则Count变量加1,说明有棋,不能走,系统会弹出提示 if(document.getElementById("chess_value_"+i).value != "blank") count ++; } if(count == 0)   //如果count变量值为0,则说明可以行走 return 1; } } return 0; }
原文地址:https://www.cnblogs.com/gxldan/p/4066767.html