Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 极大极小值算法_C#_Algorithm_Minimax - Fatal编程技术网

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关联可能有助于重新表述和扩展您的问题,您在问题中询问了如何更改返回类型,但在您的评论中,您说这实际上不是您所关心的。你能解释一下你到底想弄明白什么,以及你当前的代码有什么问题吗?