private Punt BepaalVolgendePunt(Punt vorigePunt, SpelerScore scoreVanAndereSpeler)
        {
            if (vorigePunt.IsGelijkAan(new StartPunt()))
            {
                return new EerstePunt();
            }

            if (vorigePunt.IsGelijkAan(new EerstePunt()))
            {
                return new TweedePunt();
            }

            if (vorigePunt.IsGelijkAan(new TweedePunt()))
            {
                return new DerdePunt();
            }

            if (vorigePunt.IsGelijkAan(new DerdePunt()))
            {
                return BepaalVolgendePuntBijDerdePunt(scoreVanAndereSpeler);
            }

            if (HeeftAdvantage())
            {
                _totaleGameScore.Verhoog();
                scoreVanAndereSpeler.ResetHuidigeGameScore();
                return new StartPunt();
            }

            throw new InvalidOperationException();
        }
 public void VoegPuntToe(SpelerScore scoreVanAndereSpeler)
 {
     _huidigeGameScore = BepaalVolgendePunt(_huidigeGameScore, scoreVanAndereSpeler);
 }
 private void ZetDeuce()
 {
     _huidigeGameScore = new DerdePunt();
 }
 public bool ScoreIsGelijkAan(Punt punt)
 {
     return _huidigeGameScore.IsGelijkAan(punt);
 }
 private void ResetHuidigeGameScore()
 {
     _huidigeGameScore = new StartPunt();
 }