我最近开始研究我的学校项目,该项目是用 Java 与计算机玩家编写中国象棋游戏,我想用位板表示棋盘,但是由于棋盘是 9x10,bigint 或 double 不足以表示它。我虽然关于使用 java.math 中的 BigInteger 类,但是我担心它效率不高,因此在为计算机播放器编写代码时会遇到问题....有谁知道 BigInteger 类的效率如何? 在尝试计算最佳计算机动作时,我会遇到问题吗?谢谢。
问问题
45 次
1 回答
1
Java SEBitSet
或BigInteger
类都可以用来表示位板。而且我注意到标准 Java SE 实现1有替代方案。
但真正的问题是您是否可以提出比那些通用数据结构更有效的位板抽象的替代实现。
例如,如果您的位板需要 80 位,那么您可以将其表示为long
长度为 2 的int
数组或长度为 3 的数组。这应该至少与BitSet
or中的更好的一样快BigInteger
,因为这些 Java SEclass 都使用整数数组在引擎盖下。
1 - 建议谷歌搜索...
我的建议:选择最容易使用的表示。让你的游戏实现中有趣的部分首先工作。然后测试它,看看它有多快。如果速度不够快......花一些精力来分析和优化它;例如,通过调整位板实现。不要过早优化。
于 2021-11-27T14:00:27.400 回答