我正在制作一个多人文本游戏,游戏中的每个玩家都被分配了一个库存。物品栏是一个简单的线性链表,包含物品的 ID 和物品在游戏中的状态。例如,玩家 1 可能有一辆带有 50% 燃料的红色汽车,它会在列表中表示为 (5, 50),其中 5 是游戏中红色汽车的 ID,50 是该特定汽车的燃料量车。
但这意味着游戏中每个项目的信息都应该保存在某种数据结构中。
我想过使用类似的东西
enum itemtype {car, gun, bullet, etc};
struct itemlist {
itemtype type;
char* name;
int volume, weight;
} itemlist[];
红色汽车的所有信息(car, "Red car", 15m^3, 2000kg)
都将存储在 中itemlist[5]
,因为红色汽车的 ID 是 5。
但是这个游戏中有不同类型的物品,所以每个物品都有自己的属性。汽车会有(max_speed, acceleration)
,子弹也会有(mass, velocity, kinetic_energy)
。并且代码的某些部分需要访问这些特定属性才能在游戏中进行操作。
所以这意味着
- 从库存中获取 ID
- 检查数组以获取此类项目的特定属性
- 用检索到的属性做事
但我不知道该怎么做,因为有不同类别的项目,每个项目都有不同的特定属性。
将数组添加到结构不会有帮助,因为属性可以是任何东西,例如字符串或数字。添加嵌套结构可能很好,但可能会尝试使用某些东西,item[5].properties.max_speed
我不确定这是否安全,因为有人可能会尝试max_speed
从没有它的项目中获取该属性。
那么,为此类项目列表存储一般和特定属性的最佳方式是什么?