示例#1
0
文件: Player.cs 项目: bigbasti/Katas
        public void ScorePointAgainst(Player player)
        {
            if (this.Score == TennisScore.Game || player.Score == TennisScore.Game) {
                return;
            }

            if (player.Score == TennisScore.Fourty && this.Score == TennisScore.Fourty) {
                Score = TennisScore.Advantage;
                return;
            }

            if (player.Score <= TennisScore.Thirty && this.Score == TennisScore.Fourty) {
                Score = TennisScore.Game;
                return;
            }

            if (player.Score == TennisScore.Fourty && this.Score == TennisScore.Advantage) {
                Score = TennisScore.Game;
                return;
            }

            if (player.Score == TennisScore.Advantage && this.Score == TennisScore.Fourty) {
                Score = TennisScore.Fourty;
                player.Score = TennisScore.Fourty;
                return;
            }

            Score++;
        }
示例#2
0
 private string ScoreDisplay(TennisScore homeTennisScore, TennisScore awayTennisScore)
 {
     if (homeTennisScore == TennisScore.Forty &&
         awayTennisScore == TennisScore.Forty)
     {
         return($"Deuce");
     }
     else if (homeTennisScore < TennisScore.Forty &&
              awayTennisScore < TennisScore.Forty &&
              homeTennisScore == awayTennisScore)
     {
         return($"{awayTennisScore}_All");
     }
     else if (homeTennisScore >= TennisScore.Forty &&
              (homeTennisScore - awayTennisScore >= 2))
     {
         return($"Home_Win");
     }
     else if (awayTennisScore >= TennisScore.Forty &&
              (awayTennisScore - homeTennisScore >= 2))
     {
         return($"Away_Win");
     }
     else
     {
         return($"{homeTennisScore.ToString()}_{awayTennisScore.ToString()}");
     }
 }
示例#3
0
        public string GetCurrentScore(TennisPlayerType winnerPlayerType = TennisPlayerType.None)
        {
            TennisScore homeTennisScore = this.PlayerScore(this.HomePlayer, this.AwayPlayer.TennisCurrentScore, winnerPlayerType);
            TennisScore awayTennisScore = this.PlayerScore(this.AwayPlayer, this.HomePlayer.TennisCurrentScore, winnerPlayerType);

            return(this.ScoreDisplay(homeTennisScore, awayTennisScore));
        }
示例#4
0
 private void InitialPlayer(TennisScore homeCurrentScore, TennisScore awayTennisScore)
 {
     this.HomePlayer = new TennisPlayer()
     {
         TennisPlayerType   = TennisPlayerType.HomePlayer,
         TennisCurrentScore = homeCurrentScore
     };
     this.AwayPlayer = new TennisPlayer()
     {
         TennisPlayerType   = TennisPlayerType.AwayPlayer,
         TennisCurrentScore = awayTennisScore
     };
 }
示例#5
0
        private TennisScore PlayerScore(TennisPlayer tennisPlayer, TennisScore opponentScore, TennisPlayerType winnerPlayerType)
        {
            TennisScore playerCurrentScore = tennisPlayer.TennisCurrentScore;

            if (tennisPlayer.TennisPlayerType == winnerPlayerType)
            {
                if (tennisPlayer.TennisCurrentScore == TennisScore.Love)
                {
                    playerCurrentScore = TennisScore.Fiften;
                }
                else if (tennisPlayer.TennisCurrentScore == TennisScore.Fiften)
                {
                    playerCurrentScore = TennisScore.Thirty;
                }
                else if (tennisPlayer.TennisCurrentScore == TennisScore.Thirty)
                {
                    playerCurrentScore = TennisScore.Forty;
                }
                else if (tennisPlayer.TennisCurrentScore == TennisScore.Forty &&
                         opponentScore == TennisScore.Adv)
                {   //Adv_Adv ==> deuce
                    playerCurrentScore = TennisScore.Forty;
                }
                else if (tennisPlayer.TennisCurrentScore == TennisScore.Forty)
                {
                    playerCurrentScore = TennisScore.Adv;
                }
                else if (tennisPlayer.TennisCurrentScore == TennisScore.Adv)
                {
                    playerCurrentScore = TennisScore.Win;
                }
            }
            else
            {
                if (tennisPlayer.TennisCurrentScore == TennisScore.Adv &&
                    opponentScore == TennisScore.Forty)
                {   //Adv_Adv ==> deuce
                    playerCurrentScore = TennisScore.Forty;
                }
            }
            return(playerCurrentScore);
        }
示例#6
0
        public void ReturnCorrectScoreConversion(int score, TennisScore expectedConversion)
        {
            var sut = new TennisPlayer(score);

            Assert.AreEqual(expectedConversion, sut.GetScore());
        }