clonePiece = piece[8].cloneNode(true); //將棋格以x方向到y方向排列 board[(y-1)*15+(x-1)]=0; //以棋格名稱作為儲存媒介 clonePiece.name="("+y+"-1)*15+("+x+"-1)"; //設定滑鼠事件 clonePiece.onclick = function(){ //放棋動作 putChess(this); }; |
//棋手下棋 function putChess(piece){ if(turn==1){ //當前行動方為黑 piece.firstChild.src="black.png"; }else{ //當前行動方為白 piece.firstChild.src="white.png"; } //停止觸發棋格點擊事件 piece.style.pointerEvents = 'none'; //記錄下棋點 board[parseInt(eval(piece.name))]=turn; //回合更換 turn=3-turn; } |
checkWin(parseInt(eval(piece.name))); |
//檢查勝利 function checkWin(index){ var y=Math.floor(index/15); var x=index%15; //橫向判定 if(checkLine(x,y,0,1)+checkLine(x,y,0,-1)+1==5 || //直向判定 checkLine(x,y,1,0)+checkLine(x,y,-1,0)+1==5 || //斜向左上右下判定 checkLine(x,y,1,1)+checkLine(x,y,-1,-1)+1==5 || //斜向右上左下判定 checkLine(x,y,-1,1)+checkLine(x,y,1,-1)+1==5){ if(turn == 1){ showMsg("黑棋贏,白棋輸。"); }else{ showMsg("白棋贏,黑棋輸。"); } endGame(); }; } |
//判定連線 function checkLine(x,y,dx,dy){ //連線次數 var link=0; for(var i=0;i<5;i++){ //指向下個棋格 x+=dx; y+=dy; //超出範圍或下個棋格非己方棋則結束連線 if(!valid(x,y) || board[y*15+x] != turn){ return link; } //追加連結次數 link+=1; } return link; } |
//沒超出棋盤 function valid(x,y){ return(x>=0 && y>=0 && x<15 && y<15); } |
//遊戲結束 var gameEnd=false; function endGame(){ gameEnd=true; } |
function putChess(piece){ if(gameEnd){ return; } ...... } |
留言共 1 篇留言
前一篇:【JavaScript】... 後一篇:【JavaScript】...