4

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

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

然而,我不知道该放在哪里,那就是与每个游戏相关的“规则”。本质上,对于放入第一个应用程序的每个游戏,都有一组先决条件、限制和其他特定于该游戏的业务逻辑。(还有结构相似的逻辑,所有游戏都通用。)逻辑将用 Python 编码,而不是用户输入。

该逻辑用于验证特定角色的过程,但与特定游戏相关联,需要动态交换。它是一个单独的应用程序,还是应该与角色管理器的表单相关联的验证?或者两者都可以?

这是我从头开始构建的第一个 Django 应用程序(而不是咀嚼别人的代码),而且我是 Python 哲学的新手,所以我全神贯注。

提前致谢。

4

2 回答 2

1

与每个游戏相关的“规则”。

对于放入第一个应用程序的每个游戏,都有一组先决条件、限制和其他特定于该游戏的业务逻辑。

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

还有结构相似的逻辑,所有游戏都通用。

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

该逻辑用于验证特定角色的过程,但与特定游戏相关联。

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

是否应该与角色管理器的表单相关联的验证?

角色表格可以具有取决于游戏的数据清理规则。

于 2010-08-17T17:00:03.533 回答
1

我会在应用程序中使用游戏逻辑创建名为 rules 的子目录,并在那里创建以每个游戏命名的模块,您希望为它们服务。然后为这些模块创建一个通用接口,您的游戏将使用该接口并按名称导入适当的规则模块(如果您的游戏称为 adom,则只需__import__('rules.adom')在主游戏引擎中调用游戏特定方法。

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

于 2010-08-17T16:27:36.113 回答