python hangman tdd/mvc演示。
python_hangman的Python项目详细描述
一个测试良好的,cli,python版本不可知,多平台hangman游戏。它是按照TDD工作流和MVC设计模式构建的。每个组件服务于一个明显不同的逻辑目的。Python Hangman是一个版本不可知,经毒理测试,travis支持的程序!记录并分发。
功能
- 刽子手!
- 文档:https://python_hangman.readthedocs.org
- 开源:https://github.com/bionikspoon/python_hangman
- 惯用代码。
- 经过彻底测试,覆盖率非常高。
- python版本不可知论。
- 演示web开发范围之外的mvc设计。
- 麻省理工学院许可证
安装
在命令行中,通过easy_install或pip
$ mkvirtualenv hangman # optional for venv users
$ pip install python_hangman
$ hangman
卸载
$ pip uninstall python_hangman
目标
2.0.0
mvc模式。目标是显式地演示web开发范围之外的mvc模式。
惯用代码。在这次彻底检查中,重点是惯用代码。代码应该以你祖母能读懂的清晰程度来描述它自己的意图。
1.0.0
学习!这是一个测试驱动开发(tdd)练习。
另外,探索:
- 毒性,测试自动化
- 特拉维斯ci
- python版本不可知编程
- 设置工具
- 在PIP上发布
- 通过工作服覆盖
- 使用Sphinx和ReadtheDocs的文档
- Cookicutter开发
设计
这个游戏大致遵循model view controller(mvc)模式。在最近的更新中,这些角色被显式命名为:hangman.model,hangman.view,hangman.controller。
传统上在mvc中,controller是焦点。它告诉view从用户那里收集什么信息以及显示什么。它使用这些信息来与model通信(稍后还有数据持久性),并确定下一步。这个Hangman MVC遵循这些原则
型号
这个模型非常简单,就是hangman游戏实例–hangman.model.Hangman。这是一门课。每个类都应该有“state”,并且该类的方法应该管理该状态。在这种情况下,“状态”是当前的“游戏状态”。公共api用于管理该状态。
整个游戏逻辑包含在hangman.model.Hangman中。从技术上讲,您可以在python控制台中通过实例化类、使用方法hangman.model.Hangman.guess提交猜测并打印游戏状态来玩游戏。
例如:
>>>fromhangman.modelimportHangman>>>game=Hangman(answer='hangman')>>>game.guess('a')hangman(status='_A___A_',misses=[],remaining_turns=10)>>>game.guess('n').guess('z').guess('e')hangman(status='_AN__AN',misses=['E','Z'],remaining_turns=8)>>>game.status'_AN__AN'>>>game.misses['E','Z']>>>game.remaining_turns8
视图
hangman.view是表示表示表示层的无状态函数的集合。当被调用时,这些函数处理将艺术打印到控制台,并从用户那里收集输入。
控制器
在这个程序中,controller实际上是“游戏循环”–hangman.controller.game_loop。我仍然认为它是一个controller,因为它扮演的角色是从视图与模型持久层通信I/O。
控制器稍后告诉视图要打印什么和收集什么数据。它使用这些信息更新游戏(模型)的状态并处理游戏事件。
调用图
历史记录
下一版本
- 随时待命
2.2.0(2015-18-05)
- 修正了游戏循环的最大递归问题。
- 更新的需求回忆。
- 删除免费文档-少即是多。
- 2.2.2修复破损覆盖报告。
- 2.2.3修复损坏的车轮
2.1.0(2015-18-05)
- 更新文档,以更合理的方式进行划分和自动化。
- 将github repo重命名为镜像pypi名称。
- 2.1.1修复pypi的第一次渲染
2.0.0(2015-12-05)
- 建立变更日志。
- 大规模重构,显式mvc结构。
- 代码更加习惯!
- 创建了一个FlashMessage实用程序。
- 为了支持无状态函数,删除了实现不好的类。
- 添加、删除对py35、py32的支持。
- 100%代码覆盖率。(忽略2条不稳定、无关紧要的行)