Esempio n. 1
0
        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));
             */
        }
Esempio n. 2
0
 /*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));
 }