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); }
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); } }