js判断输赢的弹框出不来

来源:2-3 赢法统计数组和胜负判断

weibo_戴帽子的小姑凉100_0

2017-06-14 16:09

// JavaScript Document

var chessBoard=[];

var me=true;

var over=false;


//赢法数组

var wins = [];


//赢法的统计数组

var myWin=[];//统计我方的

var computerWin=[];//统计计算机的



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

{

chessBoard[i]=[];

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

{

chessBoard[i][j]=0;

}

}




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

wins[i] = [];

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

wins[i][j] = [];

}

}


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 = 14; j>3; 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 = 0; j < 11; j++) {

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

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

}

count++;

}

}



var count = 0;

console.log(count);


//初始化为0

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

{

myWin[i]=0;

computerWin[i]=0;

}






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

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

ctx.strokeStyle="black";


/*..............................棋盘的画法..................*/

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

{

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

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

    ctx.stroke();


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

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

    ctx.stroke();

}

/*..........................棋子的画法..........................*/

var oneStep=function(i,j,me)

{

ctx.beginPath();

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

    ctx.closePath();

if(me)

{

ctx.fillStyle="black";

ctx.fill();

}

else

{

ctx.fillStyle="white";

ctx.fill();

}

    

    ctx.stroke()

}


/*............................实现落棋..............................*/

chess.onclick=function(e)

{

if(over)

{

return;

}

var x=e.offsetX;

var y=e.offsetY;

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

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

if(chessBoard[i][j]==0)

{

oneStep(i,j,me);

if(me)

{

chessBoard[i][j]=1;

}

else

{

chessBoard[i][j]=2;

}

me=!me;

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;

}

}

}

}

}




写回答 关注

2回答

  • scanf莺曲
    2017-07-20 00:34:52
    已采纳

    已改好 建议多写 多练   

    var chessBoard = [];
       var me = true;
       var over = false;
       var count = 0;

    //赢法数组
       var wins = [];

    //赢法的统计数组
       var myWin = [];//统计我方的
       var computerWin = [];//统计计算机的


       for (var i = 0; i < 15; i++) {
           chessBoard[i] = [];
           for (var j = 0; j < 15; j++) {
               chessBoard[i][j] = 0;
           }
       }


       for (var i = 0; i < 15; i++) {
           wins[i] = [];
           for (var j = 0; j < 15; j++) {
               wins[i][j] = [];
           }
       }

       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 < 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 < 11; i++) {
           for (var j = 14; j > 3; 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 = 0; j < 11; j++) {
               for (var k = 0; k < 5; k++) {
                   wins[i + k][j + k][count] = true;
               }
               count++;
           }
       }

       console.log(count);

    //初始化为0
       for (var i = 0; i < count; i++) {
           myWin[i] = 0;
           computerWin[i] = 0;
       }


       var chess = document.getElementById('chess');
       var ctx = chess.getContext('2d');

       /*..............................棋盘的画法..................*/
       for (var i = 0; i < 15; i++) {
           ctx.beginPath();
           ctx.moveTo(15 + i * 30, 15);
           ctx.lineTo(15 + i * 30, 435);
           ctx.stroke();

           ctx.beginPath();
           ctx.moveTo(15, 15 + i * 30);
           ctx.lineTo(435, 15 + i * 30);
           ctx.stroke();
       }
       /*..........................棋子的画法..........................*/
       var oneStep = function (i, j, me) {
           ctx.beginPath();
           ctx.arc(15 + i * 30, 15 + j * 30, 13, 0, Math.PI * 2, true);
           ctx.closePath();
           if (me) {
               ctx.fillStyle = "black";
               ctx.fill();

           }
           else {
               ctx.fillStyle = "white";
               ctx.fill();
           }

           ctx.stroke()
       }

       /*............................实现落棋..............................*/
       chess.onclick = function (e) {
           if (over) {
               return;
           }
           var x = e.offsetX;
           var y = e.offsetY;
           var i = Math.floor(x / 30);
           var j = Math.floor(y / 30);
           if (chessBoard[i][j] == 0) {
               oneStep(i, j, me);
               if (me) {
                   chessBoard[i][j] = 1;
               }
               else {
                   chessBoard[i][j] = 2;
               }
               me = !me;
               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;

                       }
                   }
               }
           }
       }

    weibo_...

    非常感谢!

    2017-09-06 16:42:56

    共 1 条回复 >

  • 慕娘9414133
    2017-06-24 08:51:54

    代表多少种赢法的count的声明应该放在最上面

    weibo_...

    哦,非常感谢

    2017-09-06 16:45:47

    共 1 条回复 >

JS实现人机大战之五子棋(AI篇)

"AlphaGO"我要和你下五子棋,教程带你实现五子棋AI

43235 学习 · 109 问题

查看课程

相似问题