Exemple #1
0
    private int CalcNextStep(char[,] desk, int depth, int c)
    {
        char[,] virtualDesk;
        List <StepData> allStep = StepRemover.GetRemainningSteps(teamQueue[depth % 2], desk, fields);
        int             score   = -1000 * c;
        int             temp    = 0;

        foreach (StepData sd in allStep)
        {
            virtualDesk = MakeVirtualStep(desk, sd);
            temp        = (sd.score + sd.eatScore) * c;
            if (depth - 1 > 0)
            {
                temp += CalcNextStep(virtualDesk, depth - 1, -c);
            }

            if (c == 1)
            {
                if (score <= temp)
                {
                    score = temp;
                }
            }
            else if (c == -1)
            {
                if (score >= temp)
                {
                    score = temp;
                }
            }
        }
        return(score);
    }
Exemple #2
0
    public StepData CalcNextStep(char[,] desk)
    {
        char[,] virtualDesk;
        List <StepData> allStep = StepRemover.GetRemainningSteps(teamQueue[depth % 2], desk, fields);
        int             score   = -1000;
        int             temp;
        StepData        result = new StepData();
        int             count  = 0;

        foreach (StepData sd in allStep)
        {
            virtualDesk = MakeVirtualStep(desk, sd);
            temp        = CalcNextStep(virtualDesk, depth - 1, -1);
            temp       += sd.score + sd.eatScore;

            if (score < temp)
            {
                score  = temp;
                result = sd + temp;
            }
        }
        count += allStep.Count;
        Debug.Log(count);
        count = 0;
        return(result);
    }
 public void SwapTurn()
 {
     turn++;
     if (turn % 2 != 0)
     {
         allSteps = StepRemover.GetRemainningSteps('r', desk, fields);
         SetPieceActive("red", true);
         SetPieceActive("black", false);
     }
     else
     {
         allSteps = StepRemover.GetRemainningSteps('b', desk, fields);
         SetPieceActive("red", false);
         SetPieceActive("black", true);
         StepData nextStep = ai.CalcNextStep(desk);
         Debug.Log(nextStep);
         costil(nextStep);
     }
 }