gpt4 book ai didi

c# - 设计库存类

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:06 26 4
gpt4 key购买 nike

我正在重写一个应用程序的基础架构,我遇到了一个有趣的情况。

我正在编写一个类 Bag:该类有一个属性 Items,它可以保存 Item 的集合:

Weapon : Item
Armor : Item
Ammunition : Item
Bag : Item (because a player may want to put a bag inside of another one)

到这里一切都很好,问题是...

在前端,虽然对相同的 ArmorWeapon 的副本使用不同的用户控件是可以的,但是对于 Ammunition(如箭头)或 Item(如面包)。

一个玩家可以有 50 个箭头,这些箭头都需要表示为一个用户控件(堆栈)。最简单的方法是将 Quantity 属性添加到 Item 类,并将其从 ArmorWeapon 中隐藏code> 和 Bag 类,但这似乎不对,不仅因为我必须对其他派生类隐藏它,而且最终,世界上的任何对象都可以存在数量不同,所以用这样的属性创建一个类似乎是不对的。

似乎正确的方法是为那些可以堆叠的项目收集 Item(类似于 Stack(Of Item)。所以,简而言之:我的 Bag 类不仅要能够容纳元素的集合,而且还要能够容纳元素的集合。

比如这是魔兽世界的截图:

如您所见,背包既可以容纳单个元素,也可以容纳成堆的元素。

我怎样才能以好的方式做到这一点?

最佳答案

我能想到几个解决方案

  1. 制定数量和最大数量 - 然后单数的项目的 MaxQuantity 为 1
  2. 制作一个 StackableItem 类,弹药等从中继承,然后您可以在其中包含一个数量,如果您愿意,它仍然允许您在不同的空间携带多个相同的项目。红色(臂章?)的屏幕截图中显示了一个示例

关于c# - 设计库存类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28209701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com