为了账号安全,请及时绑定邮箱和手机立即绑定
还有一个bug,当出现六子连赢的时候,由于在遍历k的时候匹配到两次赢法数组,所以会alert两次“我赢了”
解决这个bug的办法是,当出现“k==5”的时候,直接return,跳出当前循环:
if(myWin[k]==5&&me){
window.alert("你赢了")
over=true
return
}
应该加一个是否为me的判断:
for (var k = 0; k < count; k++) {
if (win[i][j][k]) {
myWin[k]++;
computerWin[k]=6;
if(myWin[k]==5&&me){
window.alert("你赢了")
over=true
}
}
}

执行完遍历之后再加上:

me=!me
//斜线
for (var i = 14; i > 3; i--) {
for (var j = 0; j < 11; j++) {
for (var k = 0; k < 5; k++) {
win[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++) {
win[i+k][j+k][count]=true;
}
count++
}
}
// 横向
for (var i = 0; i < 11; i++) {
for (var j = 0; j < 15; j++) {
for (var k = 0; k < 5; k++) {
win[i+k][j][count]=true;
}
count++
}
}
// 纵向
for (var i = 0; i < 15; i++) {
for (var j = 0; j < 11; j++) {
for (var k = 0; k < 5; k++) {
win[i][j+k][count]=true;
}
count++
}
}
老师把横纵坐标弄反了吧,斜线和反斜线也弄反了吧,如果i代表横坐标,j代表纵坐标正确的代码应该是:
兄弟们怎么设置让电脑先走?
建议先听一遍,听懂了再跟着敲代码
<script>alert(888)</script>
完成了, 表示下不过这个弱智的AI 。
为什么提示k is not defined.
有bug,只要是5个子一条线就会胜利,不论黑白
为啥j 小于11?
牛逼!这算法
课程须知
本课程是前端高级课程 1、具备算法基础
老师告诉你能学到什么?
1、五子棋AI的运行原理 2、五子棋AI使用到的数据结构 3、编程实现五子棋AI

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消