如何最佳组织 Django 系统中的规则组件?

2024-04-25 02:11:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Django设计(并最终编写)一个由两个主要组件组成的系统:

  1. 游戏经理:这基本上是一个数据输入部分。受信任的(非公开的)用户将输入游戏系统的信息,例如玩家可能拥有的选项。它的接口仅仅是Django管理控制台,除了保存信息外,它不“做”任何事情。在
  2. 角色管理器:这是上述数据的使用者。公共用户将在上面定义的角色扮演系统中创建角色,从这些可信用户输入的选项中提取。从Django的角度来看,这是一个独立的应用程序。在

但是,我不确定每一个规则都和一个规则相关联。本质上,对于第一个应用程序中的每个游戏,都有一组特定于该游戏的先决条件、限制和其他业务逻辑。(也有类似的结构化逻辑,这将是所有游戏都通用的)逻辑将用Python编码,而不是用户输入的。

这种逻辑是在验证一个特定角色的过程中使用的,但它与特定游戏相关联,需要动态交换。它是一个单独的应用程序,还是应该将验证绑定到角色管理器的表单上?或者两者兼而有之吗?

这是我从零开始构建的第一个Django应用程序(而不是咀嚼别人的代码),而且我对Python的引导理念还很陌生,所以我一直在关注这个问题。

提前谢谢。


Tags: 数据django用户信息应用程序游戏角色管理器
2条回答

我会用游戏逻辑在应用程序中创建名为rules的子目录,然后在每个游戏之后创建模块,你会喜欢的。然后为这些模块创建一个通用接口,供游戏使用,并按名称导入适当的规则模块(如果您的游戏名为adom,则只需在主游戏引擎中__import__('rules.adom'))并调用游戏特定的方法。

如果你的游戏没有创建自己的模型和视图,那么似乎没有理由为每个游戏创建特定的应用程序。这是一个微妙的问题,因为使用的代码是基于数据库中存储的数据。你没有想过在数据库中存储额外的游戏脚本,然后exec它们吗?这似乎更自然:一个游戏是一组与该游戏相关联的数据和附加脚本。

the "rules" that are associated with each game.

for each game put into the first app, there are a sets of prerequisites, limitations, and other business logic specific to that game.

那是游戏应用程序的一部分。

There's also similarly-structured logic that will be common to all games.

那是游戏应用程序的一部分。

That logic is used in the process of validating a particular character, but is associated with a particular game.

正确。那是游戏应用程序的一部分。角色与一个或多个游戏相关联。

should it be validation tied to the forms of the Character Manager?

一个可以根据游戏规则来清理角色的数据。

相关问题 更多 >