上一篇我剩下的To-Do-List:
猜测数字
输入验证
生成答案
输入次数
输出猜测结果
今天争取全部搞定。
现在我们Guesser、生成答案、输入验证都有了。把它们组装成一起摇身一变成一个Game!
用一个类把这些职责单一的小模块组合起来。我暂且称它为GameManager.
分析剩下的需求。(1)输入6次GameOver.(2)输入合法数字返回猜测结果。(3)游戏结束提示重新开始游戏。(4)中途输入exit 退出游戏。(5)输入正确答案,GameOver。
先把之前写的Guesser提出一个接口。
public interface IGuesser { string AnswerNumber { get; } string Guess(string inputNumber); } |
public class Guesser :IGuesser { public string AnswerNumber { get; private set; } public Guesser(IAnswerGenerator generator) { AnswerNumber = generator.Generate(); } public string Guess(string inputNumber) { ... } } |
Test First.
新建GameManagerTest
[TestClass] public class GameManagerTest { [TestMethod] public void should_return_game_over_when_input_times_is_six_and_result_is_wrong() { IGuesser guess = new Guesser(new AnswerGeneratorForTest()); var game = new GameManager(guess); var input = "1368"; var maxtimes = 6; var actual = false; for (var time = 0; time < maxtimes; time++) { game.Guess(input); } actual = game.IsGameOver; Assert.AreEqual(true, actual); } } |