📄 1.htm
字号:
chessObj.style.left = event.x-chessObj.l;
chessObj.style.top = event.y-chessObj.t;
//isDrag
// if(Math.abs( event.y-yy) >=50 || Math.abs(event.x-xx) >=50){isDrag=true;}else{isDrag=false;}
//window.status=isDrag;
}
}
//抬起
allChess[i].onmouseup=function MouseUp(){
if(whosTurn!="w"){return false;}
//if(!isDrag){gogo(xx,yy);chessObj=null;return false;}
if(chessObj!=null){
yyy= 50* Math.round(parseInt(chessObj.style.top)/50 )-20;
xxx= 50* Math.round(parseInt(chessObj.style.left)/50 )-20;
//window.status=" " + xxx +" "+ yyy;
chessObj.releaseCapture();
//chessObj.style.top =yyy;
//chessObj.style.left =xxx;
var ok=false;
if(((xxx-xx)!=0 || (yyy-yy)!=0) && xxx<=380 && yyy<=430 && xxx>=-20 && yyy>=-20)
{
if(rule(chessObj.innerText,xx,yy,xxx,yyy) )
{
ok=true;
var XXX=xxx;
var YYY=yyy;
var XX=xx;
var YY=yy;
// gogo(xxx,yyy);//走过去
if (getQ_xy(xxx,yyy) ==""){
getMove(chessObj,XX,YY,XXX,YYY);
gogo(xxx,yyy);//走过去
}
else{
var deadChessId=getQ_xy(XXX,YYY);
var deadChess=document.getElementById(deadChessId);
getMove(chessObj,XX,YY,XXX,YYY);
eat(deadChessId,XXX,YYY);
}
think();
}
}
if(!ok){gogo(xx,yy);}
chessObj=null;
}
//selectNull();
}
}
}
function think()
{
whosTurn="b";
selectNull();
var fen=getPosition();
var cmd="position fen " + fen + " b - - 0 2"+ "\n";
// 判断长捉长将,三步必须变着;
//alert(moveArray + ":"+moveArray.length);
var Len=moveArray.length;
if( moveArray.length>6 && (Len % 2 ==0) )
{
if((moveArray[Len-1] + moveArray[Len-2])== (moveArray[Len-3] + moveArray[Len-4]) )
{
if((moveArray[Len-3] + moveArray[Len-4])== (moveArray[Len-5] + moveArray[Len-6]) )
{
Timming();
cmd+="banmoves " + moveArray[Len-1] + "\n";
}
}
//if(moveArray)
}
//延迟30秒后如果没应着就算你赢了。
//在黑方走棋的时候不允许点悔棋按钮。
RetractChess.disabled=true;
timeOut =window.setTimeout("Timming()",1000 * 30);
PageMethods("blackMove","","bestmove", cmd,1000);
ppp.innerHTML="这步棋走的好!笨狼正在思考,请稍候!~~";
}
function Timming()
{
//增加难度;
PageMethods("addTime","","",1000);
//如果服务器半分钟没做出反映自动判负。
if(window.confirm("笨狼想不出对策,算你赢了!重来吗?"))
{
window.location.reload();
}
}
function isChessRed(chessObj)
{
return (chessObj.fillColor=="red");
}
function autoMove(objId,x2,y2)
{
var moveChess=document.getElementById(objId );
moveChess.style.top=y2;
moveChess.style.left=x2;
myColor= "red" ;
enemyColor="gray";
whosTurn="w";
ppp.innerHTML="后悔了吧?现在该你红棋走了,请拖动棋子";
}
function displayChineseMoves()
{
qqq.value="";
for(i=0;i<moveChineseArray.length;i++)
{
if(i % 2 ==0){qqq.value +="第"+ parseInt (i/2 + 1)+ "步:" + moveChineseArray[i]+ " ";}else{qqq.value +=moveChineseArray[i]+ "\n";}
}
}
function Retract()
{
if(RetractArray.length>0)
{
RetractOne();
RetractOne();
displayChineseMoves();
}
else
{
alert("目前回到最原始状态了,没棋可悔了!~~");
}
}
function Change()
{
var Len=moveArray.length;
if(Len>=2 && (Len % 2==0))
{
var lastMove=moveArray[Len-1];
RetractOne();
displayChineseMoves();
whosTurn="b";
selectNull();
var fen=getPosition();
var cmd="position fen " + fen + " b - - 0 2"+ "\n";
cmd+="banmoves " + lastMove+ "\n";
//alert(cmd);
timeOut =window.setTimeout("Timming()",1000 * 30);
RetractChess.disabled=true;
PageMethods("blackMove","","bestmove", cmd,3000);
ppp.innerHTML="要变着,笨狼需要多思考,可能找不到变着,请稍候!~~";
}
else
{
alert("无着可变!~~");
}
}
function RetractOne()
{
var str=RetractArray[RetractArray.length-1];
var arr=str.split(" ");
if(arr.length==6)
{
autoMove(arr[0],arr[1],arr[2]);
autoMove(arr[3],arr[4],arr[5]);
}
if(arr.length==3)
{
autoMove(arr[0],arr[1],arr[2]);
}
RetractArray.pop();
moveChineseArray.pop();
moveArray.pop();
}
//以下是得到棋谱部分
function getMove(chessObj,x1,y1,x2,y2)
{
var deadId=getQ_xy(x2,y2);
if(deadId=="")
{
RetractArray.push( chessObj.id + " " + x1 + " " + y1 ) ;
}
else
{
RetractArray.push( chessObj.id + " " + x1 + " " + y1 + " " + deadId + " " + x2 + " " + y2) ;
}
var chessName= chessObj.innerText.replace(/ /ig,"");
var re=chessName ;
var isRed=isChessRed(chessObj );
var moveCode="";
if(isRed){
moveCode=String.fromCharCode(65+(x1+20)/50) + ((y1+20)/50) + String.fromCharCode(65+(x2+20)/50) + ((y2+20)/50);
}
else{
moveCode=String.fromCharCode(97+(x1+20)/50) + ((y1+20)/50) + String.fromCharCode(97+(x2+20)/50) + ((y2+20)/50);
}
moveArray.push(moveCode);
var arr=new Array("一","二","三","四","五","六","七","八","九");
if(y1==y2) {
if(isRed) { re+= arr[8-(x1+20)/50];}else{re+=1+(x1+20)/50;}
}
if(y1>y2 ) {
if(isRed){ re+=arr[8-(x1+20)/50] ;}else{re+=1+(x1+20)/50;}
}
if(y1<y2) {
if(isRed) { re+=arr[8-(x1+20)/50] ;}else{ re+=1+(x1+20)/50 ;}
}
for(i=-20;i<=480;i+=50)
{
var tempObjId=getQ_xy(x1,i);
if(tempObjId!="")
{
var tempObj=document.getElementById(getQ_xy(x1,i));
if((tempObj.id!=chessObj.id) && (tempObj.fillColor==chessObj.fillColor) && (tempObj.innerText==chessObj.innerText))
{
if( isRed && i<y1 || (!isRed && i>y1) ) {re="前" + chessName;}else { re="后" + chessName;}
break;
}
}
}
//下边是后续部分
if(y1==y2) {
if(isRed){re+= "平" + arr[8-(x2+20)/50];} else{re+= "平" + (1+(x2+20)/50);}
}
if(y1>y2 ) {
if(isRed)
{
if(x1==x2){ re+= "进" + arr[Math.abs(y2-y1)/50-1];}else{re+= "进" + arr[ 8-(x2+20)/50];}
}
else
{
if(x1==x2){ re+= "退" + Math.abs(y2-y1)/50;}else{re+= "退" + (1+(x2+20)/50);}
}
}
if(y1<y2) {
if(isRed)
{
if(x1==x2){ re+= "退" + arr[Math.abs(y2-y1)/50-1];}else{re+= "退" + arr[ 8-(x2+20)/50];}
}
else
{
if(x1==x2){re+= "进" + Math.abs(y2-y1)/50;}else{re+= "进" + ( 1+(x2+20)/50 );}
}
}
moveChineseArray.push(re);
displayChineseMoves();
//if(!isRed){ re+= "<br/>"}else{ re+= " "}
}
//以下是得到棋盘状态部分
function getPosition()
{
var re="";
var last=0;
for(y=-20 ;y<=430;y+=50)
{
for(x=-20 ;x<=380;x+=50)
{
if(getQ_xy(x,y)!="")
{
var obj=document.getElementById(getQ_xy(x,y));
var chessName=obj.innerText.replace(/ /ig,'');
//rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR
switch (chessName){
case "车":
chessName="r";
break;
case "马":
chessName="n";
break;
case "象":
chessName="b";
break;
case "相":
chessName="b";
break;
case "士":
chessName="a";
break;
case "仕":
chessName="a";
break;
case "将":
chessName="k";
break;
case "帅":
chessName="k";
break;
case "炮":
chessName="c";
break;
case "兵":
chessName="p";
break;
case "卒":
chessName="p";
break;
}
if(obj.fillColor=="red")
{
chessName=chessName.toUpperCase();
}
if(last>0)
{
re+=last;
last=0;
}
re+=chessName;
obj.innerText.replace(/ /ig,'');
last=0;
}
else
{
last++;
}
}
if(last>0)
{
re+=last;
last=0;
}
re+="/";
}
re = re.substring(0,re.length-1) ;
return re;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -