程序生成内容的神奇蓝图。

python-blueprint的Python项目详细描述


===
蓝图
==




程序生成内容的神奇蓝图。基于肖恩·霍华德的一系列文章。`此处概述`.

…_系列文章:http://www.squidi.net/mapmaker/index.php
…_这里的概述:http://www.squidi.net/mamamamamamamamamamamamamamamamamamamamamamamamamamersinings/m100402.php

-`介绍``介绍``字段和生成器``字段和生成器``字段和生成器` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `===


蓝图是数据对象。基本思想是用定义其值的一般参数(例如0到
10之间的整数)的字段编写
子类。当您实例化一个蓝图时,您将得到一个"掌握"蓝图
,其中每个字段都有定义良好的值。掌握的蓝图可以定义特殊的"generator"实例方法,这些方法从master构建最终的对象。**(是的,我可能不知道我在说什么。)


大多数大型活动部件都有文档,通常在文档字符串中有
示例。blueprint最好在
命令行中使用,以测试工作原理。对于不耐烦的人,一个
例子:


import blueprint




class item(blueprint.blueprint):
value=1
tags='foo bar'

abstract=true



class weapon(item):
name='some weapon'
tags='危险装备'
伤害=blueprint.randomint(1,5)


class meta:
abstract=true



class矛(武器):
tags='原始刺穿'
name='磨损的矛'
damage=blueprint.randomint(10,15)
value=blueprint.randomint(4,6)



class pointedstick(weapon):
标记="原始穿孔"
名称="尖头棍子"
伤害=6
值=2



class club(武器):
标记="原始粉碎"
名称="大棍子"
伤害=蓝图。随机点(10,15)
值=2



class actor(blueprint.blueprint):
标记=活动的



类穴居人(演员):
名称='穴居人'
武器=蓝图。镐(
棍棒、矛、尖棍



然后:

>;演员=穴居人()
>;演员
<;穴居人:
名称--'穴居人'
武器--<;矛:
伤害--5
名称--"矛"
值--6
生成的数据。蓝图是数据对象。默认情况下,Blueprint
的每个成员都被视为一个字段,无论是静态的还是动态的。静态字段是
简单的数据属性。动态字段是可调用的对象,它接受
一个位置参数,即调用它们的蓝图。

动态字段使蓝图非常有用。提供了几个基本字段
让您入门,蓝图本身也可以用作
字段。字段设计为可嵌套。它们也可以相互依赖——使用"blueprint.dependents"decorator声明这些依赖关系。

这些被称为"属"tors"
(squidi术语中的"承包商"),因为它们用于生成最终实体,无论是"dict"还是wad
文件。


======
======


e)。Blueprint的直接后代有自己的标记
repository(``blueprint.taggables.tagrepository``),它的所有
子类都将共享该标记。因此,在上面的示例中,您可以查询
``weapon.tag悻repo.query(with悻tags=('spirating')```和接收
``set([spear,pointedstick])````.

蓝图也会根据它们的类名自动标记(以及
它们的祖先超类名!),用驼色大写字母分隔。因此,"穴居人"将自动获取标记"set(['cave','man',
'actor'])`.


这使得以下操作成为可能:


猛犸象猎手类(穴居人):
wear=blueprint.pickfrom(
blueprint.withtags('pointed wear')



====
mods
===


有时,您需要动态修改蓝图。为此,
创建"mod"的子类。mod只是一个特殊的蓝图::

ub)
>;>>club.name
"大毁灭俱乐部"


mods总是生成掌握的蓝图。




==
=
工厂
=


工厂把所有的零件放在一起——它们相当于一个蓝图。假设你想要一个物品掉落,它可以从一些常见的武器蓝图中进行选择,并添加一些魔法模组使其更酷。这是我们的第二个模型:

class magicalitemprefix(blueprint.mod):
prefix=blueprint.pickone(
‘gnarled’,
‘internected’,
‘magnific’,

name=blueprint.depends_on(
blueprint.formattemplate('{parent.prefix}{meta.source.name}')




现在,这里是我们的魔法物品工厂:


class magical item factory(blueprint.factory):
product=blueprint.pickfrom(
blueprint.withtags('wear')
mods=[magicalitemprefix,ofdoom]


现在,当我们呼叫工厂时,我们会得到一个具有魔法属性的随机武器:

>;>weave=magicalitemfactory()
>;>weave.name
"磨损的毁灭之矛"

TOdo
====

-更好的文档。:\)
-支持"blueprint.field"上的所有运算符`


======
======



>如果遇到问题或发现错误,请在github上的"tracker"
<;https://github.com/eykd/blueprint/issues>;` ` `.

在github上完成边缘开发工作。"开发"分支。`` master``*应该始终是稳定的。

测试是使用"behave"bdd框架编写的,可以在``features/``文件夹中找到
。要运行测试套件,请从项目根目录调用``behave`
。_行为:http://packages.python.org/behave/



====
development
===
==



在"on github"上派生存储库,然后提交一个请求。如果你不确定自己在做什么,请遵循这些指导原则。_在github上:http://github.com/eykd/blueprint/
。_这些指导原则:https://gun.io/blog/how to github fork branch and pull request/

y模块py

…_ PEP8:http://www.python.org/dev/peps/pep-0008/
。_ PEP8:http://pypi.pypi.org/pypi/pepep8/




======
====
====
=


>
-**0.6.1**:0.6.1**:0.6.1**:0.6**:0.6**:0.6**:0.6**:0.6**:0.6**:0.6**:0.3兼容测试版python 3兼容性,错误修复:

-**feature:*实验版python3兼容性,这要感谢《0.9 `.




>
->>*FI公司修正了骰子编译中的错误。

-**0.5**:一些新功能、一些接口和许多错误修正:

-**feature:**添加了充当字段的属性描述符。可能没有实际用处。

-**功能:*骰子滚动现在返回一个结果列表,在执行整数或浮点运算时,该列表会自动求和。在骰子表达式中不再需要强制
``sum()`。

-**主要错误修复:**修复了骰子字段未使用
正确随机对象且结果不确定的错误。

-**错误修复/接口更改:**改进(尽管还不完善)
字段解析机制。依赖于其他延迟字段的字段现在有了解决问题的机会。

-**错误修复/接口更改:**DiceTable不再接受`-`或
任意数的`.`或`:`作为范围分隔符。只有`…`或
`:`立即工作。

-**接口更改:**运算符现在是自己的字段,
具有所有生成的权限和特权。

-**0.4**:在``blueprint.dice.roll``和相应的``dice``和``dicetable`字段中添加一个骰子滚动。blueprint
子类现在通过
元类有了更好的"repr"。**元类rock.*

修改了场分辨率的行为。所有字段现在都使用
``fields.resolve``来一致地处理嵌套的可调用项。

-**0.3.4**:学习了如何读取。更正了
简介副本中肖恩·霍华德的名字。一小时内三次微释放!

-**0.3.3**:学习如何使用distutils。:p(修复了``setup([packages=[…]]```)中的unicode字符串

-**0.3.2**:将许可文件添加到源发行版,因此pip
不会失败。

-**0.3.1**:彻底改进的docstrings,并提供了相关的
示例。添加了变更日志!

-**0.3**:增加工厂。修正错误。

-**0.2**:添加了mods。错误修复。

-**0.1**:初始版本。



…_ 0ion9:https://github.com/0ion9

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

推荐PyPI第三方库


热门话题
java实现双锁并发队列   java如何更改SpringWS 2.4.4版或更高版本中maxOccurs的默认限制?   java Selenium RC如何处理动态行?   java何时引入Javac StringBuilder/StringBuffer优化?   java mediaplayer在R.raw Android上失败   java JPA2:不区分大小写,就像在任何地方匹配一样   如何从JDK15中提取java预览类文件?   java与mySQL删除查询不一致   从Shutdownow()返回的java列表<Runnable>无法转换为提交的Runnable   java如何从回调接口获取对象值?   java如何获得视图的高度,在xml中可见性和高度定义为wrap_内容?   postgresql Mybatis在启动时遇到“由以下原因引起:java.net.UnknownHostException:localhost”,为什么?   带有实例调用的方法调用的java intellij格式化程序换行   由于特定的第三方库,java Proguard产生运行时错误   动画JAVA JPanel同时滑出和滑入