挑战OOAD:游戏中物品使用时候的不同功能,用OO的方式,该如何设计?

简介:
在RPG游戏中,人物携带物品在地图中走动,不同的物品具有不同的功能,如果就这么简单,那对物品的使用,就可以成为物品的一个方法,使用物品就调用这个方法好了。

    很要命,不同的人物使用同一件物品的时候,效果也不一样。

     这时候还要把这个方法放到物品对象中吗?

    也许还可以,OO分析会开始非人类的胡言乱语:如果在方法调用中,加上user参数,那么物品知道是谁在使用它,于是就可以根据使用者的不同来进行不同的处理了。

     卖锅的,物品居然活了,它成了一个精灵,知道谁在使用它。

    好吧,这样是可以了。但问题是,做为一件物品,它为了根据使用者的不同来进行不同的处理,那么它就得知道使用者的类型,耦合就产生了,即使你又抽象出某种公共的接口,耦合依然存在,但处理上会稍微舒服一些。

    有人试图改变这种耦合,把使用物品的方法加到了人物对象上,只不过是顾头不顾腚的做法,按下葫芦浮起瓢。这里的耦合不见了,会在另外一个地方冒出来,只不过,有经验的设计者会预先知道这一点并权衡不同方式的利弊,对于性质不同的系统,采用不同的处理方式。

    如果再加上一种,那就是场景,比如地上打和地下使用不一样,在庄稼地和宫殿里使用也不一样,那又该如何?

    请园子里面的大牛,告诉我这个问题该如何OOAD?



    本文转自深蓝医生博客园博客,原文链接:http://www.cnblogs.com/bluedoctor/archive/2011/06/01/2067177.html,如需转载请自行联系原作者



相关文章
|
1月前
|
安全
哈希竞猜游戏系统开发玩法详情/功能步骤/需求设计/流程方案/源码程序
Developing a hash guessing game system can provide a fun gaming experience. The following are possible gameplay and rules for your reference:
|
6月前
|
vr&ar 安全 AndFix
Metaforce佛萨奇系统开发案例详细丨方案逻辑丨项目程序丨规则玩法丨源码功能
Requirement analysis: Communicate fully with customers to understand their specific needs and expectations for the Metaforce Sasage system, including game types, features, art styles, etc
|
6月前
|
AndFix vr&ar 图形学
潮玩元宇宙/大逃杀游戏系统开发详细案例丨规则流程丨方案逻辑丨功能设计丨需求项目丨源码出售
The development of Chaoyu Metaverse Escape Game System refers to the creation and construction of a virtual reality game system to provide an immersive gaming experience, allowing players to participate in a virtual world for escape and combat.
|
7月前
|
安全 前端开发 关系型数据库
NFT卡牌游戏链游系统开发(方案逻辑)丨NFT卡牌游戏(链游)系统开发指南功能/规则需求/方案设计/项目逻辑/源码步骤
Blockchain Platform: Choose a blockchain platform that suits your needs, such as Ethereum, Coin Security Smart Chain, Poka, etc. These platforms provide scalable and secure infrastructure for creating and managing NFT cards.
|
8月前
|
前端开发 区块链
合成游戏看广告视频盒子系统开发方案逻辑/详细案例/功能设计/需求步骤/规则项目/源码说明
在Solidity中,与外部合约交互可以通过调用函数来完成。这些函数可以是在Solidity合约中定义的函数,也可以是在外部合约中定义的函数。调用外部合约函数需要知道合约的地址和函数的签名。
|
8月前
|
安全
NFT卡牌游戏链游系统开发(开发方案)/详情规则/成熟技术/设计界面/案例项目/源码程序
NFT (Non Homogeneous Token) card chain game refers to a game based on blockchain technology where NFT is used as the card in the game. NFT is a unique and non interchangeable digital asset that can represent various virtual cards, props, or characters in the game.
|
8月前
|
存储 算法 安全
哈希竞猜游戏系统开发(dapp链上游戏开发)/玩法规则/方案详细/策略说明/源码部署
哈希算法是一种将任意长度的数据转换成固定长度的数据的过程。该过程是不可逆的,这意味着很难从哈希值还原原始数据
|
9月前
|
存储 JSON 区块链
NFT游戏系统开发逻辑规则源码实例分析
NFT游戏系统开发逻辑规则源码实例分析
|
供应链 定位技术 UED
从用户问题出发,设计产品和服务| 学习笔记
快速学习从用户问题出发,设计产品和服务
137 0
从用户问题出发,设计产品和服务| 学习笔记