见鬼了,一样的定义nowChess能通过,nowChess就通过不了

qq_59759876 2023-07-28 16:58:32

html文件

<html>
  <head>
    <meta charset="UTF-8" />
    <title>黑白棋</title>
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, maximum-scale=1"
    />

    <style type="text/css">
      canvas {
        display: block;
        margin: 24px auto;
        box-shadow: -1px -1px 1px #efefef, 4px 4px 4px #7979f9;
      }
      .btn-wrap {
        display: flex;
        flex-direction: row;
        justify-content: center;
      }
      .btn-wrap div {
        margin: 0 5px;
      }
      span {
        display: inline-block;
        padding: 10px 20px;
        color: #fff;
        background-color: #8282ee;
        border-radius: 5px;
        cursor: pointer;
      }

      #title-result {
        text-align: center;
      }
    </style>
  </head>
  <body>
    <h3 id="title-result">黑白棋</h3>
    <canvas id="chess" width="320px" height="320px"></canvas>
    <div class="btn-wrap">
      <div id="restart" class="restart">
        <span>重新开始</span>
      </div>
      <div id="restart1" class="restart">
        <span>残局1</span>
      </div>
    </div>
    <h3 align="center">
      <div><a id="tip-2">执黑</a>&nbsp;<a id="point-p">2:2</a></div>
      <div id="tip-tip">当前轮到:自己</div>
      <div id="tip2"></div>
      <div id="tip3"></div>
    </h3>
    <h3 align="center">列号: <input type="number" name="lh" id="lenumb" /></h3>
    <h3 align="center">棋谱:<input type="number" name="qp" id="qipu" /></h3>
    <div class="btn-wrap">
      <div id="restart2" class="restart">
        <span>生成棋谱</span>
      </div>
      <div id="restart3" class="restart"><span>人机对决</span></div>
      <div id="restart4" class="restart"><span>路线选择</span></div>
    </div>

    <script type="text/javascript" charset="utf-8" src="hbq2.0.js"></script>
  </body>
</html>

部分js

var bestcom = 0
var bestcomer = 0
var bestme = 0
var cancom = 1
var n = 1
var compop = 0
var Xx
var Yy
var cx = []
var cy = [] //储存残局空位x,y
var can1 = 1
var cannextc = 0
var cannextme = 0
var Xxc2
var Yyc2
var first = 1
var point1 = 0
var point2 = 0
var resultTxt = document.getElementById('title-result')
var tipTip = document.getElementById('tip-tip')
var tipTip2 = document.getElementById('tip-2')
var tip2 = document.getElementById('tip2')
var tip3 = document.getElementById('tip3')
var pointPo = document.getElementById('point-p')
var me = 1 //me=1自己,me=2电脑
var nowChess = [] //棋盘
var backUp = [] //电脑第二次计算
var nowChess2 = [] //棋盘2
var chess = document.getElementById('chess')
var context = chess.getContext('2d')

context.strokeStyle = '#bfbfff' //棋盘线条颜色
document.getElementById('restart').onclick = function () {
  //棋盘初始化
  n = 1
  compop = 0

  for (var i = 0; i < 10; i++) {
    for (var j = 0; j < 10; j++) {
      nowChess[i][j] = 0
    }
  }

  for (var i = 0; i < 10; i++) {
    for (var j = 0; j < 10; j++) {
      nowChess2[i][j] = 0//编译失败
    }
  }
  if (first == 1) {
    me = 2
    first = 2
    tipTip.innerHTML = '当前轮到:电脑'
    tipTip2.innerHTML = '执白'
    nowChess[4][4] = 2
    nowChess[4][5] = 1
    nowChess[5][5] = 2
    nowChess[5][4] = 1
  } else {
    me = 1
    first = 1
    tipTip.innerHTML = '当前轮到:自己'
    tipTip2.innerHTML = '执黑'
    nowChess[4][4] = 1
    nowChess[4][5] = 2
    nowChess[5][5] = 1
    nowChess[5][4] = 2
  }
  pointPo.innerHTML = '2:2'
  xianShi()
} //重新开始
window.onload = function () {
  nowChess[4][4] = 1
  nowChess[4][5] = 2
  nowChess[5][5] = 1
  nowChess[5][4] = 2
  xianShi()
}
//生成残局1
document.getElementById('restart1').onclick = function () {
  var arr = [
    0, 1, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 1, 2, 2, 1, 1, 2, 2, 2, 1,
    2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 1, 2,
    2, 2, 1, 1, 1, 2, 0, 2, 2, 2, 2, 2, 2, 2,
  ]
  if (first == 2) {
    for (var i = 1; i < 10; i++) {
      for (var j = 1; j < 10; j++) {
        if (arr[(i - 1) * 8 + (j - 1)] == 0) {
          nowChess[i][j] = 0
        } else {
          nowChess[i][j] = Math.pow(arr[(i - 1) * 8 + (j - 1)], -1) * 2
        }
      }
    }
  } else {
    for (var i = 1; i < 10; i++) {
      for (var j = 1; j < 10; j++) {
        nowChess[i][j] = arr[(i - 1) * 8 + (j - 1)]
      }
    }
  }
  xianShi()

}

 

...全文
2238 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ymzhaoUSTB 2023-09-28
  • 打赏
  • 举报
回复

如果对一个空数组,用两个for循环直接赋值二维数组,肯定会报错。

var nowChess = []
for (var i = 0; i < 10; i++) {
    for (var j = 0; j < 10; j++) {
        nowChess[i][j] = 0
    }
}
// Uncaught TypeError: Cannot set properties of undefined (setting '0')

如果是这个问题,你可以在第一个循环内加上 nowChess[i] = []

Williamtym 2023-07-28
  • 打赏
  • 举报
回复

代码太长,不想看

qq_59759876 2023-07-31
  • 举报
回复
@Williamtym 其实就是js开头那个第44行数组,我一样的数组一个能定义,一个定义不了,其他什么也没设置,很奇怪

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧