private int maxMin(GameBoard i_Board, GameEngien.ePlayers i_CurrenPlayer, int i_Depht, int i_MaxDeapth) { if (i_Depht == i_MaxDeapth) { return(evaluation(i_Board, i_CurrenPlayer)); } else { List <Point> moveOptions = null; List <int> sonsEvaluations = new List <int>(); GameEngien.ePlayers OtherPlayer; if (i_CurrenPlayer == GameEngien.ePlayers.FirstPlayer) { OtherPlayer = GameEngien.ePlayers.SecondPlayer; } else { OtherPlayer = GameEngien.ePlayers.FirstPlayer; } if (i_Board.IsThereOptionsToPlay(i_CurrenPlayer, ref moveOptions)) { foreach (Point location in moveOptions) { sonsEvaluations.Add(maxMin(i_Board.BoardDuplicatewithNewPoint(i_Board, location, i_CurrenPlayer), OtherPlayer, i_Depht + 1, i_MaxDeapth)); } if (i_Depht % 2 == 1) { return(returnMaxInt(sonsEvaluations)); } else { return(returnMinInt(sonsEvaluations)); } } else { return(0); } } }
public Point AiTurn(GameBoard i_Board, GameEngien.ePlayers i_CurrenPlayer) { GameEngien.ePlayers OtherPlayer; Point returnTurn = null; List <Point> moveOptions = null; List <int> sonsEvaluations = new List <int>(); if (i_CurrenPlayer == GameEngien.ePlayers.FirstPlayer) { OtherPlayer = GameEngien.ePlayers.SecondPlayer; } else { OtherPlayer = GameEngien.ePlayers.FirstPlayer; } if (i_Board.IsThereOptionsToPlay(i_CurrenPlayer, ref moveOptions)) { foreach (Point location in moveOptions) { sonsEvaluations.Add(maxMin(i_Board.BoardDuplicatewithNewPoint(i_Board, location, i_CurrenPlayer), OtherPlayer, 1, 6)); } } int maxvalue = returnMaxInt(sonsEvaluations); for (int i = 0; i < sonsEvaluations.Count; i++) { if (sonsEvaluations[i] == maxvalue) { returnTurn = moveOptions[i]; } } return(returnTurn); }