JN和Java在PlayN上的行为是不同的

pra*_*ths 2 javascript java playn

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

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

由于没有随机计算,如果输入相同,我希望输出也是一样的.

但是,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运行资源不足?

谢谢你的帮助.

sam*_*ert 5

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

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