TicTacToe.Node GenerateNodeFromBoard() { TicTacToe.Node node = new TicTacToe.Node(); for (int i = 0; i < cells.Length; i++) { node.cells[i] = cells[i].GetCurrentMark(); } return(node); }
void Reset(bool doesHumanPlayerDoFirst) { foreach (var cell in cells) { cell.Reset(); } result = TicTacToe.ResultType.NONE; if (!doesHumanPlayerDoFirst) { TicTacToe.Node node = GenerateNodeFromBoard(); node.player = 1; int cellIndexChosenByComputer = miniMax.MakeComputerDecision(node, maxSearchDepth); cells[cellIndexChosenByComputer].DisplayMark(TicTacToeCell.MarkType.X_MARK); } }
void OnCellClicked(TicTacToeCell cell) { Debug.Log(GetCellIndex(cell)); TicTacToe.Node node = GenerateNodeFromBoard(); node.player = 1; if (miniMax.DoesGameFinish(node, ref result)) { return; } int cellIndexChosenByComputer = miniMax.MakeComputerDecision(node, maxSearchDepth); cells[cellIndexChosenByComputer].DisplayMark(TicTacToeCell.MarkType.X_MARK); node = GenerateNodeFromBoard(); if (miniMax.DoesGameFinish(node, ref result)) { return; } }