当前位置: 代码迷 >> JavaScript >> js五子棋(没有写完)
  详细解决方案

js五子棋(没有写完)

热度:269   发布时间:2013-11-08 17:52:01.0
js五子棋(没写完)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>1</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<style type="text/css">
    *{margin:0;padding:0}
    body{width:600px;margin:40px auto;}
    td{width:50px;height:50px;border:solid 1px #000000;text-align: center;cursor:pointer;}
</style>
</head>
<body>
    <a href="javascript:reset();">reset</a>
    <div id="main"></div>
    <script>
    var status;//状态
    var p1='player1'; 
    var p2='player2';
    var pcrt=p1; //默认1先手
    reset();    
     // ------------------------------------------------------------------
    // 人机对战
    function cpt(){ 
        
    }
     // ------------------------------------------------------------------
    // 下子
    function down(tid,i,j){ 
        if(status==1)
            return 0;
        if(tid.innerHTML!='')
            return 0;
        if(pcrt==p1){
            tid.innerHTML='#';
            pcrt=p2;
        }
        else{
            tid.innerHTML='@';
            pcrt=p1;
        }
        document.getElementById('msg').innerHTML='current:'+pcrt;  //显示
        pd(i,j,tid.innerHTML,pcrt);//执行判断
    }
     // ------------------------------------------------------------------
    // 判断
    function pd(i,j,inner,pcrt){
        if(checkx(i,j,inner)){
            done(pcrt);
        }
        else if(checky(i,j,inner)){
            done(pcrt);
        }
        else if(checko(i,j,inner)){
            done(pcrt);
        }
        else if(checkp(i,j,inner)){
            done(pcrt);
        }
        else
            return 0;
    }
     // ------------------------------------------------------------------
    // 开始
    function reset(){
        status=0;
        document.getElementById('main').innerHTML='';
        z='<div id="msg">current:player1 </div><table cellspacing=0 border=1>';
        // ------------------------------------------------------------------
       // 动态生成表格
        for(ii=1;ii<14;ii++){
        z=z+'<tr>';
        for(jj=1;jj<14;jj++)
        z=z+'<td id="t'+ii+jj+'" onclick="down(this,'+ii+','+jj+')"></td>';
        z=z+"</tr>";
    }
       z=z+"</table>";
       document.getElementById('main').innerHTML=z;
    }
     // ------------------------------------------------------------------
    // 结束
    function done(winner){
        status=1;
        alert(winner+' win the game');
    }
     // ------------------------------------------------------------------
    //  获取表格内容
    function value(ni,nj){
        if(ni>0&&nj>0&&ni<13&&nj<13)
            return document.getElementById('t'+ni+nj).innerHTML;
        else
            return '!';
    }
    // ------------------------------------------------------------------
    // 判断x方向
    function checkx(xi,xj,c){
        if(value(xi+1,xj)==c&&value(xi+2,xj)==c&&value(xi+3,xj)==c&&value(xi+4,xj)==c)
            return 1;
        else if(value(xi+1,xj)==c&&value(xi+2,xj)==c&&value(xi+3,xj)==c&&value(xi-1,xj)==c)
            return 1;
        else if(value(xi+1,xj)==c&&value(xi+2,xj)==c&&value(xi-1,xj)==c&&value(xi-2,xj)==c)
            return 1;
        else if(value(xi+1,xj)==c&&value(xi-1,xj)==c&&value(xi-2,xj)==c&&value(xi-3,xj)==c)
            return 1;
        else if(value(xi-4,xj)==c&&value(xi-1,xj)==c&&value(xi-2,xj)==c&&value(xi-3,xj)==c)
            return 1;
        else
            return 0;
    }
     // ------------------------------------------------------------------
    // 判断y方向
    function checky(yi,yj,c){
        if(value(yi,yj+1)==c&&value(yi,yj+2)==c&&value(yi,yj+3)==c&&value(yi,yj+4)==c)
            return 1;
        else if(value(yi,yj+1)==c&&value(yi,yj+2)==c&&value(yi,yj+3)==c&&value(yi,yj-1)==c)
            return 1;
        else if(value(yi,yj+1)==c&&value(yi,yj+2)==c&&value(yi,yj-1)==c&&value(yi,yj-2)==c)
            return 1;
        else if(value(yi,yj+1)==c&&value(yi,yj-1)==c&&value(yi,yj-2)==c&&value(yi,yj-3)==c)
            return 1;
        else if(value(yi,yj-4)==c&&value(yi,yj-1)==c&&value(yi,yj-2)==c&&value(yi,yj-3)==c)
            return 1;
        else
            return 0;
    }
     // ------------------------------------------------------------------
    // 判断左对角线
    function checko(oi,oj,c){
        if(value(oi+1,oj+1)==c&&value(oi+2,oj+2)==c&&value(oi+3,oj+3)==c&&value(oi+4,oj+4)==c)
            return 1;
        else if(value(oi+1,oj+1)==c&&value(oi+2,oj+2)==c&&value(oi+3,oj+3)==c&&value(oi-1,oj-1)==c)
            return 1;
        else if(value(oi+1,oj+1)==c&&value(oi+2,oj+2)==c&&value(oi-1,oj-1)==c&&value(oi-2,oj-2)==c)
            return 1;
        else if(value(oi+1,oj+1)==c&&value(oi-1,oj-1)==c&&value(oi-2,oj-2)==c&&value(oi-3,oj-3)==c)
            return 1;
        else if(value(oi-4,oj-4)==c&&value(oi-1,oj-1)==c&&value(oi-2,oj-2)==c&&value(oi-3,oj-3)==c)
            return 1;
        else
            return 0;
    }
     // ------------------------------------------------------------------
    // 判断又对角线
    function checkp(pi,pj,c){
        if(value(pi-1,pj+1)==c&&value(pi-2,pj+2)==c&&value(pi-3,pj+3)==c&&value(pi-4,pj+4)==c)
            return 1;
        else if(value(pi+1,pj-1)==c&&value(pi-1,pj+1)==c&&value(pi-2,pj+2)==c&&value(pi-3,pj+3)==c)
            return 1;
        else if(value(pi+1,pj-1)==c&&value(pi+2,pj-2)==c&&value(pi-1,pj+1)==c&&value(pi-2,pj+2)==c)
            return 1;
        else if(value(pi-1,pj+1)==c&&value(pi+1,pj-1)==c&&value(pi+2,pj-2)==c&&value(pi+3,pj-3)==c)
            return 1;
        else if(value(pi+4,pj-4)==c&&value(pi+1,pj-1)==c&&value(pi+2,pj-2)==c&&value(pi+3,pj-3)==c)
            return 1;
        else
            return 0;
    }
</script>
</body>
</html>

 
  相关解决方案