2

当我构建 PlayN 项目并运行java版本时,它的行为与我运行HTML版本时不同。

基本上,我制作了一个棋盘游戏,它的 AI 使用了 Minimax 算法(搜索树和加权评估)的修改版本。

由于没有任何东西是随机计算的,并且如果输入相同,我希望输出也相同。

但是,java 和 javascript (HTML) 版本的 AI 对相同输入的行为不同。

Html/javascript版本的链接可以在这里找到:http: //mugle-app.appspot.com/+games/staff/fiar/

Java (JAR) 文件可以在以下位置找到: http ://ez-playn.googlecode.com/files/FiarJava.zip

它们都使用相同的代码,只是编译不同,但都使用提供的 Ant 脚本。树的深度是固定的,评估者的权重是固定的

我不明白为什么会有区别,因为除了搜索树之外的所有东西都可以工作......可能是因为评估很重并且javascript运行的资源不足?

谢谢你的帮助。

4

1 回答 1

5

看起来您正在迭代 HashMap 的内容。Board定义emptyCells哪个是 HashMap,然后GameSearch调用Board.getEmptyCellCollection(将 HashMap 的值作为集合返回),然后迭代它们。这些值没有可预测的顺序,在从 Java 到 JavaScript 的转换中,顺序几乎肯定会发生变化。

如果您需要以可预测的顺序迭代 HashMap 的内容,请使用 LinkedHashMap。

于 2011-11-23T17:43:41.183 回答