java - 比较球员的优势和劣势

标签 java

我正在开发一款游戏,该游戏将具有与口袋妖怪相同的系统,即每个玩家都有一个“类型”(火、水、草等)。当玩家战斗时,我需要确定将攻击乘以什么因素,以创造优势和劣势。到目前为止,我在每个“类型”类中使用一个开关,该开关将另一个“类型”类作为输入并返回乘法因子。只有这些“类型”类中的三个,我写了很多颂歌,我可以预见当我想添加更多时它会在未来失控。

所以我的问题是,如何实现 DRY 解决方案来确定每种类型的优势和劣势?我附上了一张宠物小 Sprite 类型表,作为我正在尝试做的事情的引用。 enter image description here

最佳答案

如何枚举类型,并构建一个看起来就像您发布的二维矩阵。每当您需要战斗的“因素”时,使用攻击者和防御者作为二维数组中的索引来查找因素。查找会很快,代码会非常干净。

示例用例如下所示:

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/

相关文章:

java - 未使用 docx4j 库在 docx 中创建表

java - 如何使用 Jersey (JAX-RS) 向 NTLM 身份验证服务器发出简单的 POST 请求

java - Eclipse、Maven 和 Spring Boot 实时加载

java - 阻止 ImageButton 创建新 Activity

Java TCP 客户端重复连接导致 EMFILE 错误

java - 在 Eclipse 中,如何使用 "Workspace..."语法指定文件(例如 ${workspace_loc :/myworkspace} ) (for a console log)?

java - ObjectOutputStream 导致内存泄漏,reset() 抛出错误

java - 如何返回httpResponse结果LIbGDX

Java Array Char 和 String 数组中的区别

java - 取消排序 Hashtable 中的排序对象