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); }
internal static void NotifyDebugData(string data) { _gameForm.Invoke((Action)(() => _gameForm.SetDebugData(data))); }