用vue.js 写的 MiniMax 算法的 TicTacToe 不起作用
我想用 vue.js 实现一个 miniMax 算法的 TicTacToe 的 AI。 但是我的算法似乎不起作用,每次AI都会返回下一个空格。。。我不知道问题在哪T_T。。。跪求大神帮我指出错误。。。
我的项目链接是:https://github.com/demongodYY...
我写的 miniMax 函数代码片段如下:
checkScore(cells, role) {
const status = this.checkWin(cells, role) || this.checkTie(cells);
switch(status){
case 'X':
return 10
case 'O':
return -10
case 'Tie':
return 0
}
return false;
},
miniMax(cells, role) {
let newCells = this.createNewCells(cells);
let score = this.checkScore(newCells, role);
if(score !== false) {
return {score:score};
}
let results = [];
for (let row = 0 ; row < newCells.length; row++){
for (let col = 0; col < newCells[row].length; col++) {
if (newCells[row][col] !== ''){
continue;
}
newCells[row][col] = role;
let index = {row,col};
let result = {};
result.index = index ;
// console.log(index);
if(role == 'X') {
result.score = this.miniMax(newCells, 'O').score;
} else {
result.score = this.miniMax(newCells, 'X').score;
}
results.push(result);
}
}
let bestMove;
if(role == 'X' ) {
let bestScore = -1000;
for (let i = 0; i< results.length; i++) {
if (results[i].score > bestScore) {
bestScore = results[i].score;
bestMove = i;
}
}
} else {
let bestScore = 1000;
for (let i = 0; i< results.length; i++) {
if (results[i].score < bestScore) {
bestScore = results[i].score;
bestMove = i;
}
}
}
return results[bestMove];
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论