帮助实现生物和物品在计算机角色扮演游戏中的交互方式

mik*_*dev 13 c# class-design

我正在编写一个简单的角色扮演游戏(学习和娱乐),而我正试图想出一种让游戏对象互相交流的方法.我试图避免两件事.

  1. 创建一个巨大的游戏对象,可以做任何事情并做任何事情
  2. 复杂性 - 所以我远离基于组件的设计,就像你在这里看到的那样

因此,考虑到这些参数,我需要一个关于游戏对象相互执行操作的好方法的建议.

例如

  • 生物(角色,怪物,NPC)可以对生物或物品(武器,药水,陷阱,门)执行操作
  • 项目也可以对Creatures或Items执行操作.一个例子是当角色试图打开胸部时陷阱

我想出的是一种PerformAction可以将生物或物品作为参数的方法.像这样

PerformAction(Creature sourceC, Item sourceI, Creature targetC, Item targetI)
// this will usually end up with 2 null params since
// only 1 source and 1 target will be valid
Run Code Online (Sandbox Code Playgroud)

或者我应该这样做吗?

PerformAction(Object source, Object target)
// cast to correct types and continue
Run Code Online (Sandbox Code Playgroud)

或者是否有一种完全不同的方式我应该考虑这个?

Jon*_*Jon 3

这听起来像是多态性的一个例子。不要将 Item 或 Creature 作为参数,而是让它们都从 ActionTarget 或 ActionSource 派生(或实现)。让生物或物品的实现决定从那里走哪条路。

你很少想通过仅使用 Object. 即使有一点信息也比没有好。