コード例 #1
1
        public void SelectTest()
        {
            #region Формирование исходных данных
            var history = new ExperimentHistory("", null, new Experiment());

            var game = new Game() { Title = "Game" };

            var strike = new Strike() {ErrorDistance = 0};
            var strike2 = new Strike() {ErrorDistance = 1};

            var strikes = new List<Strike> {strike, strike2};

            var users = new Users()
            {
                new User
                {
                    Person = new Person(),
                    Strikes = strikes
                }
            };

            history.AddGame(game, users);

            var settings = new List<PlayerHistorySample>
            {
                new PlayerHistorySample
                {
                    FromStrike = "first",
                    ToStrike = "last",
                    GameTitle = "Game"
                }
            };

            #endregion

            var samples = history.SelectSamples(settings);

            Assert.AreEqual(2, samples.Count());

            for (var i = 0; i < strikes.Count; i++)
            {
                Assert.AreEqual(strikes[i].ErrorDistance, samples.ElementAt(i));
            }
        }
コード例 #2
0
        public void Initialize()
        {
            _dt = 1;

            t_ = 0;

            var currentStrike = gameObjects["currentStrikeInfo"] as StrikeInfo;

            if (currentStrike == null) throw new NullReferenceException("currentStrikeInfo");

            _strikeModel = currentStrike.Model;

            _strike = gameObjects["strike"] as Strike;

            if (_strike == null) throw new NullReferenceException("strike");

            _t2 = Convert.ToInt32((_strike.StrikeTimeSpan.TotalSeconds + _strikeModel.Delay) * 1000);

            _ball = gameObjects["ball"] as Ball;

            _ballStartPosition = new Vector2(_ball.Position.X, _ball.Position.Y);

            _hole = gameObjects["hole"] as Hole;

            var currentUser = gameObjects["currentUser"] as User;

            if (currentUser == null) throw new NullReferenceException("currentUser");
        }
        private static ExperimentHistory CreateHistory(int hitCount, int size, bool lastStrikeHit)
        {
            var history = new ExperimentHistory("", null, new Experiment());

            var game = new Game() { Title = "Game" };

            var strikes = new List<Strike>();

            var count = hitCount - 1;

            var j = 0;

            for (var i = 0; i < size; i++)
            {
                var strike = new Strike
                {
                    IsHit = j < count
                };

                j++;

                strikes.Add(strike);
            }

            strikes.Last().IsHit = lastStrikeHit;

            var users = new Users()
            {
                new User
                {
                    Person = new Person(),
                    Strikes = strikes
                }
            };

            history.AddGame(game, users);

            return history;
        }
コード例 #4
0
        public void SelectTest18()
        {
            #region Формирование исходных данных
            var history = new ExperimentHistory("", null, new Experiment());

            var game = new Game() { Title = "Game" };

            var strike = new Strike() { ErrorDistance = 0 };
            var strike2 = new Strike() { ErrorDistance = 1 };

            var strikes = new List<Strike> { strike, strike2 };

            var users = new Users()
            {
                new User
                {
                    Person = new Person(),
                    Strikes = strikes
                }
            };

            history.AddGame(game, users);

            var settings = new List<PlayerHistorySample>
            {
                new PlayerHistorySample
                {
                    ToStrike = "last - 10",
                    GameTitle = "Game"
                }
            };

            #endregion

            var samples = history.SelectSamples(settings);
        }
コード例 #5
0
        public static Strike CreateStrike(Ball ball, Hole hole, StrikeInfo currentKick, KickResult kickResult,
            TimeSpan timeBeforeSpaceDown = new TimeSpan())
        {
            var kickedBall = new Ball()
            {
                Size = ball.Size,
                Position = ComputeBallPosition(ball, kickResult)
            };

            var miss = GetMiss(hole, kickedBall);

            var strikeTimeSpan = TimeSpan.FromSeconds(kickResult.ElapsedTime);

            var strike = new Strike
            {
                Number = currentKick.RepeatTimes,
                StrikeInfo = currentKick,
                DateTime = System.DateTime.Now,
                ErrorDistance = kickedBall.Position.X - hole.Position.X,
                IsHit = Math.Abs(miss - 0.0) < 0.001,
                MissDistance = Math.Round(miss, 3),
                MissTime = Math.Round(miss / currentKick.Model.Velocity, 3),
                BeforeStrikeTimeSpan = timeBeforeSpaceDown,
                StrikeTimeSpan = strikeTimeSpan,
                TotalTimeSpan = timeBeforeSpaceDown + strikeTimeSpan,
                StartBallPosition = ball.Position.Copy(),
                StartHolePosition = hole.Position.Copy()
            };

            return strike;
        }