html5源码教程

2025-10-28 11:45:12

1、新建游戏项目文件目录

2、编写index.html文件源码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8"/>

<title>五子棋</title>

<link rel="stylesheet" type="text/css" href="css/style.css"/>

 <script type="text/javascript" src="js/script.js"></script>

</head>

<body>

   

<canvas id="chess

<input type="button" onclick="window.location.reload();" value="在玩一次"> 

    

</body>

</html>

3、在css文件夹里新建css文件,style.css文件源码如下:

  canvas{

  display: block;

  margin-left:400px;

  margin-top: 60px;

  box-shadow: -2px -2px 2px #EFEFEF, 5px 5px 5px #B9B9B9;

  width: 450px; height: 450px;

    } 

 input{float: right; display: block; margin-right:130px;margin-top: -250px; 

   width: 100px; height: 30px; font-size: 18px;

 }

 input:hover{ background-color:orange; color: #fefefe;}

4、在js文件夹里新建script.js文件,源码如下:

window.onload=function(){

var me=true;

var over=false;

var chessBord=[];

//初始化chessBord数组

for(var i=0; i<15;i++){

chessBord[i]=[];

for(var j=0;j<15;j++){

chessBord[i][j]=0;

}

}

//var me=[true];

//赢法数组

var wins=[];

var computerWin=[];

//赢法的统计数组

var myWin=[];

//初始化3维数组

for(var i=0; i<15; i++){

wins[i]=[];

for(var j=0; j<15; j++){

wins[i][j]=[];

}

}

var count=0;

 for(var i=0;i<15;i++){

  for(var j=0;j<11;j++){

  for(var k=0;k<5;k++){

  wins[i][j+k][count]=true;

  }

  count++;

  }

 }

 for(var i=0;i<15;i++){

  for(var j=0;j<11;j++){

  for(var k=0;k<5;k++){

  wins[j+k][i][count]=true;

  }

  count++;

  }

 }

 for(var i=0;i<11;i++){

  for(var j=0;j<11;j++){

  for(var k=0;k<5;k++){

  wins[i+k][j+k][count]=true;

  }

  count++;

  }

 }

 for(var i=0;i<11;i++){

  for(var j=14;j>3;j--){

  for(var k=0;k<5;k++){

  wins[i+k][j-k][count]=true;

  }

  count++;

  }

 }

 console.log(count);

 for(var i=0; i<count; i++){

  myWin[i]=0;

  computerWin[i]=0;

  }

   

/**/

var chess=document.getElementById('chess');

var context=chess.getContext('2d');

context.strokeStyle="#BFBFBF";

var logo=new Image();

logo.src="images/logo.png";

 /**/

  logo.onload=function(){

context.drawImage(logo,0,0,450,450);

qipan();

/**/

   }

 /**/

  function qipan(){

    for(var i=0; i<15; i++){

context.moveTo(15+i*30,15);

    context.lineTo(15+i*30,430);

    context.stroke();

    context.moveTo(15,15+i*30);

    context.lineTo(435,15+i*30);

    context.stroke();

    } 

  }  

/**//*定义onesStep函数来绘制棋子*/

 var oneStep=function(i,j,me){

    context.beginPath();

context.arc(15+i*30,15+j*30,13,0,2*Math.PI);

context.closePath();

var gradient=context.createRadialGradient(15+i*30+2,15+j*30-2,13,15+i*30+2,15+j*30-2,0);

if(me){

gradient.addColorStop(0,"#0A0A0A");

gradient.addColorStop(1,"#636766");

  }

  else{

  gradient.addColorStop(0,"#D1D1D1");

   gradient.addColorStop(1,"#F9F9F9");

  }

context.fillStyle=gradient;

context.fill();

  }  

 /**/ 

 chess.onclick=function(e){

   if(over){

    return;

   }

   if(!me){

    return;

   }

   var x=e.offsetX;

   var y=e.offsetY;

   var i=Math.floor(x/30);

   var j=Math.floor(y/30);

   if(chessBord[i][j]==0){

      oneStep(i,j,me);

      chessBord[i][j]=1;

       for(var k=0;k<count;k++){

         if(wins[i][j][k]){

          myWin[k]++;

          computerWin[k]=6;

           if(myWin[k]==5){

            window.alert("你赢了");

            over=true;

           }

         }

       }

       if(!over){

         me=!me;

         computerAI();

       }

    }

  }

  //定义computerAI函数

 var computerAI=function(){

    var myScore=[];

    var computerScore=[];

    var max=0;

    var u=0, v=0;

    for(var i=0;i<15;i++){

    myScore[i]=[];

    computerScore[i]=[];

    for(var j=0;j<15;j++){

    myScore[i][j]=0;

    computerScore[i][j]=0;

    }

    }

    for(var i=0;i<15;i++){

    for(var j=0; j<15;j++){

    if(chessBord[i][j]==0){

    for(var k=0; k<count;k++){

    if(wins[i][j][k]){

    if(myWin[k]==1){

    myScore[i][j]+=200;

    } else if(myWin[k]==2){

    myScore[i][j]+=400;

    } else if(myWin[k]==3){

    myScore[i][j]+=2000;

    } else if(myWin[k]==4){

    myScore[i][j]+=10000;

    }

    if(computerWin[k]==1){

    computerScore[i][j]+=200;

    } else if(computerWin[k]==2){

    computerScore[i][j]+=400;

    } else if(computerWin[k]==3){

    computerScore[i][j]+=2000;

    } else if(computerWin[k]==4){

    computerScore[i][j]+=10000;

    }

    }

    }

    if(myScore[i][j]>max){

    max=myScore[i][j];

    u=i;

    v=j;

    } else if(myScore[i][j]==max){

    if(computerScore[i][j]>computerScore[u][v]){

    u=i;

    v=j;

    }

    }

    if(computerScore[i][j]>max){

    max=computerScore[i][j];

    u=i;

    v=j;

    } else if(computerScore[i][j]==max){

    if(myScore[i][j]>myScore[u][v]){

    u=i;

    v=j;

    }

    }

    }

    }

    }

    oneStep(u,v,false);

    chessBord[u][v]=2;

    //

     for(var k=0;k<count;k++){

         if(wins[u][v][k]){

          computerWin[k]++;

          myWin[k]=6;

           if(computerWin[k]==5){

            window.alert("狗狗赢了");

            over=true;

           }

         }

       }

       if(!over){

         me=!me;

          

       }

    //

  } 

/**/

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢