public static List <Coordinates> GetWinCoordinates(GameProcessStatistic gameProcessStatistic) { var resultList = new List <Coordinates>(); if (gameProcessStatistic.WinStatistic.MoveDirection == MoveDirection.Left) { for (var x = 0; x < GameFieldConstants.CellsCountToWin; x++) { resultList.Add(new Coordinates { X = gameProcessStatistic.WinStatistic.X - x, Y = gameProcessStatistic.WinStatistic.Y }); } return(resultList); } if (gameProcessStatistic.WinStatistic.MoveDirection == MoveDirection.Up) { for (var y = 0; y < GameFieldConstants.CellsCountToWin; y++) { resultList.Add(new Coordinates { X = gameProcessStatistic.WinStatistic.X, Y = gameProcessStatistic.WinStatistic.Y - y }); } return(resultList); } if (gameProcessStatistic.WinStatistic.MoveDirection == MoveDirection.LeftUp) { for (var factor = 0; factor < GameFieldConstants.CellsCountToWin; factor++) { resultList.Add(new Coordinates { X = gameProcessStatistic.WinStatistic.X - factor, Y = gameProcessStatistic.WinStatistic.Y - factor }); } return(resultList); } for (var factor = 0; factor < GameFieldConstants.CellsCountToWin; factor++) { resultList.Add(new Coordinates { X = gameProcessStatistic.WinStatistic.X + factor, Y = gameProcessStatistic.WinStatistic.Y - factor }); } return(resultList); }
public void GenerateNextGeneration(TicTacToeContext context) { var indivadualIds = this.GetIndividualIds(context); foreach (var indivadualId in indivadualIds) { var isCross = true; for (var gameNumber = 0; gameNumber < 50; gameNumber++) { var gameId = this.CreateNewGame(context); var isGeneticBotTurn = isCross; GameProcessStatistic statistic = null; do { statistic = isGeneticBotTurn ? this.MakeGeneticBotStep(gameId, context) : this.MakeMonkeyBotStep(gameId, context); isGeneticBotTurn = !isGeneticBotTurn; }while (statistic.GameStatus == GameStatus.InProgress); if (statistic.GameStatus == GameStatus.Draw) { this.TakeDraw(gameId, indivadualId, context); } else { this.Win(gameId, indivadualId, isCross, context); } isCross = !isCross; } } var winners = this.TakeThreeWinners(context); this.AddMutations(winners, context); this.AddIntersections(winners, context); this.AddNewMember(winners[0], context); }