Beispiel #1
0
 public int[] GetScore()
 {
     if (IsSwitched())
     {
         return(downStreamFrame1.GetScore().AddIntArray(downStreamFrame2.GetScore()));
     }
     else
     {
         return(downStreamFrame1.GetScore());
     }
 }
 // This is the where all the logic for WinnerTakesPoint is
 public int[] GetScore()
 {
     int[] localScore = { 0, 0 };
     if (IsComplete())
     {
         int[] s = downStreamFrame.GetScore();
         if (s[0] > s[1])
         {
             localScore[0]++;
         }
         if (s[0] < s[1])
         {
             localScore[1]++;
         }
     }
     return(localScore);
 }
Beispiel #3
0
        public Tennis()
        {
            // This code is hand written from the diagram. Go change the diagram first where you can reason about the logic, then come here and make it match the diagram
            // Note following code uses the fluent pattern - every method returns the this reference of the object it is called on.
            match = new Frame("match")                                                         // (note the string is just used to identify instances during debugging, but also helps reading this code to know what they are for)
                    .setIsFrameCompleteLambda((matchNumber, nSets, score) => score.Max() == 3) // best of 5 sets is first to win 3 sets
                    .WireTo(new WinnerTakesPoint("winnerOfSet")
                            .WireTo(new Switch("switch")
                                    .setSwitchLambda((setNumber, nGames, score) => (setNumber < 4 && score[0] == 6 && score[1] == 6))
                                    .WireTo(new Frame("set")
                                            .setIsFrameCompleteLambda((setNumber, nGames, score) => score.Max() >= 6 && Math.Abs(score[0] - score[1]) >= 2)
                                            .WireTo(new WinnerTakesPoint("winnerOfGame")
                                                    .WireTo(new Frame("game")
                                                            .setIsFrameCompleteLambda((gameNumber, nBalls, score) => score.Max() >= 4 && Math.Abs(score[0] - score[1]) >= 2)
                                                            .WireTo(new SinglePlay("singlePlayGame"))
                                                            )
                                                    )
                                            )
                                    .WireTo(new WinnerTakesPoint("winnerOfTieBreak")
                                            .WireTo(new Frame("tiebreak")
                                                    .setIsFrameCompleteLambda((setNumber, nBalls, score) => score.Max() == 7)
                                                    .WireTo(new SinglePlay("singlePlayTiebreak"))
                                                    )
                                            )
                                    )
                            );



            consolerunner = new ConsoleGameRunner("Enter winner 0 or 1", (winner, scorer) => scorer.Ball(winner, 1))
                            .WireTo(match)
                            .WireTo(new Scorecard(
                                        "--------------------------------------------\n" +
                                        "| M0  |S00|S10|S20|S30|S40|S50|S60|  G0--- |\n" +
                                        "| M1  |S01|S11|S21|S31|S41|S51|S61|  G1--- |\n" +
                                        "--------------------------------------------\n")
                                    .WireTo(new ScoreBinding <int[]>("M", () => match.GetScore()))
                                    .WireTo(new ScoreBinding <List <int[]> >("S", () => GetSetScores(match)))
                                    .WireTo(new ScoreBinding <string[]>("G", () => GetLastGameScore(match)))
                                    );
        }
        public void TestGetScore()
        {
            this.frame.setIsFrameCompleteLambda((frameNumber, nPlays, score) => nPlays == 3);
            IConsistsOf frame = this.frame;

            Assert.AreEqual(0, frame.GetScore()[0]);
            frame.Ball(0, 3);
            Assert.AreEqual(3, frame.GetScore()[0]);
            Assert.AreEqual(0, frame.GetScore()[1]);
            frame.Ball(0, 2);
            Assert.AreEqual(5, frame.GetScore()[0]);
            frame.Ball(1, 6);
            Assert.AreEqual(6, frame.GetScore()[1]);
            frame.Ball(1, 6);
            Assert.AreEqual(6, frame.GetScore()[1]);
        }
Beispiel #5
0
        // This method is provided by an extension method in the project 'Wiring'.
        // The extension method uses reflection to do the same thing as what you see here
        // The method returns the object it is called on to support fluent coding style

        /*
         *      public Bonuses WireTo(IConsistsOf c)
         *      {
         *          downStreamFrame = c;
         *          return this;
         *      }
         */



        private bool IsBonusScoringComplete()
        {
            return(IsComplete() && (lambdaFunction == null || lambdaFunction(GetnPlays() + bonusBalls, downStreamFrame.GetScore()[0])));
        }
Beispiel #6
0
 int ITestBowling.GetTotalScore()
 {
     return(scorerEngine.GetScore()[0]);
 }
Beispiel #7
0
 int[] ITestTennis.GetMatchScore()
 {
     return(match.GetScore());
 }
Beispiel #8
0
 private bool IsSwitched()
 {
     return(isLambdaComplete != null && isLambdaComplete(frameNumber, downStreamFrame1.GetnPlays(), downStreamFrame1.GetScore()));
 }