游戏class图

Game class diagram

我在为游戏制作 class 图时遇到问题。 游戏发生的世界可以用字段表示。每个 字段由坐标 x 和 y 标识。该领域可能很方便 是否建立定居点。如果场上有定居点,唯一 一。每个字段都作为位图链接到景观。在某些领域,有 可能是资源(例如煤炭、矿石)或其他非专有的人工制品。 每个玩家都是公国的统治者。可能属于许多人的公国 定居点。国籍和公民指定的公国 定居点卡车。定居者通过归属成为公国公民 到公国的定居点之一。但是,和解可以 生活在不同的国家,其国籍与 国籍。居住在以忠诚为特征的村庄中的个别民族 拥有村庄的公国。对定居者征收人头税, 每个星期都必须转移到公国。税收养活 公国的宝库。过高的税收会降低定居者的士气。 为对建筑物的维护具有重要意义而筹集的资金和 军队。 在村庄中,您可以放置​​不同类型的建筑物。其中一些可以 每个定居点(例如,沟渠)只建造一个副本,其他的则更大 数量(例如,植物毛皮商)。沉积物在建筑物中,部分 定居者必须作为特定小时数的建筑商工作,并且必须 为他们的建筑提供合适的产品和原材料。 ¬ 每天的沉淀物直径可能在其他职业(如 军械师,侦察兵)。定居者可以开展他们的工作,通常是 需要适当的建筑物(例如锻造厂、锯木厂)。大多数工人 提供人工制品——制造产品(例如,铁匠、农民)或 生产自然资源(例如,矿工、伐木工人)。的制造 某些工件可能需要产品。然后,post 名工人,他们由 必要的小时数将在生产中工作。神器, 这是定居者创造的,是一种产品。对于大多数 向后区域的产品是盔甲(例如,剑,锁子甲)和食物 (例如面包、肉)。不是产品的最重要的工件类型是 一种自然资源。为了能在神器中储存更多的颗粒, 你必须建一个仓库。

我什至没有询问所有任务 - 我知道它很大且花费时间。 我只是想听听一些建议,将什么作为抽象 class,将什么作为接口放在这里。 class 建楼应该有什么操作? 提前感谢您的任何想法,事件单句!

您实际上在分析模型方面有了一个很好的开端。分析模型应该代表域,在本例中是您的游戏世界。如果将名词转换为 classes 并将已有的动词转换为关联端属性,则分析模型的第一个版本将会失效。 (但是,确保 classes 是 单数 ,而不是复数。)进行这种转换的一种方法是在两个方向上制作一个自然语言句子的项目符号列表,如:

  • 游戏[一个或多个]字段代表
  • 字段代表[一个]游戏
  • 字段[一个]坐标
  • 标识
  • 坐标标识[一个]字段
  • 定居点包含在[零或一个]字段
  • 字段包含[零个或一个]结算
  • 。 . .

(我认为你现在讨论超级classes、抽象classes和接口可能还为时过早,因为你在这里问的是基础知识。请问另一个更具体的在您有更多经验后提问。)

然后您可以将 association-end-属性 名称转换为分词短语,以在您的目标 OO 语言中看起来更正常,同时仍保留语义。这些分词短语告诉代码的 reader 关联的目的,并消除两个 class 之间出于不同目的的多重关联的歧义。以下是我所说的分词短语(即用作形容词的动词短语)用作角色名称的一些示例:

  • |游戏| -representedGame-----representingField- |Field|
  • |字段| -identifiedField-----identifyingCoordinate- |坐标|
  • |结算| -containedSettlement----containingField- |Field|
  • 。 . .

此时,列出一个动词列表,代表您希望 classes 完成的事情。这些是你的操作。有时很明显哪个 class 应该负责一个操作;其他时候你必须拟人化。

现在,使用图形和 I/O 库为这些操作编写代码方法,您就有了一个游戏!

有关更多信息,我强烈建议您阅读 Leon Starr 的 How to Build Articulate UML Models article or H. S. Lahman's book, Model-Based Development: Applications