【问题标题】:Game class diagram游戏类图
【发布时间】:2015-06-10 06:43:54
【问题描述】:

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

我什至没有询问所有任务 - 我知道它很大而且很耗时。 我只是想听听一些建议,把什么作为抽象类,把什么作为接口。什么类应该有操作来建造建筑物? 提前感谢您的任何想法,事件单句!

【问题讨论】:

  • 请接受以下答案。您不会在此处获得您的域的模型。你的问题(从我的观点来看)太宽泛了。

标签: class uml diagram


【解决方案1】:

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

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

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

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

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

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

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

如需更多信息,我强烈建议您阅读 Leon Starr 的 How to Build Articulate UML Models 文章或 H. S. Lahman 的书 Model-Based Development: Applications

【讨论】:

  • 感谢您提供有用的观点 - 将类和操作识别为名词和动词!我有一个关于关系类型的问题。我不明白联想和组合之间的区别。我的意思是,它们都被实现为包含在类中的属性。我应该在哪里确定组成或聚合? Field 和 Settlement 的关系例如是一个聚合?
  • 聚合和组合并不是特别有用。如果您坚持,请仅使用组合,其中组合对象与组合对象一起死亡。
  • 所以你认为我这里应该主要使用关联和依赖?
  • 感谢您的所有帮助。接受。
猜你喜欢
  • 2022-08-23
  • 1970-01-01
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多