【问题标题】:Inventory System Class Layout库存系统类布局
【发布时间】:2012-03-28 17:16:07
【问题描述】:

我正在为我的游戏制作一个库存系统。我不太确定类的结构应该如何,我已经有一个武器、物品和块类。武器在玩家身上,物品可以放在方块上,方块可以放在瓷砖网格上。我有一个名为 tile 的类来处理在网格上的放置。但我想知道我应该如何创建一个类来将每个“事物”放在一起(“事物”存在、武器、方块和物品)。

如果我不清楚或者您需要更多信息,请发表评论。

【问题讨论】:

  • 请不要在标题前加上“C# -”之类的前缀。这就是标签的用途。
  • 为什么每个东西都需要放在一起?看来您已经建立了关系。玩家有武器。瓷砖包含包含项目的块。
  • 它们有什么共同的功能?有什么东西需要有一个可以是这些东西中的任何一个的项目吗?如果是这样,它需要做什么?我的猜测是您想要一个定义这些“事物”之间所有常见行为的接口。如果没有,则不需要接口。
  • pastebin.com/KxirPZR4 这就是我所拥有的,我可以使用 tiles[x,y] = new Tile("Blah.Arguments here....") 分配瓷砖,但我希望能够建立一个库存系统,我有什么方块,武器,物品。我知道这可能很简单,但由于某种原因,我很难做/解释它

标签: c# oop class xna


【解决方案1】:

你有一个很好的开始想法,但要跳出框框思考 - 如果你有一个典型的库存,那么你就有了

播放器
+ 库存
+ [] 项目
+ [] 武器

如果您计划实施基于插槽的库存,那么您有很多可能性来实现项目绑定,例如

1) 物品放置在库存中的插槽中
2) 物品放置在物品栏中的物品栏中
3) 物品放在 Inventory in Inventory 中(例如,一个箱子或其他东西)

所以尝试考虑一个更灵活的概念 - 您可以通过创建一些能够容纳其他东西的接口或提供程序类来做到这一点。一种方法可能是

玩家获得了物品栏 Inventory 实现 IInventory Item 实现 IInventory(如果它是 Chest 或其他)

如果你想实现我们从魔兽世界知道的这样一个网格,那么你也可以编写能够对项目进行排序和排序的类......

Inventory 实现 IOrderedInventory

你的 Grid 提供了一个 IInventoryAdapter

通过以这些方式处理您的操作和类,您可以确定互连工作正常。

我希望我能给你一些想法。

您好,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 2019-10-21
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    相关资源
    最近更新 更多