python hangman tdd/mvc演示。

python_hangman的Python项目详细描述


Latest VersionDevelopment StatusBuild StatusCoverage StatusDocumentation Status

一个测试良好的,cli,python版本不可知,多平台hangman游戏。它是按照TDD工作流和MVC设计模式构建的。每个组件服务于一个明显不同的逻辑目的。Python Hangman是一个版本不可知,经毒理测试,travis支持的程序!记录并分发。

功能

Screenshot

兼容性

Supported Python versions
  • Python2.6
  • python 2.7版
  • Python3.3
  • Python3.4
  • Python3.5
  • 皮比

安装

在命令行中,通过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.modelhangman.viewhangman.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。

控制器稍后告诉视图要打印什么和收集什么数据。它使用这些信息更新游戏(模型)的状态并处理游戏事件。

调用图

Call Diagram

历史记录

下一版本

  • 随时待命

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条不稳定、无关紧要的行)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带EJB的java JPA:无持久性提供程序   检查数字最后一位的java If语句   java解除对象在字符串池中驻留时的字符串类型分配   java如何在Android中使用堆栈?   java删除字符串中数字之后的任何内容   JAVA 7中消除StringBuilder对象(在循环中运行)最后一个逗号的json方法?   字典将值放入Java*中的映射,而不更新现有值(如果存在)   Java中加法和乘法的基本词法分析器   ExoPlayer2中的java检查视频对象   java向HashMap添加对象   java如何配置JavaMelody以监视C3p0数据源中的Jdbc连接   java“Xlint:unchecked”在Intellij中配置后不工作   悬停时将java滑块元素移出   c如何在SWIG生成的Java绑定中转换为SWIGTYPE_p_void类型?   Ant的java代码未在Maven中运行   字典使用公共键创建两个映射值的映射java   java Tomcat 8元空间OutOfMemory问题