Пример #1
0
        public BotsRunner()
        {
            ILanguageProvider compProvider = new LanguageProvider();

            this.compiler = compProvider.GetCompilerForLanguage(CompilerSupportedLanguages.CSharp);

            IRunnerProvider runProvider = new RunnerProvider();

            this.runner = runProvider.GetRunnerForLanguage(RunnerSupportedLanguages.CSharp);

            MapperConfiguration mapperConfig = new MapperConfiguration(conf =>
            {
                conf.CreateMap <BLL.Models.Bot, Runner.CodeRunners.Models.Bot>();
            });

            mapper = mapperConfig.CreateMapper();
        }
Пример #2
0
        private static void testRunning()
        {
            string Bot1 = @"
                    using Bots.Models.Steps;
                    using Bots.Models;
                    namespace Bots.Core 
                    {
                        public class Bot1 : Bot 
                        {
                            public override Step NextStep(Field f) 
                            {
                                return new MoveStep(this, this.X + 1, this.Y);
                            }
                        }
                    }
                ";

            string Bot2 = @"
                    using Bots.Models.Steps;
                    using Bots.Models;
                    using System;

                    namespace Bots.Core 
                    {
                        public class Bot2 : Bot 
                        {
                            public override Step NextStep(Field f) 
                            {
                                Random r = new Random();

                                int next = r.Next(4);

                                switch(next) 
                                {
                                    case 0:
                                         return new MoveStep(this, this.X + 1, this.Y);
                                        break;
                                    case 1:
                                         return new MoveStep(this, this.X - 1, this.Y);
                                        break;
                                    case 2:
                                         return new MoveStep(this, this.X, this.Y + 1);
                                        break;
                                    case 3:
                                         return new MoveStep(this, this.X, this.Y - 1);
                                        break;

                                }

                                return new MoveStep(this, this.X, this.Y + 1);
                            }
                        }
                    }
                ";

            ILanguageProvider compProvider = new LanguageProvider();
            ICompiler         compiler     = compProvider.GetCompilerForLanguage(CompilerSupportedLanguages.CSharp);

            CompilationResult compileResult1 = compiler.CompileCode(TaskParameters.Build(2), Bot1, Bot2);

            Console.WriteLine($"Compilation result - { compileResult1.IsCodeCorrect }");

            if (compileResult1.Errors.Count > 0)
            {
                Console.Error.WriteLine("Detected errors");
            }

            foreach (string error in compileResult1.Errors)
            {
                Console.Error.WriteLine(error);
            }

            CompilationResult compileResult2 = compiler.CompileCode(TaskParameters.Build(2), Bot2, Bot1);

            if (compileResult1.IsCodeCorrect && compileResult2.IsCodeCorrect)
            {
                IRunnerProvider runProvider = new RunnerProvider();
                IRunner         runner      = runProvider.GetRunnerForLanguage(RunnerSupportedLanguages.CSharp);

                Field field = getRealField();

                compileResult1.InformationForCodeRunner.PlayerName = "player1";
                compileResult2.InformationForCodeRunner.PlayerName = "player2";

                runner.RunCodeGame(compileResult1.InformationForCodeRunner, compileResult2.InformationForCodeRunner, field, bots1.Select(b => new Runner.CodeRunners.Models.Bot()
                {
                    Name = b.Name, X = b.X, Y = b.Y
                }), bots2.Select(b => new Runner.CodeRunners.Models.Bot()
                {
                    Name = b.Name, X = b.X, Y = b.Y
                }),
                                   new CommandNumberCondition());

                runner.GameFinished += Runner_GameFinished;
            }

            Console.ReadKey();
        }