9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦>興趣愛好>學下棋>五子棋>

五子棋人機大戰源碼教程圖解

時間: 學良775 分享

  圍棋是一種高明的邏輯游戲,其中蘊涵深刻的哲理,那么如何用代碼制作五子棋呢?下面是有五子棋人機大戰源碼教程圖解,歡迎參閱。

  五子棋人機大戰源碼教程步驟圖解:

  新建游戲項目文件目錄

  編寫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" width="450px" height="450px"></canvas>

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

  </body>

  </html>

  在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;}

  images文件夾里用到的圖片如下

  在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;

  }

  //

  }

  /**/

  }

  6以上步驟全部搞定之后,就可以運行index.html文件玩游戲了。游戲初始化界面如下:



看過五子棋人機大戰源碼教程圖解的人還看了:

1.五子棋怎么做棋

2.五子棋必勝開局技巧

3.五子棋的基礎知識講解

4.五子棋必勝步驟圖走法

1517408 主站蜘蛛池模板: 丝袜美腿视频一区二区三区| 亚洲国产超清无码专区| 日韩剧情片电影网站| 乱女乱妇熟女熟妇综合网| 国产人妻大战黑人第1集| 久久精品道一区二区三区| 亚洲中文字幕人妻系列| 日韩人妻无码精品久久| 性欧美乱熟妇xxxx白浆| 国产精品色一区二区三区| 精品国产免费一区二区三区香蕉| 久久精品伊人波多野结衣| 99久久机热/这里只有精品| 国产精品国产亚洲区久久| 国内精品无码一区二区三区| 高清无码在线视频| 黄色三级亚洲男人的天堂| 色老头在线一区二区三区| 日韩幕无线码一区中文| 国产精品自拍一二三四区| 无码人妻斩一区二区三区| 国产在线一区二区在线视频| 国产69精品久久久久99尤物| 亚洲av永久无码精品秋霞电影影院| 激情综合网五月婷婷| 91精品国产一二三产区| 久草热久草热线频97精品| 天堂av在线一区二区| 国产av普通话对白国语| 日韩在线视频网| 欧洲极品少妇| 国内精品伊人久久久久AV一坑| 午夜免费福利小电影| 国产精品成人久久电影| 麻豆成人精品国产免费| 亚洲综合成人av在线| 成人免费无码视频在线网站| 国产一区二区日韩在线| 国产a在视频线精品视频下载| 亚洲中文久久久久久精品国产| 精品国产成人a在线观看 |