87,996
社区成员
发帖
与我相关
我的任务
分享

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> <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()
}
如果对一个空数组,用两个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] = []
代码太长,不想看