コード例 #1
0
ファイル: GameModel1.cs プロジェクト: stubhub9/YahtzeeWPF2
            // Sets the correct row for the scoreTable and the 5X button's textblock.
            static Row SetFiveXRow()
            {
                var _scores = scoreTable [( int )PlayerUp];
                var _row    = Row.Unselected;
                // GameScoring1 and MainWindow both use the FiveX1 row to represent the Five of a kind block; for scores available or button clicked.
                // ie:  var _item = GameScoring1.GetResultsItem ( Row.FiveX1 );
                var _item = GameScoring1.GetResultsItem(RowSelected);

                // Get this players scores.

                // Scratching progresses from FiveX4 to FiveX1.
                if (_item.Value == 0)
                {
                    for (int i = ( int )Row.FiveX4; i >= ( int )Row.FiveX1; i--)
                    {
                        if (_scores [i] == null)
                        {
                            _row = ( Row )i;
                            break;
                        }
                    }
                }
                else
                // Scoring a 5 of a kind progresses from FiveX1 to FiveX4.
                {
                    for (int i = ( int )Row.FiveX1; i <= ( int )Row.FiveX4; i++)
                    {
                        if (_scores [i] == null)
                        {
                            _row = ( Row )i;
                            break;
                        }
                    }
                }

                return(_row);
            }
コード例 #2
0
ファイル: GameModel1.cs プロジェクト: stubhub9/YahtzeeWPF2
            /// <summary>
            /// Updates the score table,
            /// Returns all entries that have changed for the Vis
            /// </summary>
            //public static void RecordScore ( ResultsItem item )
            //{
            //    // Get this players scores.
            //    int? [] scores = scoreTable [ ( int ) PlayerUp ];

            //    // Used to set the GameModel ResultsList property.
            //    var _resultsList = new List<ResultsItem> ();

            //    //SetFiveXRow ( item );

            //    if ( item.Row == Row.FiveX1 )
            //    {
            //        if ( item.Value == 0 )
            //        {
            //            for ( int i = ( int ) Row.FiveX4; i >= ( int ) Row.FiveX1; i-- )
            //            {
            //                if ( scores [ i ] == null )
            //                {
            //                    item.Row = ( Row ) i;
            //                    break;
            //                }
            //            }
            //        }
            //        else
            //        {
            //            for ( int i = ( int ) Row.FiveX1; i <= ( int ) Row.FiveX4; i++ )
            //            {
            //                if ( scores [ i ] == null )
            //                {
            //                    item.Row = ( Row ) i;
            //                    break;
            //                }
            //            }

            //        }
            //    }

            //    PlayerScored = PlayerUp;
            //    // Update the player chosen entry.
            //    AddToScores ( item.Row, item.Value, ref scores, ref resultsList );

            //    UpdatePostings ( item.Row, item.Value, ref scores, ref resultsList );

            //    scoreTable [ ( int ) PlayerUp ] = scores;
            //    ResultsList = resultsList;
            //}



            public static void RecordScore()
            {
                var _row = RowSelected;

                int? [] _scores       = scoreTable [( int )PlayerUp];
                var     _scoresUpdate = new List <ResultsItem> ();
                var     _scoresItem   = GameScoring1.GetResultsItem(_row);
                var     _postItem     = new ResultsItem();

                //var _scoresItem = new ResultsItem ();
                PlayerScored = PlayerUp;

                // GameScoring1 and MainWindow both use the FiveX1 row to represent the Five of a kind block; for scores available or button clicked.
                if (_row == Row.FiveX1)
                {
                    // Add the five of a kind score.
                    _scoresItem.Row = SetFiveXRow();
                    _scoresUpdate.Add(_scoresItem);
                    _scores [( int )_scoresItem.Row] = _scoresItem.Value;
                    //_scores [ ( int ) Row.ScoreFiveX ] = ( _scores [ ( int ) Row.ScoreFiveX ] != null ) ?
                    //    _scores [ ( int ) Row.ScoreFiveX ] + _scoresItem.Value : _scoresItem.Value;

                    // Add the five of a kind total.
                    _scores [( int )Row.ScoreFiveX] = (_scores [( int )Row.ScoreFiveX] ?? 0) + _scoresItem.Value;
                    _postItem.Row   = Row.ScoreFiveX;
                    _postItem.Value = ( int )_scores [( int )Row.ScoreFiveX];
                    _scoresUpdate.Add(_postItem);
                }
                else
                {
                    _scoresUpdate.Add(_scoresItem);
                    _scores [( int )_scoresItem.Row] = _scoresItem.Value;
                }

                if (( int )_row <= ( int )Row.Sixes)
                {
                    _scores [( int )Row.ScoreUpper] = (_scores [( int )Row.ScoreUpper] ?? 0) + _scoresItem.Value;
                    if ((_scores [(int)Row.ScoreUpper] > 63) && (_scores [(int)Row.Score63] == null))
                    {
                        _scores [( int )Row.Score63] = GameScoring1.Over63Bonus;
                        _postItem = new ResultsItem()
                        {
                            Row   = Row.Score63,
                            Value = GameScoring1.Over63Bonus,
                        };
                        _scoresUpdate.Add(_postItem);
                        _scores [( int )Row.ScoreUpper] += GameScoring1.Over63Bonus;
                    }

                    _postItem = new ResultsItem()
                    {
                        Row   = Row.ScoreUpper,
                        Value = (int)_scores [( int )Row.ScoreUpper],
                    };
                    _scoresUpdate.Add(_postItem);
                }
                else
                {
                    // Update LowerTotal
                    _scores [( int )Row.ScoreLower] = (_scores [( int )Row.ScoreLower] ?? 0) + _scoresItem.Value;
                    _postItem = new ResultsItem()
                    {
                        Row   = Row.ScoreLower,
                        Value = ( int )_scores [( int )Row.ScoreLower],
                    };
                    _scoresUpdate.Add(_postItem);
                }

                _scores [( int )Row.ScoreTotal] = (_scores [( int )Row.ScoreTotal] ?? 0) + _scoresItem.Value;
                _postItem = new ResultsItem()
                {
                    Row   = Row.ScoreTotal,
                    Value = ( int )_scores [( int )Row.ScoreTotal],
                };
                _scoresUpdate.Add(_postItem);

                ResultsList = _scoresUpdate;
            }