Javascript中的Tictoe minimax AI

Javascript中的Tictoe minimax AI,javascript,recursion,tic-tac-toe,Javascript,Recursion,Tic Tac Toe,我在实现这一点上遇到了困难。我对javascript比较陌生,所以我确信我在变量作用域方面做错了什么 代码不会在代码段中运行,但是 选项={ 0:“#ul”, 1:"嗯",, 二:"吾珥",, 3:"ml",, 4:"嗯",, 5:"先生",, 6:"ll",, 7:#lm",, 8:“#lr” } 函数getGrid(){ var divs=[] 对于(变量i=0;i

我在实现这一点上遇到了困难。我对javascript比较陌生,所以我确信我在变量作用域方面做错了什么

代码不会在代码段中运行,但是

选项={
0:“#ul”,
1:"嗯",,
二:"吾珥",,
3:"ml",,
4:"嗯",,
5:"先生",,
6:"ll",,
7:#lm",,
8:“#lr”
}
函数getGrid(){
var divs=[]
对于(变量i=0;i<9;i++){
divs.push($(选项[i]).html())
}
返回divs
}
函数getGame(){
var divs=[]
对于(变量i=0;i<9;i++){
divs.push([$(选项[i]).html(),i])
}
返回divs
}
函数转换GameTogrid(游戏){
var divs=[]
对于(变量i=0;i最大分数){
最大得分指数=i
最大分数=分数[i]
}
}
如果(深度=0){//我们需要最好的移动
返回移动[最大得分指数]
}else{//否则此函数需要分数
返回分数[最大分数指数]
}
}否则{
var最小得分指数=0
var min_分数=100000000
对于(变量i=0;i
#ttt盒{
位置:相对位置;
高度:304px;
宽度:304px;
保证金:30像素自动;
背景色:#bbb;
边框:实心#000 4px;
边界半径:20%;
}
#l1,
#l2,
#l3,
#l4{
位置:绝对位置;
背景色:#000;
}
#l1{
左:99px;
宽度:3倍;
高度:296px;
}
#l2{
左:199px;
宽度:3倍;
高度:296px;
}
#l3{
top:99px;
宽度:296px;
高度:3倍;
}
#l4{
顶部:199px;
宽度:296px;
高度:3倍;
}
#ul,
#嗯,
#呃,,
#毫升,
#嗯,
#先生,
#嗯,
#lm,
#lr{
光标:指针;
位置:绝对位置;
宽度:99px;
高度:99px;
字体大小:70px;
文本对齐:居中;
}
#保险商实验室{
排名:0;
左:0;
}
#嗯{
排名:0;
左:101px;
}
#乌尔{
排名:0;
左:201px;
}
#毫升{
top:101px;
左:0;
}
#嗯{
top:101px;
左:101px;
}
#先生{
top:101px;
左:201px;
}
#ll{
top:201px;
左:0;
}
#lm{
top:201px;
左:101px;
}
#lr{
top:201px;
左:201px;
}

首先是一个建议,因为您才刚刚开始:学习如何使用调试器。在这样的情况下,它将是非常宝贵的,大多数现代浏览器都内置了它们

关于您的问题,我没有跟踪您的所有代码,但我确实注意到了一件可能导致
minmax
函数出现问题的事情。在该函数的底部有以下代码:

//even depths are ai, odd are player
if (depth % 2 == 0) {
    var max_score_index = 0
    // snip...
} else {
    var min_score_index = 0
    // snip...
    return scores[max_score_index]
}
请注意,您正在声明和分配
max\u score\u索引<