C# 极大极小值算法
好的,我的问题已经改变了,我现在的问题是,我正试图使用极小极大算法,就像那个网站解释的那样 它给了我一个错误:“参数超出范围异常” 为什么会这样我说不出为什么会发生这种异常 这就是我所做的:C# 极大极小值算法,c#,algorithm,minimax,C#,Algorithm,Minimax,好的,我的问题已经改变了,我现在的问题是,我正试图使用极小极大算法,就像那个网站解释的那样 它给了我一个错误:“参数超出范围异常” 为什么会这样我说不出为什么会发生这种异常 这就是我所做的: int MiniMax(Seed[,] board, Seed currPlayer) { if (checkBoard1(this.board) != -1) return score(); List<int> scores = new List<int>();
int MiniMax(Seed[,] board, Seed currPlayer)
{
if (checkBoard1(this.board) != -1) return score();
List<int> scores = new List<int>();
List<Vector2> moves = generateMoves();
for (int i = 0; i < moves.Count; i++)
{
if (currPlayer == Seed.NOUGHT)
currPlayer = Seed.CROSS;
else
currPlayer = Seed.NOUGHT;
Seed[,] possibleBoard = getPossibleBoard(moves[i]);
scores.Add(MiniMax(possibleBoard, currPlayer));
}
if(currPlayer == Seed.NOUGHT)
{
int max_score_index = getMaxIndexFromList(scores);
choice = (Vector2)moves[max_score_index];
return scores[max_score_index];
}
else
{
int min_score_index = getMinIndexFromList(scores);
choice = (Vector2)moves[min_score_index];
return scores[min_score_index];
}
}
int getMinIndexFromList(List<int> list)
{
int min = list[0], minIndex = 0;
for (int i = 1; i < list.Count; i++)
{
if (list[i] < min)
{
min = list[i];
minIndex = i;
}
}
return minIndex;
}
int MiniMax(种子[,]板,种子播放器)
{
如果(checkBoard1(this.board)!=-1)返回分数();
列表分数=新列表();
列表移动=生成移动();
for(int i=0;i
您是否正在寻找配对
?您是否在询问如何更改int minimax(种子[,]板,种子播放器)
方法的返回类型?如果是这样,用Vector2替换int,并将方法体更改为返回Vector2而不是int。感觉现在一切都是种子。是的,我知道如何将其转换为返回Vector2。问题是我不知道函数是否正确,如果它正确,即使我得到最高分数,我如何将它与正确的moveIt关联可能有助于重新表述和扩展您的问题,您在问题中询问了如何更改返回类型,但在您的评论中,您说这实际上不是您所关心的。你能解释一下你到底想弄明白什么以及你当前代码的问题是什么吗?你是在寻找对
?你是在问如何更改int minimax(Seed[,]board,Seed currPlayer)
方法的返回类型吗?如果是这样,用Vector2替换int,并将方法体更改为返回Vector2而不是int。感觉现在一切都是种子。是的,我知道如何将其转换为返回Vector2。问题是我不知道函数是否正确,如果它正确,即使我得到最高分数,我如何将它与正确的moveIt关联可能有助于重新表述和扩展您的问题,您在问题中询问了如何更改返回类型,但在您的评论中,您说这实际上不是您所关心的。你能解释一下你到底想弄明白什么,以及你当前的代码有什么问题吗?