Пример #1
0
        private static Play convertToEntity(PlayDTO playDTO)
        {
            var play = new Play();

            play.record_id            = playDTO.RecordID;
            play.game_id              = playDTO.GameID;
            play.inning               = playDTO.Inning;
            play.game_team_code       = playDTO.GameTeamCode;
            play.sequence             = playDTO.Sequence;
            play.player_id            = playDTO.PlayerID;
            play.count_balls          = playDTO.CountBalls;
            play.count_strikes        = playDTO.CountStrikes;
            play.pitches              = playDTO.Pitches;
            play.event_sequence       = playDTO.EventSequence;
            play.event_modifier       = playDTO.EventModifier;
            play.event_runner_advance = playDTO.EventRunnerAdvance;
            play.event_hit_location   = playDTO.EventHitLocation;
            play.event_fielded_by     = playDTO.EventFieldedBy;
            play.event_play_on_runner = playDTO.EventPlayOnRunner;
            play.event_type           = playDTO.EventType;
            play.event_columnSix      = playDTO.EventColumnSix;
            play.event_num            = playDTO.EventNum;

            return(play);
        }
        public async Task <PlayDTO> Play(string[] parameters)
        {
            const string playEndpoint = BaseUrl + RequesterUrlConstants.Play;

            string gameId    = parameters[0];
            string positionX = parameters[1];
            string positionY = parameters[2];

            this.AddAuthorizationHeaderIfNotExist();

            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("GameId", gameId),
                new KeyValuePair <string, string>("PositionX", positionX),
                new KeyValuePair <string, string>("PositionY", positionY),
            });

            var response = await this.httpClient.PostAsync(playEndpoint, content);

            await this.ValiadteResponse(response);

            PlayDTO responseData = new PlayDTO()
            {
                PositionX = positionX,
                PositionY = positionY
            };

            return(responseData);
        }
Пример #3
0
        public static void CreatePlay(PlayDTO playDTO)
        {
            // ballpark instance of Player class in Retrosheet_Persist.Retrosheet
            var play = convertToEntity(playDTO);

            // entity data model
            //var dbCtx = new retrosheetDB();
            var dbCtx = new retrosheetEntities();

            dbCtx.Plays.Add(play);
            try
            {
                dbCtx.SaveChanges();
            }
            catch (DbEntityValidationException dbEx)
            {
                foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                    foreach (var validationError in validationErrors.ValidationErrors)
                    {
                        Trace.TraceInformation("Property: {0} Error: {1}",
                                               validationError.PropertyName,
                                               validationError.ErrorMessage);
                    }
                }
            }
            catch (Exception e)
            {
                string text;
                text = e.Message;
            }
        }
Пример #4
0
        private static void ReadWritePlayFile(string inputPathFile)
        {
            string[] columnValue;
            string   textLine = null;

            using (StreamReader reader = new StreamReader(inputPathFile))
            {
                while (!reader.EndOfStream)
                {
                    try
                    {
                        textLine = reader.ReadLine();
                    }
                    catch (Exception e)
                    {
                        // Let the user know what went wrong.
                        Console.WriteLine("The " + @"C:\users\mmr\documents\retrosheet\2016 Regular Season\Output\2016SLN\2016SLN_play" + " file could not be read:");
                        Console.WriteLine(e.Message);
                        Console.ReadLine();
                    }

                    columnValue = textLine.Split('|');

                    PlayDTO playDTO = new PlayDTO();

                    playDTO.RecordID           = Guid.NewGuid();
                    playDTO.GameID             = columnValue[0];
                    playDTO.Inning             = Convert.ToInt16(columnValue[1]);
                    playDTO.GameTeamCode       = Convert.ToInt16(columnValue[2]);
                    playDTO.Sequence           = Convert.ToInt16(columnValue[3]);
                    playDTO.PlayerID           = columnValue[7];
                    playDTO.CountBalls         = Convert.ToInt16(columnValue[8]);
                    playDTO.CountStrikes       = Convert.ToInt16(columnValue[9]);
                    playDTO.Pitches            = columnValue[10];
                    playDTO.EventSequence      = columnValue[11];
                    playDTO.EventModifier      = columnValue[12];
                    playDTO.EventRunnerAdvance = columnValue[13];
                    playDTO.EventHitLocation   = columnValue[14];
                    playDTO.EventFieldedBy     = columnValue[15];
                    playDTO.EventPlayOnRunner  = columnValue[16];
                    playDTO.EventType          = columnValue[17];
                    playDTO.EventColumnSix     = columnValue[18];
                    playDTO.EventNum           = Convert.ToInt16(columnValue[19]);

                    PlayPersist.CreatePlay(playDTO);
                }
            }
        }
Пример #5
0
        public void Setup()
        {
            playParser = new PlayParser();
            gameId     = Guid.NewGuid();
            playerIds  = new List <Guid>
            {
                Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid()
            };
            //P0 + P1 - teamA, P2 + P3 - teamB
            P0Makes2pFG  = new PlayDTO("fieldgoal", false, playerIds[0], true, 2);
            P1Assists    = new PlayDTO("assist", false, playerIds[1]);
            P0Misses2pFG = new PlayDTO("Fieldgoal", false, playerIds[0], false, 2);
            P0Makes3pFG  = new PlayDTO("fieldgoal", false, playerIds[0], true, 3);
            P0Misses3pFG = new PlayDTO("Fieldgoal", false, playerIds[0], false, 3);

            P1Rebounds_SameTeam = new PlayDTO("rebound", false, playerIds[1]);
            P2Rebounds_DiffTeam = new PlayDTO("Rebound", true, playerIds[2]);
            P2Blocked           = new PlayDTO("block", true, playerIds[2]);
            P0LostTheBall       = new PlayDTO("Turnover", false, playerIds[0]);
            P2StoleTheBall      = new PlayDTO("steal", true, playerIds[2]);
            P0SubbedOut         = new PlayDTO("substitution", false, playerIds[0], true);
            P1SubbedIn          = new PlayDTO("substitution", false, playerIds[1], false);
        }
        public async override void Execute(string[] parameters)
        {
            try
            {
                PlayDTO responseData = await this.GameEngine.Requester.Play(parameters);

                string formattedResult = string.Format(
                    MessageConstants.SuccessfullyBombed, responseData.PositionX, responseData.PositionY);

                this.Print(formattedResult);
                this.Status(parameters[0]);
            }
            catch (ApiException ex)
            {
                foreach (var error in ex.Errors)
                {
                    this.Print(string.Format(MessageConstants.ErrorMessage, error));
                }
            }
            catch (IndexOutOfRangeException ex)
            {
                this.Print(string.Format(MessageConstants.ErrorMessage, ex.Message));
            }
        }
        public async Task<PlayDTO> Play(string[] parameters)
        {
            const string playEndpoint = BaseUrl + RequesterUrlConstants.Play;

            string gameId = parameters[0];
            string positionX = parameters[1];
            string positionY = parameters[2];

            this.AddAuthorizationHeaderIfNotExist();

            var content = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair<string, string>("GameId", gameId), 
                new KeyValuePair<string, string>("PositionX", positionX), 
                new KeyValuePair<string, string>("PositionY", positionY), 
            });

            var response = await this.httpClient.PostAsync(playEndpoint, content);
            await this.ValiadteResponse(response);
            
            PlayDTO responseData = new PlayDTO()
            {
                PositionX = positionX,
                PositionY = positionY
            };

            return responseData;
        }
Пример #8
0
        public async Task <GameProgress> PlayMove(PlayDTO play, int id)
        {
            var game = context.Game.Include(game => game.Moves).Where(game => game.Id == id).First();

            var chess = chessService.ReplayMoves(game.Moves.ToList());

            var move = chess.Move(play.SAN);

            var boardState = CoordinateOutput.GameToState(chess);

            if (boardState.whiteWins || boardState.isDraw || boardState.blackWins)
            {
                var moveRow = new Models.Move()
                {
                    SAN       = play.SAN,
                    Game      = game,
                    CreatedAt = DateTime.Now
                };
                context.Move.Add(moveRow);

                context.SaveChanges();
                return(new GameProgress()
                {
                    GameId = id,
                    State = boardState
                });
            }

            var aiMove = await chessService.GetAiMove(game.AIDifficulty, chess);

            var aiMoveSan = chess.board.StandardAlgebraicNotation(aiMove);

            chess.Move(aiMove);

            if (MoveHelper.isValidMove(move.move))
            {
                var moveRow = new Models.Move()
                {
                    SAN       = play.SAN,
                    Game      = game,
                    CreatedAt = DateTime.Now
                };

                var aiMoveRow = new Models.Move()
                {
                    SAN       = aiMoveSan,
                    Game      = game,
                    CreatedAt = DateTime.Now
                };

                context.Move.Add(moveRow);

                context.Move.Add(aiMoveRow);

                context.SaveChanges();
            }

            return(new GameProgress()
            {
                GameId = id,
                State = CoordinateOutput.GameToState(chess)
            });
        }