Exemple #1
0
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // !!!!! Manual !!!!!
            //Application.Run(new SnakeForm());

            // !!!!! Automated !!!!!
            _gameForm = SnakeForm.ForAutomatedControl(1); // 2x

            Evolution.GeneticEvolution.BeforeNaturalSelection += (individual, generation) =>
            {
                //individual.AvoidLevel = 1;
                //individual.EagerLevel = 100;
                //individual.WallAwareness = new[] { 100d, 100, 100, 100 };
                //individual.FoodAwareness = new[] { 100d, 100, 100, 100 };

                individual.SetGeneration(generation);
                _gameForm.OnSnakeMove += individual.SnakeGame_OnSnakeMove;
                _gameForm.OnGameOver  += individual.SnakeGame_OnGameOver;
                _gameForm.StartNewGame();
            };

            Evolution.GeneticEvolution.AfterNaturalSelection += (individual, generation) =>
            {
                _gameForm.OnSnakeMove -= individual.SnakeGame_OnSnakeMove;
                _gameForm.OnGameOver  -= individual.SnakeGame_OnGameOver;
            };

            Evolution.GeneticEvolution.GenerationEvolved += result =>
            {
                _gameForm.Invoke((Action)(() => _gameForm.SetGenerationResult(result)));
            };

            Evolution.Start();
            Application.Run(_gameForm);
        }
Exemple #2
0
 internal static void NotifyDebugData(string data)
 {
     _gameForm.Invoke((Action)(() => _gameForm.SetDebugData(data)));
 }