- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一款游戏,该游戏将具有与口袋妖怪相同的系统,即每个玩家都有一个“类型”(火、水、草等)。当玩家战斗时,我需要确定将攻击乘以什么因素,以创造优势和劣势。到目前为止,我在每个“类型”类中使用一个开关,该开关将另一个“类型”类作为输入并返回乘法因子。只有这些“类型”类中的三个,我写了很多颂歌,我可以预见当我想添加更多时它会在未来失控。
所以我的问题是,如何实现 DRY 解决方案来确定每种类型的优势和劣势?我附上了一张宠物小 Sprite 类型表,作为我正在尝试做的事情的引用。
最佳答案
如何枚举类型,并构建一个看起来就像您发布的二维矩阵。每当您需要战斗的“因素”时,使用攻击者和防御者作为二维数组中的索引来查找因素。查找会很快,代码会非常干净。
示例用例如下所示:
factor = factorTable[FIRE][WATER]; // would set factor to 0.5
factor = factorTable[WATER][FIRE]; // would set factor to 2.0
正如 Noctua 所建议的,将实际数据放在配置文件中可能是个好主意。这样您就可以轻松更改它而无需重新编译。如果选择该选项,则需要某种解析函数来在程序开头创建矩阵。
下一步要采取的更好的步骤是将表行为和类型表示封装在类中。底层实现可能仍然相同(或更改,这就是重点),但您不会直接公开表或枚举。
factor = StrengthFactors(Player1.Type(), Player2.Type()); // or similar
关于java - 比较球员的优势和劣势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16791081/
我喜欢 MVP 概念,它对我组织代码有很大帮助,但每次我需要从外部应用程序、对话框或请求权限获取结果时,我都会遇到同样的问题问题 - 架构的哪个组件应该关心这个? 例如,我们需要实现以下行为: 点击按
我正在尝试使用 MVP 模式重构我的应用程序,并且希望将来用 View 替换 fragment 。 当 Activity 配置发生变化时,如何存储演示者的缓存数据?我不想使用 SQLite、共享首选项
这个问题更倾向于范式。为什么我们不在 MVP 环境中使用事件总线而不是监听器?通常,“P”部分具有 View 和模型引用的依赖注入(inject)。当然,这有一个优势,即通过 Presenter 显示
在我的基于 MVP 模式(被动 View )的应用程序 (.NET) 中,我将消息框分离到 View 中,这样当我测试我的演示者和模型时,我的测试代码不会受到需要向用户展示一些信息的影响信息。但是当需
我是一名优秀的程序员,十分优秀!