public GameProcessorTests()
        {
            var collisionMapProcessor = new Mock <ICollisionMapProcessor>();

            _gameProcessor = new GameProcessor(new FrameProcessor(new OutcomeProcessor(new OutcomeScoreProcessor()), collisionMapProcessor.Object));
            _sourceGame    = new Game();
            _sourceGame.Id = "test123";

            var snake = new Snake {
                Ang = 0
            };

            _sourceGame.Frames = new List <SlitherFrame>();
            _sourceGame.Frames.Add(new SlitherFrame {
                Kills = 0, SnakeLength = 10, Time = DateTimeOffset.Now.ToUnixTimeMilliseconds() - 60000, Snake = snake
            });
            _sourceGame.Frames.Add(new SlitherFrame {
                Kills = 0, SnakeLength = 50, Time = DateTimeOffset.Now.ToUnixTimeMilliseconds() - 30000, Snake = snake
            });
            _sourceGame.Frames.Add(new SlitherFrame {
                Kills = 2, SnakeLength = 105, Time = DateTimeOffset.Now.ToUnixTimeMilliseconds(), Snake = snake
            });

            _processedGame = _gameProcessor.ProcessGame(_sourceGame);
        }
Exemplo n.º 2
0
        public static void AddGame(ProcessedGame processedGame)
        {
            Games.Add(processedGame);

            string json = JsonConvert.SerializeObject(processedGame, new JsonSerializerSettings
            {
                TypeNameHandling  = TypeNameHandling.Auto,
                NullValueHandling = NullValueHandling.Ignore,
            });

            File.WriteAllText(DatabaseFolder + "\\" + processedGame.SourceId + ".json", json, Encoding.UTF8);
        }
Exemplo n.º 3
0
        private ActionResult GetActionResult(int millisecondsToAction, ProcessedGame game, int frameIndex)
        {
            int framesAhead = 1;
            var angle       = game.Frames[frameIndex + framesAhead].SnakeAngle;
            var sprint      = game.Frames[frameIndex + framesAhead].SnakeSprinting;

            while (game.Frames.Count > frameIndex + framesAhead &&
                   game.Frames[frameIndex + framesAhead].Time - game.Frames[frameIndex].Time < millisecondsToAction)
            {
                angle  = game.Frames[frameIndex + framesAhead].SnakeAngle;
                sprint = game.Frames[frameIndex + framesAhead].SnakeSprinting;
                framesAhead++;
            }

            return(new ActionResult {
                Angle = game.Frames[frameIndex].SnakeAngle - angle, Sprinting = sprint
            });
        }
Exemplo n.º 4
0
        public ProcessedGame ProcessGame(Game game)
        {
            var processedGame = new ProcessedGame();

            processedGame.SourceId = game.Id;

            var lastFrame = game.Frames.Last();

            processedGame.SnakeKills  = lastFrame.Kills;
            processedGame.SnakeLength = lastFrame.SnakeLength;
            processedGame.GameLength  = lastFrame.Time - game.Frames.First().Time;

            processedGame.Frames = new List <ProcessedFrame>();

            for (int index = 0; index < game.Frames.Count; index++)
            {
                processedGame.Frames.Add(_frameProcessor.ProcessFrame(game.Frames, index));
            }

            return(processedGame);
        }