private void ResetGame() { ActualRound++; Round.Content = "Round: " + ActualRound; List <SnakeObject> allSnakes = new List <SnakeObject>(); foreach (var game in gameList) { allSnakes.AddRange(game.GetAllSnakes()); } double bestFitnes = allSnakes.OrderByDescending(x => x.Fitness).First().Fitness; BestFitenss.Content = "BF: " + bestFitnes; Debug.WriteLine("RND " + ActualRound + " BF: " + bestFitnes); //MessageBox.Show("game ended! best fitness is " + game.BestFitness); gameList.Clear(); var snakes = Mutator.MutateForOneSnakeGame(allSnakes, globalRandom); foreach (var snake in snakes) { gameList.Add(new Game(new List <SnakeObject>() { snake }, globalRandom, false)); } /* * for(int i = 0; i<NoGamesAtOnce; i++) * gameList.Add(new Game(GameWidth, GameHeight, NoSnakes, allSnakes.OrderByDescending(x => x.Fitness).Take(NoSnakes).ToList(), globalRandom, MutateRatio, penalty, AppleTimeSpan, NoRounds, Treshold)); */ }
/*Game strategy when game ends when noone touch apple for long time*/ public Game(List <SnakeObject> snakes, Random random, bool mutate) { GameRounds = 0; this.random = random; if (mutate) { SnakeList = Mutator.MutateSnakesForMultiGame(snakes, random); } else { SnakeList = snakes; } Apples.Add(new Apple(SnakeList, random)); }